跳转至

A3 — 把 CLI agent 接入安全的团队流程

← Stage 5 — Track A 核心 · Track A: CLI Power User 第 3 站(核心最后一站)

这一站只做一件事:让 CLI agent 在测试用 PR 做一次只读检查。它可以提出意见,但不能自己合并、部署或取得额外权限。

📌 学习目标

完成后,你可以:

  • 只把一个安全范围交给 MCP server。
  • 让 CI 在 PR 自动生成一份可检查的建议。
  • 用 Observability 看懂一次运行留下的 usage、时间和结果。
  • 把 A2 的 Skill 交给队友,并让对方安全地重新运行。

🧩 先认识三个核心词

核心词 它是什么、像什么 A3 怎么用 不是什么
MCP(Model Context Protocol) 让 agent 连接外部工具或数据的标准转接头 只把一个 demo 文件夹或只读工具交给 server 不是自动安全;能碰什么仍取决于权限
CI(Continuous Integration) push 或 PR 出现时会自动工作的检查站 让测试 PR 自动跑一次只读 review 不是可以跳过人工 review 的 auto-merge 按钮
Observability(观测与记录) 像收据加行车记录,留下发生过的事 记下 provider、model、usage、时间、结果与失败原因 不是只看一个总 token 或猜测拿不到的成本

三个词会一起出现,但不是一回事:MCP 负责“接工具”,CI 负责“何时自动运行”,observability 负责“运行后留下什么证据”。

先走安全阶梯

  1. 只读:先让 agent 看数据,不让它改数据。
  2. 最小权限:只开启这次需要的文件夹、repo、tool 或 token scope。
  3. demo repo:先在可丢弃的练习环境测试。
  4. 人工 review:由人决定要不要采用 agent 的建议。
  5. 最后才考虑写入:auto-merge、push、deploy 不属于这一站。
展开时间、前置条件、环境和费用
  • 时间:先完成四个最小成果,通常可以拆成几次短练习;不要为了赶时间一次接入很多服务。
  • 前置条件:完成 A1、A2 和 Stage 5 的 Track A 核心 5.1–5.4,并能看懂 git status、PR 和 GitHub Actions 的基本界面。
  • 环境:一个没有真实 secrets 的 demo repo;第一轮使用 GitHub-hosted Linux runner,更容易套用 sandbox。
  • 费用:GitHub Actions、CLI 订阅和模型 API 可能分别计费。运行前先查看自己使用的方案,不要把别人的价格当成自己的价格。

如果 A2 的 review-changes Skill 还不能稳定输出 PASS 或具体问题,先回去修好再进入 A3。

📚 必读

必读资料与学习资源核查:2026-08-27 UTC

  1. 先看 MCP Connect to local servers,了解 server 只能拿到你交给它的路径。
  2. 再看 GitHub Actions Security Hardening,先理解 least privilege 和不可信 PR。
  3. 选择一条 CI 路径:
  4. Claude Code:官方 GitHub Actions 文档
  5. Codex:官方 GitHub Action 文档
  6. 需要 trace、eval 或完整 production 理论时,再进入 Stage 7 和 Stage 7.5。

🛠 动手练习

动手练习 CLI-9:只连接一个 MCP server

成果: agent 能读到一个新建的 demo 文件夹,但没有取得整个 home、磁盘、真实项目或 secrets。

先复制适合你电脑的指令,创建 a3-mcp-demo/hello.txt。

PowerShell:

New-Item -ItemType Directory -Force -Path a3-mcp-demo | Out-Null
Set-Content -LiteralPath a3-mcp-demo/hello.txt -Value 'hello from A3'

macOS/Linux:

mkdir -p a3-mcp-demo
printf 'hello from A3\n' > a3-mcp-demo/hello.txt

把官方 filesystem reference server 接到你的 CLI 时,只传入这个文件夹的绝对路径。

成功时,agent 能读出 hello.txt;要求它读取范围外的文件时,应该失败或要求你重新授权。

