扩展课 E3

让 AI 帮你运维服务器

扩展课。服务器出了问题,不知道该敲什么命令?让你电脑上的 Codex 通过 SSH 去查。Key 不用放到服务器上,每一条远程命令都要经过你批准。

本课目标

  • 建一个运维专用文件夹,用 AGENTS.md 写好规矩。
  • 让 Codex 通过 SSH 检查服务器、分析日志。
  • 知道哪些审批绝不能“一劳永逸”。

先懂概念:AI 在你电脑上,手伸到服务器

也可以把 Codex 装到服务器上,但那样要把 Key 放到服务器上,AI 在服务器上的每个动作也更难把关。这里用更稳妥的做法:

你 ──▶ 本地 Codex ──ssh ai-server "命令"──▶ 服务器
                 ◀──────── 命令输出 ─────────

Codex 默认的沙箱不允许联网,所以它每次想运行 ssh 都会停下来请你审批。这正好:每一条在服务器上执行的命令,你都会先看到。

跟着做

1. 建运维文件夹和规矩

mkdir ~/ai-course/ops
cd ~/ai-course/ops
git init
codex
请在当前文件夹创建 AGENTS.md,写入以下规则:
- 你是我的服务器运维助手,始终用中文回答。
- 服务器的 SSH 别名是 ai-server,系统是 Ubuntu。周报助手部署在 ~/apps/weekly-report,用 docker compose 管理,源代码在 ~/weekly-report。
- 先用只读命令诊断,例如 docker compose ps、docker compose logs、df -h、free -h、systemctl status。
- 任何会修改服务器的操作(重启服务、删除文件、改配置、安装软件),先说明原因、命令和影响,等我确认后再执行。
- 不要读取或输出 .env、tunnel.env、certs 目录以及任何密钥文件的内容。
- 每次只通过 ssh ai-server "命令" 执行一条命令。

创建好后存档:

git add -A
git commit -m "运维规矩"

2. 让它做一次体检

重新启动 Codex(/new 或退出后再运行 codex),发出:

请给 ai-server 做一次体检:周报助手的容器是否正常运行、最近 100 行日志里有没有报错、磁盘和内存是否充足。最后给我一份简短的结论。

3. 逐条审批

Codex 会弹出审批,显示类似这样的命令:

ssh ai-server "cd ~/apps/weekly-report && docker compose ps"

每一条都看清楚:是不是只读的?有没有碰密钥文件?看得懂、没问题再选 Yes, proceed。

不要选 “Yes, and don't ask again for commands that start with ssh ai-server”。这等于允许它以后在服务器上不经询问执行任何命令。

你应该看到

一份中文体检报告:容器状态、日志里的异常、磁盘和内存使用情况,以及它的建议。和你自己用第 16、21 课学过的命令查到的结果对照一下。

实用的提问

网站打不开,Cloudflare 显示 522,请帮我排查原因,先只做检查。
服务器上有哪些系统更新可以安装?先列出来,不要安装。
docker 占用了多少磁盘?哪些旧镜像可以安全清理?先列出来,等我确认。

注意事项

  • 私钥设了密码短语? Codex 运行的 ssh 无法替你输入密码短语,会连接失败。macOS 可以先运行 ssh-add 把密钥交给系统的钥匙串代理;Windows 需要启用“OpenSSH Authentication Agent”服务后运行 ssh-add。
  • AI 看得到命令输出。 所以规则里禁止它读取密钥文件。你自己也不要让它运行 cat .env 这类命令。
  • 修改操作由你决定。 重启、删除、改配置之前,让它先说清楚会发生什么;拿不准就不批准,按课程里学过的方法手动做。

自检

  • AGENTS.md 里写清了服务器信息和规矩。
  • Codex 通过 SSH 完成了一次体检,每条命令都经过我批准。
  • 我知道为什么不能对 ssh ai-server 选“不再询问”。