三层安全防护 + 命令白名单:一个敢带进生产的 AI 运维排查脚本

三层安全防护 + 命令白名单:一个敢带进生产的 AI 运维排查脚本

把 AI 放进生产环境排查问题,第一反应多半是「它会不会一不留神把数据库删了」——这也是我做这个项目时最在意的事。

Poor Man’s DevOps Agent是一个 80KB 的单文件 Python 脚本,扔进容器、接上任意 OpenAI 兼容 API,就能用自然语言对话式排查线上问题。而它敢被带进生产环境的核心,是一套三层安全防护:危险命令硬拦截、命令白名单、写操作人工确认。

宁可多确认一次,也不让 LLM 的幻觉删掉生产数据。

它怎么工作

你描述现象,它像运维工程师一样先形成假设,再用最小的只读命令逐个验证,命中就深挖、没命中就换假设:

你:帮我看看这个容器为什么 CPU 这么高 Agent:先形成假设——① GC 停顿 ② IO 瓶颈 验证①:top CPU 89%、内存 45%,假设①命中,继续深挖 docker exec py-spy dump --pid 1 抓到线程停在 gc.collect,根因是内存泄漏触发频繁 GC 建议查看 app.py 的对象缓存逻辑,已把该服务 OOM 阈值写入记忆

为什么值得一看

  • 单文件、零依赖:scp agent.py 进容器,标准库就能跑,Python 2.7 和 3.x 都兼容。不装 node、不装 CLI、不引一堆依赖。
  • 不绑厂商:任何 OpenAI 兼容 API 都能用——DeepSeek、通义千问、智谱 GLM、Kimi、豆包、讯飞星火,或者本地部署的 Ollama、vLLM。公司内网的私有模型也行。
  • 三层安全防护:这是敢把它带进生产的关键——rm -rf /、mkfs、dd of=/dev/ 这类危险命令直接硬拦截;只有白名单内的命令能执行;cat/grep/ps 这类只读命令免确认直接放行,其余需人工确认。LLM 不会因为幻觉把你的生产环境删了。
  • 借鉴 Claude Code 的核心思路:流式输出(边生成边显示)、LLM 摘要式上下文压缩(长对话不丢语义)、TodoWrite 任务追踪、工作区持久化记忆(排查结论跨会话累积)、斜杠命令。

它和 Claude Code 的区别

不是要复刻 Claude Code。Claude Code 是日常开发的主力工具,大而全;这个项目是应急时塞进容器的那一个脚本,只做「只读排查」这一件事,做到极致轻。借鉴它的思考方式,但用完就删,避免 API Key 泄露。

说点实在的局限(不忽悠)

它不是生产级常驻服务,是临时排查工具;LLM 给的分析只是参考,不保证 100% 正确,关键决策还得你自己判断;涉及写操作的命令务必人工确认后再执行。它解决的是「非运维背景的同学临时需要进容器排查」这个场景,不是要替代 DataDog 或专业监控。

怎么用

curl -fsSL https://raw.githubusercontent.com/vector4wang/poor-mans-devops-agent/main/agent.py -o agent.py export DEBUGBOT_API_URL="https://your-llm/v1/chat/completions" export DEBUGBOT_API_KEY="sk-xxxxx" export DEBUGBOT_MODEL="deepseek-chat" python agent.py

GitHub:https://github.com/vector4wang/poor-mans-devops-agent

如果对你有帮助,欢迎 Star,也欢迎提 Issue 和 PR 一起完善。