展开 CLI-9 的安装、权限测试与 GitHub MCP 延伸
  1. 根据你主要使用的 CLI 官方 MCP 文档打开设置;不同 CLI 的配置文件和命令不一定相同。
  2. 使用官方 package @modelcontextprotocol/server-filesystem,arguments 只放 a3-mcp-demo 的绝对路径。不要填 ~、home、磁盘根目录或整个工作区。
  3. 重启 CLI,让它列出 demo 文件夹,再读取 hello.txt。
  4. 让它读取 demo 范围外的一个普通文件名。正确结果是拒绝或先要求新增授权;不能偷偷读取。
  5. 练习后移除 server 配置,确认 CLI 已不能再使用它。

要读取 PR 或 issue 时,改看 GitHub 官方的 github/github-mcp-server。先使用 --read-only,再用 toolsets 或 tools allow-list 只开启需要的能力。如果使用 PAT,把它放在安全的 secret/环境变量中,授予最少 scope,练习后撤销;能用 OAuth 时,按 host 官方流程设置。

modelcontextprotocol/servers 适合阅读 reference implementation,但官方说明它们不是 production-ready。旧的 github reference server 已移到历史集合,不要再把它作为当前 GitHub 入口。

费用提醒: 本地 filesystem server 通常不另外收费,但 CLI/模型仍可能计费。远程 MCP 也可能有自己的方案。

动手练习 CLI-10:让 PR 多一个只读检查员

成果: 测试用 PR 会留下 review 结果;人仍决定是否修改、合并或部署。

选择 Anthropic 的 claude-code-action 或 OpenAI 的 codex-action。第一轮只在自己控制的 demo repo 和 branch 执行,沿用 A2 的 review-changes Skill。

成功标准不是“几分钟内完成”,而是 workflow 成功结束,并通过 PR comment、job summary 或 artifact 留下可阅读的结果。

展开 CLI-10 的安全设置与验证步骤
  1. 根据供应商的官方示例建立 workflow,不要复制来源不明的 YAML。
  2. 把 API key 放入 GitHub Actions secret。不要写进 workflow、prompt、repo 或 log。
  3. GITHUB_TOKEN 从 contents: read 起步。只有需要发布 PR comment 时,才给该 job 增加必要的 pull-request 权限。
  4. Codex 的只读工作使用当前官方 action 支持的 permission-profile: ":read-only";不要同时设置互斥的 legacy sandbox 字段。Claude Code 依据官方 action 的 permissions/allowed tools 限制可用能力。
  5. prompt 只要求读取 diff、列出问题、输出 PASS 或具体建议。明确写出:不得 edit、commit、push、merge、deploy 或发送额外消息。
  6. 先使用自己创建的 same-repo test branch。不要使用 pull_request_target checkout 不可信的 PR code;这可能让不可信内容接触 secrets 或写入权限。
  7. 检查 Actions log、review 结果和 repo diff。任何 secret 泄露迹象都要立即删除 log、撤销并轮换 secret。

GitHub 建议 production workflow 把第三方 Action pin 到完整 commit SHA,因为 tag 可能移动。官方文档中的 @v1/@v5 适合辨认产品版本;正式使用时再查证并固定当时可信的完整 SHA。

费用提醒: 设置 job timeout 和 concurrency,避免卡住或重复触发。模型 API、供应商方案和 GitHub Actions minutes 要分开看。

动手练习 CLI-11:看一次运行的收据

成果: 你留下 provider/model、input usage、output usage、时间和结果;拿不到的字段会清楚写“未确认”,不会猜。

先分清你用的是订阅方案,还是按 API usage 计费。如果官方提供 token 和单价,成本才使用这个算式:

input tokens × input price + output tokens × output price

展开 CLI-11 的记录卡、停止规则与 observability

先用一个小 task 填这张卡:

字段 要记录什么
Task 这次请 agent 做什么
Provider/model 实际使用的供应商和型号;拿不到就写未确认
Usage input/output usage;不要只写模糊的“总 token”
时间 workflow 或 CLI 显示的实际耗时
结果 PASS、问题清单或失败原因
成本 只有能对上官方单价时才计算;否则写计费方式或未确认

