我用 Claude Code 做日常运维有半年了,从最初的"AI 写脚本"到现在的"Agent 半自动跑操作",踩了不少坑。

心得 1:永远先 read 再 write

Claude Code 默认会 Read 文件然后 Edit。但如果你跳过这步直接让它写,它会编造内容。

✅ 好:"看看 /etc/nginx/nginx.conf,把 worker_processes 改成 8"
❌ 差:"把 nginx worker_processes 改成 8"(没 read,可能改错地方)

心得 2:用 sandbox 限制 Bash 权限

settings.json 里配命令白名单:

{
  "permissions": {
    "allow": [
      "Bash(kubectl get *)",
      "Bash(kubectl describe *)",
      "Bash(kubectl logs *)",
      "Bash(ceph status)",
      "Bash(ceph osd *)"
    ],
    "ask": [
      "Bash(kubectl apply *)",
      "Bash(kubectl delete *)"
    ],
    "deny": [
      "Bash(rm -rf /*)",
      "Bash(* | sudo *)"
    ]
  }
}

allow 自动通过,ask 弹窗确认,deny 直接拒绝。运维任务大量是 read-only,配好白名单后 Agent 跑得飞快。

心得 3:把 SOP 写成 Skill

每个团队都有一堆 SOP:发布流程、回滚流程、扩容流程……手动告诉 Agent 太累。写成 Skill:

~/.claude/skills/k8s-deploy/SKILL.md
---
name: k8s-deploy
description: K8s 应用发布 SOP,包括灰度、监控、回滚
---

## 发布前
1. 检查 PR 是否合并到 main
2. 看 CI 是否通过
3. 确认值班人在线

## 发布
1. 改 values.yaml 里的 image tag
2. helm diff 确认变更
3. helm upgrade --set replicas=1 先灰度
4. 观察 5 分钟
5. 灰度 OK 全量

## 回滚
helm rollback <release> <revision>

之后说"发布 user-api 到 prod",Agent 自动按 SOP 走。

心得 4:长任务一定分步确认

我让 Agent 一次"清理 30 个 namespace 的过期资源",它真的删了……结果删多了。

改进:

"清理 30 个 ns 的过期资源。先列出每个 ns 要删什么,等我确认 OK 再删。"

Agent 会先 dry-run,把删除清单给你看,确认后再执行。

心得 5:跨机器操作用 SSH

Claude Code 默认只能操作本地。跨机器需要 SSH(最好 key 登录):

# 让 Agent 执行远程命令
ssh prod-node1 'docker ps'

# 复杂任务用 heredoc
ssh prod-node1 'bash -s' <<'EOF'
set -e
systemctl status nginx
nginx -t
systemctl reload nginx
EOF

心得 6:日志收集让 Agent 总结

排障最累的是翻日志。让 Agent 来:

"过去 24 小时 nginx access log 里 5xx 的请求,按 URL 分组统计 top 10"

Agent 自己组装 grep+awk 命令,几秒出结果。

心得 7:用 Plan 模式做大改动

任何超过 5 步的任务,先让 Agent 输出 plan:

"我要把整个集群从 1.27 升到 1.30。先给我升级 plan,不要执行。"

Agent 输出详细步骤后,你审核完再让它执行。

反面教训

让 Agent 直接改生产配置不留 git 痕迹:所有 IaC 改动走 PR
让 Agent 决定容量规划:它会给"经验值",不是基于你环境的真实数据
让 Agent 写 incident report:可以辅助,但不能代写——细节会被编造

最大的体会

Agent 适合做"重复、低风险、有明确成功标准"的事。决策和判断还得靠人。

教训:把 Agent 当成"超快的初级运维",给清晰的任务+边界,验证它的产出。

标签: none

添加新评论