Codex vs 开源 Agent 框架对比
调研时间:2026-06-22 对比对象:LangGraph / CrewAI / AutoGen / tRPC-Agent
一句话定位
Codex 是唯一用系统级语言(Rust)实现、带 OS 内核沙箱、面向本地开发的开源 coding agent;其他框架是 Python/TS 编排库,侧重灵活性和多 provider 支持。Codex 选择了”深度安全 + 极致性能”路线,代价是灵活性和生态开放度。
全景对比表
| 维度 | Codex | LangGraph | CrewAI | AutoGen/AG2 | tRPC-Agent |
|---|---|---|---|---|---|
| 核心语言 | Rust (124 crates) | Python | Python | Python/C# | TypeScript |
| 架构模式 | 单体二进制 + JSON-RPC | 有向图编排 | 多 agent 角色 | 多 agent 对话 | RPC 工具层 |
| 部署形态 | 本地 CLI / App / IDE | 库 + Cloud | 库 + Enterprise | 库 + Studio | 库(嵌入) |
| 工具安全 | OS 内核沙箱 | 无/Docker | 无 | Docker(可选) | 无 |
| 上下文管理 | Auto-compaction | 手动 Checkpoint | Token 截断 | 滑动窗口 | 无内建 |
| 状态持久化 | Git-baseline + SQLite | SQLite/Postgres/Redis | 向量 DB(可选) | 内存 | 无 |
| 工作流定义 | 命令式 Turn 循环 | 声明式图(DAG) | 任务委派 | 对话驱动 | Request/Response |
| 多 Agent | 单 agent + 子进程 | 节点即 agent | 原生多 agent | 原生多 agent | 单 agent |
| RAG | BM25 文件搜索 | LangChain Retriever | 内建 RAG Tool | 无内建 | 无 |
| 模型支持 | OpenAI + Ollama + LM Studio + Bedrock | 50+ via LangChain | 50+ via LiteLLM | 多 provider | 多 provider |
| 协议 | JSON-RPC 2.0 | Python 内部 | Python 内部 | Python 内部 | tRPC/HTTP |
| 开源许可 | Apache-2.0 | MIT | MIT | MIT | MIT |
| 成熟度 | 生产级(OpenAI 产品) | 生产级(LangChain) | 成长期 | 成长期 | 早期 |
维度深度分析
1. 执行模型
flowchart LR
subgraph Codex["Codex: 线性 Turn 循环"]
T1[Turn 1] --> T2[Turn 2] --> T3[Turn 3]
T2 -.->|spawn| SA[SubAgent]
end
subgraph LG["LangGraph: 有向图"]
A[Node A] -->|条件| B[Node B]
A -->|条件| C[Node C]
B --> D[Node D]
C --> D
end
subgraph Crew["CrewAI: 角色委派"]
R[Researcher] --> W[Writer]
W --> E[Editor]
R -.->|delegate| W
end
Codex 的 Turn 循环是命令式的——模型在每个 turn 内自由调用工具,直到产出最终回答。没有预定义的执行图。
LangGraph 的图是声明式的——开发者预先定义节点、边和条件,框架按图执行。
CrewAI 是角色式的——每个 Agent 有固定身份和工具集,通过 Task 分配协调。
Codex 为什么不用图?
Codex 的设计假设是”模型足够聪明,不需要人工编排”。单 agent 循环让模型自己决定调用顺序,降低了框架复杂度。代价是:复杂工作流无法被显式建模和调试。
[源码] codex-rs/agent-graph-store/ 的存在暗示图能力可能正在开发中。
2. 安全隔离
flowchart TD
subgraph Codex_S["Codex 安全层"]
EP[ExecPolicy 规则引擎] --> AP[三阶段审批]
AP --> SB[OS 沙箱<br/>Seatbelt/bwrap/seccomp]
SB --> ESC[Escalation 降级]
end
subgraph Others["其他框架"]
NONE[无安全层<br/>或仅 Docker]
end
| 安全特性 | Codex | LangGraph | CrewAI | AutoGen |
|---|---|---|---|---|
| 文件系统隔离 | 白名单可写根 + 受保护子路径 | 无 | 无 | Docker volume |
| 网络隔离 | namespace/seccomp/proxy | 无 | 无 | Docker network |
| 进程隔离 | PID namespace | 无 | 无 | Docker container |
| 策略引擎 | Starlark exec policy | 无 | 无 | 无 |
| 审批流 | 5 级(UnlessTrusted→Never) | 无 | 无 | human-in-loop |
| 运行时降级 | Sandbox escalation | N/A | N/A | N/A |
[源码] codex-rs/execpolicy/:基于 Starlark 的规则引擎,支持 prefix_rule、regex_rule 等策略定义。
为什么这很重要?
在企业环境中,coding agent 需要执行任意 shell 命令。没有 OS 级沙箱意味着一次 prompt injection 就可能导致数据泄露或系统损坏。Codex 是目前唯一在生产环境解决这个问题的开源框架。
3. 上下文管理
| 策略 | Codex | LangGraph | CrewAI | AutoGen |
|---|---|---|---|---|
| 触发条件 | 90% context window | 手动/检查点 | Token 硬限制 | 配置窗口大小 |
| 压缩方式 | 模型生成 handoff summary | N/A (state 持久化) | 截断旧消息 | 丢弃早期消息 |
| 信息保留 | 摘要 + 重新注入 AGENTS.md/Skills | Graph state | 部分保留 | 最近 N 条 |
| Hook 系统 | Pre/Post compact hooks | Checkpointing | 无 | TransformMessages |
Codex 的 auto-compaction 优势:长对话不会 OOM,且 handoff summary 保留任务上下文。 劣势:压缩质量依赖模型能力,早期细节可能丢失。
[源码] codex-rs/core/src/compact.rs,codex-rs/core/src/compact_remote_v2.rs
4. 模型提供商
pie title 模型 Provider 支持范围
"Codex" : 5
"LangGraph/CrewAI" : 50
"AutoGen" : 20
"tRPC-Agent" : 10
| Provider | Codex | LangGraph | CrewAI |
|---|---|---|---|
| OpenAI | 原生 | via LangChain | via LiteLLM |
| Anthropic | 不支持 | via LangChain | via LiteLLM |
| 不支持 | via LangChain | via LiteLLM | |
| Ollama (本地) | 原生 | 需适配器 | via LiteLLM |
| LM Studio | 原生 | 需适配器 | via LiteLLM |
| Bedrock | 原生 | via LangChain | via LiteLLM |
关键约束:Codex 仅支持 Responses API wire format。Chat Completions API 兼容的 provider 无法直接使用。这是最大的生态限制。
[源码] codex-rs/model-provider-info/src/lib.rs — Chat API 已被显式移除并报错。
5. 持久化与记忆
| 维度 | Codex | LangGraph | CrewAI | AutoGen |
|---|---|---|---|---|
| 短期记忆 | Conversation history | Graph state | Agent 内存 | 对话历史 |
| 长期记忆 | MEMORY.md (git-baseline) | Checkpoint Store | 向量 DB | 无 |
| 跨会话 | Rollout JSONL + SQLite | 持久化 state | 持久化 embedding | 无 |
| 记忆更新 | 两阶段 pipeline (并行提取 + 串行合并) | 手动 | 自动 embedding | 无 |
| 版本控制 | Git baseline diff | 无 | 无 | 无 |
Codex 的 git-baseline 记忆系统独特之处:用 git diff 检测”什么变了”来触发记忆更新,而非简单的时间窗口或 embedding 距离。
[源码] codex-rs/memories/README.md,codex-rs/git-utils/src/baseline.rs
6. 开发者体验
| 维度 | Codex | LangGraph | CrewAI | AutoGen |
|---|---|---|---|---|
| 上手门槛 | 低(CLI 即用) | 中(需理解图) | 低(角色定义) | 高(概念多) |
| 可调试性 | 低(黑盒 Turn) | 高(LangSmith) | 中 | 中(Studio) |
| 可定制性 | 中(config + execpolicy) | 高(自定义节点) | 中(自定义工具) | 高(自定义 agent) |
| 贡献门槛 | 高(Rust) | 低(Python) | 低(Python) | 中(多语言) |
| 文档质量 | 高(详细 README) | 高(LangChain 文档) | 中 | 中 |
Codex 独有竞争力
1. OS 级安全(无竞品)
三平台内核沙箱 + Starlark 策略引擎 + 五级审批流。这是 coding agent 商业化的关键门槛——没有安全保证的 agent 难以进入企业生产环境。
2. 性能(Rust 实现)
124 个 Rust crate 的 workspace,原生二进制启动速度和内存效率远超 Python 框架。对于高频短任务场景(如 IDE 内联补全),这是关键优势。
3. 统一协议(JSON-RPC 2.0)
一个协议驱动所有前端——CLI、桌面、IDE、移动端。其他框架通常只有 Python SDK,无标准化的 IDE 集成协议。
4. Git-Baseline 记忆
用版本控制 diff 驱动记忆更新,天然与开发者工作流对齐。其他框架的记忆系统(向量 DB、检查点)与代码版本控制是割裂的。
5. 项目级指令(AGENTS.md)
分层的项目指令系统(root → subdir → override),让团队可以在 repo 级别统一 agent 行为。最接近的竞品是 Cursor 的 .cursorrules,但没有层级覆盖。
Codex 相对劣势
1. 模型 Provider 锁定
仅支持 Responses API 意味着无法使用 Anthropic Claude、Google Gemini 等通过 Chat Completions API 接入的模型。对于需要多 provider fallback 的企业场景,这是硬伤。
2. 无声明式工作流
没有 LangGraph 式的图定义能力。复杂的多步骤工作流(如”研究 → 起草 → 审查 → 修改”)无法被显式建模,只能依赖模型自行规划。
3. 弱多 Agent
只有子进程 spawn,没有:
- 角色分工协作(CrewAI)
- 多 agent 讨论/辩论(AutoGen GroupChat)
- 条件路由到不同 agent(LangGraph)
agent-graph-store crate 暗示此能力正在开发。
4. 无向量搜索/RAG
只有 BM25 文件搜索,无 embedding-based 语义搜索。对于需要从大型知识库检索的场景(如文档问答),不如 LangGraph + Retriever 或 CrewAI RAG Tool。
[源码] codex-rs/file-search/:依赖 bm25 = "2.3.2",无向量 DB 依赖。
5. 贡献门槛高
Rust 生态相比 Python 社区小很多。想贡献 Codex 需要 Rust + 系统编程经验,降低了社区参与度。
适用场景推荐
| 场景 | 最优选择 | 原因 |
|---|---|---|
| 个人开发者日常编码 | Codex | CLI 即用,安全沙箱保护 |
| 企业安全要求高 | Codex | 唯一有 OS 级沙箱的框架 |
| 复杂多步骤工作流 | LangGraph | 声明式图 + 可观测性 |
| 多 Agent 协作 | CrewAI / AutoGen | 原生多 agent 设计 |
| 多 Provider 需求 | LangGraph / CrewAI | 50+ provider 支持 |
| IDE 深度集成 | Codex | 标准 JSON-RPC 协议 |
| 快速原型验证 | CrewAI | 最低代码量启动 |
| 知识库问答 | LangGraph + RAG | embedding 检索 + 图编排 |
与 Claude Code 的差异(待 Agent A 核对)
| 维度 | Codex | Claude Code |
|---|---|---|
| 实现语言 | Rust | TypeScript |
| 模型绑定 | OpenAI(+ 本地模型) | Anthropic |
| IDE 协议 | JSON-RPC 2.0 标准化 | 推测为自定义 |
| SDK | Python + TypeScript 双 SDK | 无公开 SDK |
| 开源程度 | 完整引擎开源 (Apache-2.0) |