再设置一个工具真正支持的停止规则,例如 job timeout、最大重试、provider spend limit,或每次进入付费步骤前人工确认。不要创建工具不会读取的设置来制造安全感。

要比较多次运行时,可以选择 Langfuse、Phoenix、Helicone 或 promptfoo。先确认数据会发送到哪里、是否包含原始 prompt/code/PII,再决定能不能接入。

Prompt caching 的 TTL、资格和价格因 provider/model 而异。Anthropic 当前文档同时提供默认 5 分钟和可选 1 小时 TTL;把它当作要查询的产品设置,不要当成所有 CLI 的固定规则。

动手练习 CLI-12:安全地把 Skill 交给队友

成果: 第二个干净的 demo repo 能找到 review-changes Skill;运行后没有非预期修改。

把 A2 的 review-changes Skill 放进可版本控制的 team repo,附上四件事:安装位置、需要的权限、测试方法、移除方法。Claude Code 可以再按照官方 plugin 格式打包;其他 CLI 按各自的 Skill 文档安装。

展开 CLI-12 的分享、安装与撤销步骤
  1. 分享前读完 SKILL.md 和附带的 scripts,确认没有下载陌生程序、读取 secrets 或改变外部系统。
  2. 保留 plugin 根目录的 skills/review-changes/SKILL.md;不要把项目自己的 CLAUDE.md、AGENTS.md 或 secrets 一起打包。
  3. 在第二个干净的 demo repo 中按照工具文档安装。Claude Code 可以参考 Plugins 文档和 anthropics/claude-plugins-official。
  4. 做一个小的文档 diff,运行 Skill,再用 git status --short 确认它只 review、没有修改文件。
  5. 记录版本或 commit SHA。更新前先看 diff;不再使用时,按照文档移除 plugin/Skill,并确认 agent 找不到它。

Skill 的核心意思可以共用,但文件夹、权限、frontmatter 和安装方式不一定相同。不要把某一家工具的 plugin 格式说成所有 CLI 都通用。

费用提醒: 分享文件本身通常不收模型费用,但每位队友运行 Skill 时可能使用自己的订阅或 API 额度。

只记住这个 production 安全循环

圈定范围 → 只读运行 → 留下记录 → 人工判断 → 能够恢复

如果没有范围、证据或恢复方法,就先不要提高权限。这比记住很多工具名称更重要。

📋 Playbook 4:派遣 subagent 跑独立任务

成果: 先列出当前工具真正提供哪些 agent,再把独立、可验证的工作交出去;不要假设每台电脑都有同名 agent。

展开 Playbook 4 与其余六个进阶 playbook

Playbook 4 — subagent: subagent 是主 session 派出的独立小帮手。Claude Code 目前有 Explore、Plan、general-purpose 等 built-in subagent;可用清单仍会受版本、session 和设置影响。code-reviewer 是官方文档提供的自定义示例,不是每个安装都固定存在的内置 agent。先运行工具的 agent list,再选择 read-only agent 或创建受限 reviewer。

其余情况只记一个动作,理论放在 Stage 7.5:

  • 范围不清: 明确写出可动和不可动的路径,先要求计划,不先改文件。
  • 多人/多 agent 并行: 分开 ownership 和 commit,最后再整合;不要同时修改同一批文件。
  • Review agent 输出: reviewer 只提供证据,不取代测试、branch protection 或人类判断。
  • 在 CI 运行 agent: 从只读和可信 trigger 开始;模型 fallback 必须明确设置并重新验证,不能偷偷切换。
  • 控制成本: 使用实际 usage、timeout、重试和 provider limit;拿不到数据就说拿不到。
  • 防止规则 drift: 故意做一个安全的小失败,确认 gate 确实会拦住;规则文字本身不是证据。

