Agentic coding 不只是让模型补写一个函数。代理会读取仓库、选择工具、修改多个文件、运行命令,并准备一份需要由人或 CI 信任的变更。因此,比较应覆盖完整控制循环:启动、仓库规则、权限、验证、diff 和 pull request。
本文比较 OpenAI Codex CLI、Anthropic Claude Code 和 GitHub Copilot CLI 官方文档中描述的终端工作流。文档快照截至 2026 年 8 月 28 日。本文不是个人 benchmark、速度测试,也不是实际手动运行的报告。命令是产品文档中的代表性示例,需要按照具体仓库的脚本和策略调整。“已验证”表示供应商明确记录了该能力。“实践含义”是根据这些已记录的控制措施推导出的操作建议。
同一项任务中的三种控制面
使用一项范围明确的任务进行比较:“为过期会话增加校验,更新单元测试,运行相关检查,展示 diff,准备 pull request,但不要推送到默认分支。”它有清晰边界、可观察的测试命令和可审查的产物,也能显示哪里需要人的决定。
| 控制面 | Codex CLI | Claude Code | GitHub Copilot CLI |
|---|---|---|---|
| 本地入口 | codex 或 codex exec |
claude |
copilot 或 copilot -p |
| 仓库规则 | 分层的 AGENTS.md |
CLAUDE.md,可导入 AGENTS.md |
Copilot 指令、路径规则、AGENTS.md |
| 权限模型 | sandbox 与 approval policy | allow、ask、deny 规则与模式 | 工具、路径、URL 与 sandbox 范围 |
| 测试循环 | 运行仓库命令 | 查找、编写、运行、修复测试 | 代理命令或变更后的 hook |
| 审查 | /review,不修改工作树 |
Git 审查与 Actions 自动化 | /review 与审查代理 |
| PR 路径 | Action 做审查,本地 PR 使用 Git | Git PR 与 Actions 中的 @claude |
/pr、CI 修复、云端委派 |
| 非交互任务 | 带 sandbox 参数的 codex exec |
claude -p 与 Actions |
-p、autopilot、Actions |
这是能力地图,不是胜负表。适配性取决于托管位置、凭据和审批程度。
安装和第一次安全运行
Codex 文档说明独立 CLI 的安装、进入项目目录和首次登录。在 Git 仓库中启动,先请求项目总结,再用 /status 和 /permissions 检查权限。自动化使用 codex exec。
Claude Code 文档说明 macOS、Linux、WSL 和 Windows PowerShell 的原生安装,然后在项目目录运行 claude 并认证,也提供 Homebrew 和 WinGet。首次运行是信任决定,因为 CLI 获许可后可读取、运行和修改文件。
Copilot CLI 通过受支持的软件包或平台渠道安装,然后运行 copilot。首次会话询问是否信任目录。GitHub 提醒 CLI 可能读取、修改和执行目录下的文件。用 /login 登录,理解脚本前不要永久信任目录。
三个工具都适合使用可删除的分支或 worktree,记录基线测试,检查指令,只允许所需命令并保护默认分支。
仓库指令也是接口的一部分
Codex 在工作前读取 AGENTS.md。发现链包括全局文件和从项目根目录到当前目录每一级中的一个文件。AGENTS.override.md 在本目录优先,更具体文件接在通用规则之后。把测试和安全规则放在根目录,把服务约定放在子目录。
Claude Code 读取目录层级中的 CLAUDE.md 和 CLAUDE.local.md。它不直接读取 AGENTS.md,但可在 CLAUDE.md 中用 @AGENTS.md 导入。共享构建、测试和架构规则放入 CLAUDE.md,个人偏好放入被忽略文件,路径规则放入 .claude/rules/。
Copilot CLI 支持 .github/copilot-instructions.md、路径专属 .instructions.md 和 AGENTS.md。copilot init 可创建初始规则。这些文件影响 prompt,却不是权限边界。“不要接触生产凭据”仍需拒绝路径、环境控制和 CI 策略。
使用简短的 AGENTS.md,再加入 Claude 导入和 Copilot 规则。写明包管理器命令、最小测试、生成文件、禁止路径、迁移策略和 PR 证据。过长上下文会消耗模型预算。
Sandbox 与审批是不同的控制
Codex 明确区分二者。Sandbox 决定命令可访问的文件和网络资源,approval 决定执行前何时暂停。本地修改常用 workspace-write 加 on-request。探索或只读 CI 可用 read-only。danger-full-access 和 --yolo 移除边界,只应在隔离环境使用。
本地会话可以明确写出这个契约:
codex --sandbox workspace-write --ask-for-approval on-request
Codex 文档规定 codex exec 在 CI 中默认只读。job 需要 patch 时才加入 --sandbox workspace-write。runner、checkout、命令白名单和输出都受控时才用 --ask-for-approval never。新脚本不要复制弃用的 --full-auto。
Claude Code 使用分层权限。Manual 模式下只读文件和内置只读 shell 不询问,编辑、普通 Bash、网页抓取和搜索可能要求审批。allow、ask、deny 由客户端执行。Manual、Plan、Auto 和 bypass 都有文档,bypass 只适合隔离环境。沙盒 Bash 通过 /sandbox 隔离文件和网络。
Copilot CLI 在工具可能编辑或执行文件时要求审批,只读搜索和读取自动允许。权限可按工具、路径和 URL 限制。Local sandbox 是实验性控制,GitHub 也记录短暂的 cloud sandbox。自治运行前检查 /sandbox policy 和最终权限。
跨产品应分层授权:仓库读取,准确的 formatter 和测试命令,最后才是分支或 worktree 写入。网络、包安装、凭据、push 和 deploy 分开审批。Sandbox 限制范围,却不能判断语义正确性。
工具、MCP 与自动化 hook
三个产品都能使用 shell、文件操作和仓库搜索。Codex 介绍 skills、plugins、MCP 和 GitHub Action。Claude Code 介绍 MCP server、skills、hooks 和 subagents。Copilot CLI 介绍 MCP、skills、plugins、自定义代理、hooks 和 GitHub MCP server。
把每个扩展视为工作流中的代码。检查来源,限制凭据,决定给实现代理还是审查者。能创建工单或合并 PR 的 MCP server 与只读文档 server 风险不同。
Hook 可在编辑后格式化,或在任务完成时运行快速测试。保持确定、简短,不要把部署或破坏性迁移藏在无法解释的 hook 中。
测试是一条证据循环
好的 prompt 要写明行为、fixtures、命令和停止条件。要求代理检查测试,加入过期会话失败用例,实施最小修复,运行聚焦测试和必需检查。报告包含命令和 exit status。若测试原本通过,要求解释原因。
Claude Code 的 common workflows 文档描述查找未覆盖代码、scaffolding、边界用例、运行测试和修复失败。Codex 与 Copilot CLI 在权限允许时也能运行仓库命令。生成测试不代表覆盖充分,人仍需检查契约、fixtures、集成和安全用例。
时间允许时使用三层:快速聚焦测试、包或服务测试、PR 必需检查。限制修复次数并保留初始错误输出。重复不稳定命令不会产生新证据。
Diff、审查与 pull request
审查应在 PR 前开始。要求列出变更文件、不变量、测试和缺口。对照任务并亲自阅读 Git diff。代理总结不是事实来源。
Codex 文档提供 /review,审查未提交变更、commit 或分支比较且不修改工作树。GitHub Action 可审查新 PR 或更新 PR 并发布结果。本地创建 PR 仍需 Git 或 GitHub 工具及权限。
Claude Code 文档支持 staging、commit、分支和 PR。GitHub Actions 支持 issue 或 PR 评论中的 @claude、issue-to-PR 和审查 workflow。保持 token、仓库权限最小化并保留 CI gate。
Copilot CLI 文档提供 /review、/pr create、/pr fix feedback,也支持修复合并冲突和 CI 失败。/delegate 发送任务给 cloud agent,由它打开 draft PR 并远程继续。这些命令不保证可合并。
把“准备”和“发布”分开。让代理创建分支、patch、测试和 PR 草稿。把 push、标签、批准和合并交给人或受保护身份。PR 写明任务、文件、命令、结果、风险和未测试区域。
CI 与可重复性
Codex 非交互模式面向 pipeline。它分开最终输出与进度,发出 JSON Lines,写入最后消息并接受 output schema。workflow 仍须安全处理认证、日志和失败。
Claude Code 可使用 -p 或 GitHub Actions。不可信 PR 使用只读审查 job,授权维护使用独立可写 job。触发和 token 规则仍是安全边界。
Copilot CLI 提供 -p、输出格式、autopilot 和 Actions。--max-autopilot-continues 限制继续次数。在 Actions 中确定计费身份和可写 token。模型成功不等于 CI 成功,真实测试 job 必须通过。
安全与成本边界
Prompt injection 可能来自 issue、fixture、README、生成文件或网页。不要为读取源码授予广泛网络权限或生产凭据。拒绝 secrets 路径,避免打印环境变量,分开包安装和测试,并审查 MCP server 与 hook 供应链依赖。
Codex 的限制和 credit 选项取决于计划和任务大小。Claude Code 区分 API 计费与订阅并通过 /usage 显示用量,扩展思考和长上下文可能增加消耗。Copilot CLI 使用 GitHub AI Credits 并记录 --max-ai-credits。这些系统不能直接对比。
在 workflow 层设置预算。仓库映射使用较低 effort,高风险决策再用更强模型。限制 retries、并行代理、autopilot 和云端时间。清理或压缩无关会话,并计算工程成本和审查时间。
适合不同场景的工作流
本地变更先把任一工具放在 plan 或 read-only 模式。让代理绘制仓库地图、引用指令并提出文件与测试。只批准最小范围,运行聚焦和必需检查,先读 diff 再执行 PR 命令。
希望从终端处理 PR 反馈和 CI 失败的 GitHub 团队可使用 Copilot CLI 文档化的 /pr 生命周期。评论触发任务可用 Claude Code Actions 和 Codex review Action。结构化本地输出可用 Codex exec 的 JSONL 和 schema。这是接口适配判断,不是排名。
处理敏感代码时,选择组织能够强制执行的部署模式。锁定 runner 中的只读 reviewer 可能比自治本地会话更安全。把策略放进 CI 和供应商控制中,不要只放在自然语言里。参阅 AGENTS.md 与 coding agents、AI 代理评估 和 生产环境 AI 代理架构。
一个小型运行契约
开始前定义仓库、分支、允许路径、测试命令、网络需求、修复上限和 PR 负责人。要求工具调用可见,审批有边界,并区分仓库事实与代理猜测。结束时要求 diff、测试证据、未解决风险和用量信号。是否就绪由常规审查者和 CI 决定。