promptgarten 🌱
🌍 DE
指南●●○5 分钟 · +40 XP

CI/CD 与 agent:把 AI 用进流水线

用 claude -p 和 GitHub Actions,agent 可以自动在流水线里运行——不会有任何反问。正因如此才需要 gate:做决定的是测试,不是 agent。

基础构件:headless 调用

流水线里没有聊天窗口。所以入口是 headless 模式:claude -p "prompt" 处理完一个任务就退出。数据可以通过管道传进去(git diff main | claude -p "..."),--output-format json 会返回一个机器可读的结果,包含花费——很适合写脚本。

GitHub Actions

GitHub 有一个官方 action(claude-code-action):它可以响应 issue 和 PR 里的 @claude 提及,也可以用固定 prompt 自动运行——比如在每个新 pull request 上自动做 review。API key 必须放进 GitHub Secrets,绝不能放进仓库本身。

Gate:先测试,再信任

最重要的规则:agent 的输出是未经检查的代码。它必须像人写的代码一样,经过同样的 gate——测试、linter、build——才能被合并。实际做法是:agent 创建一个 pull request,而不是直接 push,合并前由人来 review。

风险

第一,没有反问机会:agent 无法决定的事情,要么中断,要么被错误地决定。第二,secrets:CI 里的 agent 能访问 runner 能看到的一切,所以权限要尽可能收紧。第三,成本:如果没有 --max-turns 和 workflow 超时之类的限制,运行成本可能在不知不觉中飙升。

示例

# GitHub Actions 步骤(节选): - uses: anthropics/claude-code-action@v1 with: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} prompt: "检查这个 PR 有没有 bug。把发现的问题作为评论发出来。" claude_args: "--max-turns 10"

小测验

为什么在 CI/CD 里,“先测试再信任”这条规则适用于 agent 的输出?

来源

相关主题

Headless 模式:不需要交互运行 agent ●●○自主 agent 的护栏(guardrails) ●●●写给 vibe coder 的 Git 与 GitHub 入门 ●○○Evals——系统化测试 prompt 与模型 ●●○