延伸阅读:resources/subagent-cookbook.zh-Hans.md和 Stage 5.5。这些页面之后会在自己的 layer 重新查核;使用 agent 名称前,仍以你当下的官方文档和实际清单为准。

🎯 精选 Projects

推荐度是本学习地图的编辑建议,不是 GitHub stars。⭐⭐⭐⭐⭐ 表示这条学习路径的必读/必做入口;它不代表工具永远安全,也不代表 production 可以跳过自己的 threat model。

类型资源先看什么何时使用推荐度来源
安全连接 MCPMCP Connect to local serversallowed directories 和明确授权第一次连接本地 server⭐⭐⭐⭐⭐官方文档
MCP Security Best Practicesleast privilege、scope 和 token handling要连接账户或远程服务前⭐⭐⭐⭐⭐官方文档
github/github-mcp-server--read-only、toolsets 和 tools allow-list要读取 GitHub PR/issue⭐⭐⭐⭐GitHub repo
modelcontextprotocol/serversreference implementation 和非 production-ready 警告学习协议或阅读示例代码⭐⭐⭐⭐⭐GitHub repo
CI 与 PR reviewGitHub Actions Secure Use最小权限、不可信输入、pin SHA编写任何带 secrets 的 workflow 前⭐⭐⭐⭐⭐官方文档
Claude Code GitHub Actions官方 setup、permissions 和 troubleshooting使用 Claude Code 运行 CI⭐⭐⭐⭐⭐官方文档
anthropics/claude-code-action官方示例和 action inputs从可执行模板开始⭐⭐⭐⭐⭐GitHub repo
Codex GitHub Actionpermission profile、trigger 和输出使用 Codex 运行 CI⭐⭐⭐⭐⭐OpenAI 官方文档
openai/codex-action:read-only 和 safety strategy核对最新 inputs 和示例⭐⭐⭐⭐⭐GitHub repo
观察与评估langfuse/langfusetraces、usage 和 eval想把多次运行放在一起看⭐⭐⭐⭐⭐GitHub repo
Arize-ai/phoenixtracing 和 evaluation想用开放源代码观察 AI 系统⭐⭐⭐⭐GitHub repo
Helicone/heliconeproxy/gateway 的数据流与隐私边界想从 gateway 收集 request 记录⭐⭐⭐⭐GitHub repo
promptfoo/promptfooeval cases 和 CI regression要比较改动前后是否退步⭐⭐⭐⭐⭐GitHub repo
分享 Skill/pluginClaude Code Pluginsplugin 结构、安装和 marketplace要为 Claude Code 打包⭐⭐⭐⭐官方文档
anthropics/claude-plugins-official官方管理的 plugin 目录寻找可读的正式示例⭐⭐⭐⭐⭐GitHub repo
obra/superpowers-marketplace最小 marketplace 外壳理解 curator-only 结构⭐⭐⭐GitHub repo
目录与完整示例wong2/awesome-mcp-servers先分类,再逐一检查来源和权限官方资源没有需要的 server 时⭐⭐⭐⭐GitHub repo
obra/superpowersSkill、规则和 workflow 如何组合完成最小流程后看完整示例⭐⭐⭐⭐GitHub repo

目录只帮你“找到候选项”,不替候选项保证安全。安装任何 MCP、Action、Skill 或 plugin 前,都要再查看 source、权限、最近维护状态和移除方法。

✅ Track A 完成检查

  • MCP 只拿到 demo 文件夹或最小的 read-only toolset。
  • PR workflow 只提出意见,没有 auto-merge、push 或 deploy。
  • secrets 不在 repo、prompt 或 log 中;workflow 使用最小权限。
  • 我能指出一次运行的结果和 usage;拿不到的数据没有乱猜。
  • 队友能在干净的 demo repo 运行 Skill,之后 git status 没有非预期修改。

五项都做到,就完成 Track A 核心。建议下一站读 Stage 8 — Agent 操作界面,学习怎样给 Browser、Computer 和 Sandbox 设置安全边界;Stage 8 不影响 Track A Capstone 入场。想自己写 agent,再回到 Stage 3。