Coding Agent
Abstract
Coding Agent 是由 LLM 和 工具系统 组成的代码执行型 Agent,能够阅读代码库、运行命令、编辑文件,并根据反馈迭代完成开发任务。
- Codex CLI 更偏向 沙箱隔离 + 通用 shell 能力
- Claude Code 更偏向 权限控制 + 专用工具编排;两者代表了 Coding Agent 在安全边界、工具抽象和用户确认机制上的不同取舍。

调用链路: 模型推理主线 + 工具调用循环
主线是 用户请求 → LLM 推理 → 完成任务。 当模型需要外部信息或执行能力时,会调用工具,并将工具结果写回上下文,继续下一轮推理。
flowchart LR
User[用户请求] --> Reasoning[LLM 推理]
Reasoning --> Done[完成任务]
Reasoning -->|需要外部能力| Tool[调用工具]
Tool -->|返回结果| Reasoning
代表性 Agent
这里关注两种生产级 Coding Agent,它们代表了不同的工程哲学:Codex CLI 和 Claude Code。
-
Codex CLI(OpenAI)
- Source:openai/codex
- Language:Rust
- UI:Ratatui 原生终端 TUI
- Distribution:npm、Homebrew、GitHub Releases 平台预编译二进制
- Models:OpenAI Responses API 可用模型
-
Claude Code(Anthropic)
- Source:闭源
- Language:TypeScript
- UI:终端交互界面
- Distribution:Native Installer、npm、Homebrew、WinGet、桌面应用
- Models:Claude Sonnet、Opus、Haiku 等
设计哲学
这两类 Agent 对 “如何构建安全且有效的 Coding Agent” 做出了不同取舍:Codex 更强调把执行能力放进受限环境,Claude Code 更强调在工具调用前后加入明确控制。
Codex:把一切放进沙箱,让模型在边界内自由行动
Codex 的核心思路是给模型较强的命令行能力,同时通过可配置的沙箱与审批策略约束它能访问和修改的范围。在支持的平台上,沙箱会依赖操作系统能力来限制文件系统和网络等资源。
Info
在这种模式下,模型可以通过 shell 组合命令、搜索代码、运行测试和修改文件;但它的行动范围由工作区、沙箱模式和用户审批共同决定。这是一种 containment-first 的思路:先承认模型可能做出意料之外的操作,再把高风险能力限制在明确边界内。

因为 shell 本身足够通用,Codex 不需要把每一种开发动作都封装成独立工具。它的工程重点不在“设计很多工具接口”,而在“让通用执行能力在可控边界内运行”。
Claude Code:分析每一步,在风险操作前请求确认
Claude Code 的核心思路是把 Coding Agent 拆成一组更明确的工具能力,并围绕这些工具建立权限、确认和配置机制。
Info
在这种模式下,文件读写、命令执行、搜索、编辑等动作会以工具调用的形式出现;用户可以通过权限设置控制哪些操作自动允许、哪些操作需要确认、哪些操作应该拒绝。这是一种 control-at-every-layer 的思路:把风险判断前置到工具边界和用户交互中。

这种设计让每类能力都更容易单独配置、审计和解释,但也意味着系统复杂度更多体现在工具协议、权限规则和交互体验上。
取舍
这两种方式没有绝对优劣,它们优化的是不同的威胁模型和使用场景。
| 维度 | Codex(Containment) | Claude Code(Control) |
|---|---|---|
| 模型做出意外行为时怎么办? | 通过沙箱、工作区边界和审批策略限制影响范围 | 通过权限系统和用户确认控制风险操作 |
| 工具灵活性 | 模型可以自由组合 shell 命令、管道和脚本 | 工具边界更明确,行为更容易解释和审批 |
| 可移植性 | 强沙箱能力依赖具体平台支持 | 通过多种官方安装入口覆盖不同环境 |
| 输出组织 | shell 输出更接近真实终端结果 | 工具结果更容易结构化展示和控制 |
| 系统复杂度 | 复杂度集中在沙箱、审批和命令执行边界 | 复杂度集中在工具协议、权限规则和交互流程 |