6 大编码工具核心模块解析 -- 从 Agent Loop 到多 Agent 协作
在深入 6 个模块之前,先看全局:谁真正超越了 Claude Code,哪些领域各有千秋,哪些方面 CC 仍然领先。
| 能力 | 超越者 | 具体优势 | CC 的差距 |
|---|---|---|---|
| 运行性能 | Codex CLI (Rust) | 零依赖原生二进制,启动毫秒级,内存占用极低 | TypeScript/Node.js,启动需加载运行时,内存占用高 |
| 沙箱深度 | Codex CLI | execve(2) 系统调用拦截 + Apple Seatbelt + Full Auto 完全禁网 | 容器化 Bash,无网络隔离,无系统调用级拦截 |
| 沙箱多样性 | Gemini CLI | 4 种沙箱(Seatbelt/Docker/gVisor/LXC),gVisor 用户态内核是最强隔离 | 仅容器化方案 |
| 免费额度 | Gemini CLI | 60 req/min, 1000 req/day 完全免费(Google 账号) | 必须付费 API Key |
| 上下文窗口 | Gemini CLI | 1M tokens(Gemini 3 模型) | 200K tokens(Claude 模型) |
| Google 搜索 | Gemini CLI | 内置 Google Search grounding(独家能力) | 仅 MCP 工具搜索 |
| 多 Provider | OpenCode / Codex | 10+ Provider 统一接口,一个工具用所有模型 | 仅 Anthropic(Bedrock/Vertex 间接) |
| Copilot 免费 | OpenCode | GitHub Copilot 订阅用户零额外成本 | 无 Copilot 集成 |
| 内容生成 | DeerFlow 2 | 播客(TTS→MP3)/PPT(8风格)/咨询级报告/数据可视化 | 无内容生成能力(纯编码 Agent) |
| 中间件编排 | DeerFlow 2 | LangGraph 状态图 + 11 中间件链,最可扩展的编排架构 | 简单 while loop,无中间件层 |
| 生产级沙箱 | DeerFlow 2 | Docker/K8s Pod 隔离执行,适合大规模部署 | 无 K8s 支持 |
| 消息渠道 | OpenClaw | 23+ 渠道(WhatsApp/Telegram/Slack/飞书/iMessage…) | 终端唯一入口 |
| 语音交互 | OpenClaw | Wake Word + Talk Mode + ElevenLabs TTS | 无语音能力 |
| 设备控制 | OpenClaw | Camera/GPS/SMS/联系人/日历(跨 macOS/iOS/Android) | 无设备访问 |
| 技能生态 | OpenClaw | ClawHub 13,729+ 社区技能 | 技能生态较小 |
| AST 重构 | OmO (OpenCode插件) | AST-Grep 语法树级搜索重写,25 语言,确定性 100% | 依赖模型理解,概率性 ~99% |
| 交互终端 | OmO | Tmux 集成,支持 REPL 和断点调试 | Bash 非交互式,无 REPL |
| 扩展画廊 | Gemini CLI | Extensions Gallery 浏览/安装/开发模板 | 无扩展商店 |
| MCP 双向 | Codex CLI | 既是 MCP Client 又能作为 MCP Server | 仅 MCP Client |
| 企业管控 | Codex CLI | requirements.toml 强制安全策略 | 无企业策略机制 |
| 配置兼容 | OpenCode | 同时读 CLAUDE.md + .cursorrules + copilot-instructions | 只读 CLAUDE.md |
| 产品 | 方式 | 优点 | 缺点 |
|---|---|---|---|
| CC | CLAUDE.md + memory 文件(手动/半自动) | 用户完全可控,透明可编辑 | 需要手动维护 |
| DeerFlow 2 | LLM 驱动 memory.json(自动提取+置信度评分) | 最智能,自动提取事实 | LLM 提取可能出错,30s 防抖有延迟 |
| OpenCode | SQLite 持久化 | 结构化可查询 | 不如 Markdown 直观 |
| OpenClaw | Markdown 本地文件 + 向量搜索 | 可读可编辑+语义搜索 | 向量搜索准确度不稳定 |
| Gemini CLI | GEMINI.md + save_memory 工具 + JIT 发现 | JIT 最灵活(访问目录自动扫描) | 记忆工具较简单 |
| Codex CLI | ~/.codex/memories/ 目录持久化记忆,workspace-write 沙箱模式下可写 | 沙箱感知(memories 目录在沙箱可写白名单内),与安全模型深度集成 | 记忆机制文档较少,不如 CC 的 CLAUDE.md 直观 |
| 产品 | 模式 | 优点 | 缺点 |
|---|---|---|---|
| CC | Sub-Agent 委派 + Agent Team(/agent-team 创建命名团队,每个成员独立 git worktree,Lead Agent 协调合并) | 简单委派 + 团队编排兼备;worktree 隔离避免合并冲突;成员并行开发不同模块 | Team 功能较新,生态工具支持待完善 |
| DeerFlow 2 | Lead + Sub-Agents(最多 3 并发) | 中间件可扩展,checkpoint 恢复 | 架构复杂,启动开销大 |
| OpenClaw | Router + 隔离 Agent(Bindings 路由) | 最适合多人格多任务 | 安全风险(Agent 间 prompt injection) |
| Gemini CLI | 4 个内置子代理 | 专家化(browser/codebase/help) | 不可自定义,数量固定 |
| Codex CLI | 实验性 multi_agent | 有潜力 | 尚不成熟 |
各有取舍:精细度 vs 简单性 vs 节约成本
各有特色,无绝对优劣
| 能力 | CC 的优势 | 竞品的差距 |
|---|---|---|
| 模型编码质量 | Claude Sonnet/Opus 编码能力顶级 | Gemini/GPT 编码仍有差距(尤其复杂重构) |
| 编辑可靠性 | old_string→new_string 内容匹配,架构层面规避行号漂移 | OpenCode/OmO 需要哈希锚定补丁 |
| 零配置体验 | npm install 一条命令,开箱即用 | DeerFlow 需要 Python+Node+nginx+make,OpenClaw 需要 onboard |
| Hooks 系统 | PreToolUse/PostToolUse/Stop,成熟的事件驱动自定义 | Codex/OpenCode 无 Hook 系统 |
| 开发者 UX | 终端原生、响应快、输出简洁 | DeerFlow/OpenClaw 需要浏览器/消息应用 |
| 意图理解 | Claude 模型隐式理解用户意图,无需额外层 | OmO 需要显式 IntentGate 补偿弱模型 |
| 系统提示词 | 经过大量优化的 system prompt,深度整合 Claude 能力 | OpenCode 直接搬用 CC 的 prompt |
| 简洁架构 | 简单 Agent Loop 足够强大,维护成本低 | DeerFlow 4 服务 + 11 中间件,架构复杂度高 |
两条路线之争:模型驱动 vs 工程驱动。CC 选择用更强的模型减少工程复杂度(简单架构 + 顶级模型);其他产品选择用更好的工程弥补模型差距(复杂架构 + 多模型路由)。当模型能力趋同时,工程架构的差异将成为决胜因素。
Agent Loop 是所有编码智能体的心脏。理解循环机制的差异,就理解了产品架构的根本分歧。
无论哪个产品,核心循环都遵循同一模式:接收输入 -> 组装 Prompt -> 调用 LLM -> 解析响应 -> 执行工具 -> 回传结果 -> 继续循环。差异在于每个环节的工程实现。
| 维度 | Claude Code | Codex CLI | Gemini CLI | OpenCode | DeerFlow 2 | OpenClaw |
|---|---|---|---|---|---|---|
| Loop 实现 | TypeScript async generator,while 循环逐 turn 推进 | Rust core crate AgentLoop,rollout/apply 两阶段 | TypeScript AgentLoop (packages/core),while 循环 | Go Agent Loop (internal/llm/agent/),for 循环 | LangGraph StateGraph + 11 中间件链,图编排 | TypeScript Agent Runner (Layer 3),event-driven |
| API 协议 | Anthropic Messages API | OpenAI Responses API | Gemini API (@google/genai) | 双适配: Anthropic SDK + OpenAI SDK | LangChain ChatModel 抽象层 | 多 Provider 统一适配 |
| 流式处理 | SSE streaming | SSE streaming | SSE streaming | Provider-specific streaming | LangGraph SSE streaming | WebSocket (ws://127.0.0.1:18789) |
| 上下文压缩 | 自动压缩(接近上下文限制时触发) | model_auto_compact_token_limit 配置阈值 + 云端压缩(上下文满时发送完整对话至 OpenAI 云端 API 摘要,比本地截断更智能) |
/compress 命令 + 自动触发 |
Auto Compact (95% 阈值) | SummarizationMiddleware (tokens/messages/fraction 三种策略) | /compact 命令 |
| 错误恢复 | 自动重试 + 降级 | 自动重试 + backoff | ModelAvailabilityService 健康监控 + 降级链 | Provider-specific 错误处理 | LangGraph checkpoint 恢复 | 模型降级链 (fallbacks) |
| 并行工具 | 支持(parallel tool_use) | 支持 | 支持 | 支持(goroutine) | 支持(LangGraph 并行节点) | 支持 |
Claude Code, Codex CLI, Gemini CLI, OpenCode, OpenClaw 都使用 while/for 循环驱动 Agent。
DeerFlow 2 使用 LangGraph 的 StateGraph,节点是处理步骤,边是条件跳转。
命令式 vs 声明式是最根本的架构分歧。5/6 产品选择命令式循环,说明对于编码 Agent 场景,简单直接的 while 循环已经足够。DeerFlow 2 选择 LangGraph 图编排,是因为它定位为通用研究型 Agent而非纯编码工具,需要复杂的多步骤工作流编排能力。
OpenCode 的双 Prompt 策略揭示了一个深层问题:不同模型对同样的指令理解不同,最佳的 System Prompt 是模型特定的。这也是为什么 Claude Code 只绑定 Anthropic API -- 可以深度优化 Prompt 与模型的匹配度。
Agent Loop 是产品的「引擎」。选择 while 循环还是状态图,本质上决定了产品的复杂度天花板和可扩展性。对于 PM,关键问题是:你的用户需要的是「快速完成编码任务」还是「编排复杂的多步骤工作流」?前者用命令式循环,后者用声明式图。
工具是 Agent 的手和脚。工具的定义方式、执行流程和权限模型,直接决定了 Agent 的能力边界和安全性。
| 产品 | 定义方式 | Schema 格式 | 示例 |
|---|---|---|---|
| Claude Code | TypeScript 函数 + JSON Schema 参数 | Anthropic tool_use format | { name, description, input_schema } |
| Codex CLI | Rust trait 实现 | OpenAI function_call schema | impl Tool for ShellTool { ... } |
| Gemini CLI | TypeScript class + DiscoveredMCPTool 包装 | Gemini function declarations | class ReadFileTool extends BaseTool |
| OpenCode | Go struct 实现 Tool interface | JSON Schema (OpenAI compatible) | type Tool struct { Name, Desc, Params, Execute } |
| DeerFlow 2 | LangChain @tool 装饰器 |
LangChain ToolMessage format | @tool def web_search(query: str) |
| OpenClaw | SKILL.md Markdown + YAML frontmatter | Markdown-defined parameters | 纯 Markdown 文件定义工具接口 |
| 产品 | 内建工具数 | 文件操作 | 命令执行 | 搜索 | Agent/MCP | 其他 |
|---|---|---|---|---|---|---|
| Claude Code | ~12 | Read, Write, Edit, MultiEdit | Bash | Glob, Grep | Agent (sub-agent), MCP tools | Notebook, WebFetch |
| Codex CLI | ~5 | read_file, write_file, patch_file | shell (exec/apply) | list_directory | MCP Client + MCP Server | -- |
| Gemini CLI | ~10 | read_file, write_file, edit_file | run_shell_command | glob, grep, list_directory | sub-agents (4 种), MCP tools | save_memory, web_search |
| OpenCode | ~8 | read, write, edit | bash | glob, grep, ls | task_agent, MCP tools | fetch |
| DeerFlow 2 | ~16 | read_file, write_file, edit_file | bash (sandbox) | web_search, crawl_url | MCP tools, sub-agents | python_repl, create_document, dedup |
| OpenClaw | ~15 | Read, Write, Edit | Shell (三级审批) | Glob, Grep, WebSearch | sessions_spawn, sessions_send, MCP | Fetch, Skill, Memory tools |
工具系统的设计哲学存在两极分化:Claude Code 和 Codex CLI 走「精简内建 + MCP 扩展」路线,核心工具仅 5-12 个;DeerFlow 2 和 OpenClaw 走「丰富内建 + 分类管理」路线,内建工具 15-16 个。
Gemini CLI 的 Policy Engine 最灵活,支持 TOML 规则文件、正则匹配,可以精细控制每个工具对每个文件路径的访问权限。DeerFlow 2 的沙箱化执行最安全,工具在 Docker 容器内运行,即使 LLM 被 prompt injection 诱导执行危险操作,也被容器边界限制。
OpenClaw 的 SKILL.md 是最创新的工具定义方式 -- 用 Markdown 而非代码定义工具接口,降低了社区贡献门槛,这也是 ClawHub 能积累 13,729+ 社区技能的关键原因。
工具系统的核心决策是「安全 vs 易用」的 tradeoff。Codex CLI 的 3 级模式让用户自己选择安全级别,这是最好的产品设计 -- 不替用户决定,而是提供清晰的选项。Gemini CLI 的 TOML 策略引擎则适合企业场景,管理员可以统一配置安全策略。
上下文是 Agent 的「工作记忆」,记忆是 Agent 的「长期知识」。两者的管理方式决定了 Agent 的连续性和个性化能力。
| 产品 | 文件名 | 层级结构 | 特殊功能 |
|---|---|---|---|
| Claude Code | CLAUDE.md |
全局 (~/.claude/) -> 项目 (repo root) -> 子目录 (任意嵌套) | CLAUDE.local.md 用于个人配置 (gitignore) |
| Codex CLI | AGENTS.md |
全局 -> 项目 -> 子目录 | child_agents_md scope 优先级控制 |
| Gemini CLI | GEMINI.md |
全局 -> 环境 -> JIT 发现 | @./path 模块化导入;/init 交互式自动生成;工具访问目录时自动扫描 |
| OpenCode | contextPaths (多格式) |
兼容所有竞品格式 | 同时读 CLAUDE.md + .cursorrules + copilot-instructions.md |
| DeerFlow 2 | SOUL.md |
对话引导生成 | Bootstrap skill 交互式创建人格文件 |
| OpenClaw | AGENTS.md + SOUL.md + USER.md |
per-Agent 隔离 | 每个 Agent 有独立的 workspace 和上下文 |
| 产品 | 存储方式 | 持久性 | 写入方式 | 读取方式 |
|---|---|---|---|---|
| Claude Code | Markdown 文件 (~/.claude/memory) |
跨会话 | 手动写入 (Read+Write 工具) | 启动时自动加载 MEMORY.md |
| Codex CLI | 文件系统 (~/.codex/memories/) |
跨会话 | 自动 / 手动 | 启动时注入 System Prompt |
| Gemini CLI | GEMINI.md + save_memory 工具 |
跨会话 | 工具驱动写入 (save_memory) | 启动时读 GEMINI.md + JIT 发现 |
| OpenCode | SQLite 数据库 | 跨会话 | 自动(会话+消息持久化) | 结构化查询 |
| DeerFlow 2 | memory.json (LLM 驱动) |
跨会话 | 自动提取 + 置信度评分 + 防抖更新 | Top 15 注入 System Prompt |
| OpenClaw | Markdown 本地文件 | 跨会话 | 自动提取 + 向量搜索 | 相关性检索注入 |
/compact 触发。model_auto_compact_token_limit 配置压缩触发阈值。当 token 数超过该值时自动压缩。支持在 codex.json 中为不同模型设置不同阈值。/compress 手动命令 + 自动触发两种方式。自动触发时使用 Gemini 模型生成对话摘要。独特之处在于 JIT 上下文发现:当工具访问新目录时,自动扫描该目录下的 GEMINI.md 并动态注入。/compact 命令手动触发。Agent 级别隔离意味着每个 Agent 有独立的上下文窗口,不会互相干扰。Memory 系统通过向量搜索实现语义检索,减少了对长上下文的依赖。DeerFlow 2 的记忆最智能:LLM 自动从对话中提取事实 -> 计算置信度评分 -> 防抖更新(避免频繁写入)-> 只注入 Top 15 条最相关记忆。这是「AI 驱动的记忆管理」。
OpenCode 的 SQLite 持久化最工程化:结构化存储使得记忆可查询、可统计、可导出,是唯一一个用数据库而非文件系统存储会话的产品。
Gemini CLI 的 JIT 上下文发现最灵活:不需要预先加载所有上下文,而是在工具访问目录时才动态发现和注入,天然适合大型 monorepo。
OpenCode 的 contextPaths 兼容性最强:一个工具能读所有竞品的配置文件 (CLAUDE.md, .cursorrules, copilot-instructions.md),这是最聪明的「借力」策略。
记忆系统的核心问题是「信噪比」。DeerFlow 2 的置信度评分机制解决了「记太多无用信息」的问题;Gemini CLI 的 JIT 发现解决了「预加载太多不相关上下文」的问题。对于 PM,选择记忆方案时要考虑:你的用户是「高频短对话」(需要跨会话记忆)还是「低频长对话」(需要上下文压缩)?
Agent 拥有执行代码和操作文件的能力,安全机制决定了这种能力的边界。从最宽松到最严格,6 个产品构成了完整的安全谱系。
6 个产品的安全设计哲学可以排列成从「信任用户」到「零信任」的谱系:
| 技术 | 使用产品 | 隔离级别 | 说明 |
|---|---|---|---|
Apple Seatbeltsandbox-exec |
Codex Gemini | 进程级 | macOS 原生沙箱。通过 profile 文件定义允许的系统调用、文件路径、网络访问 |
| Docker 容器 | Codex Gemini DeerFlow OpenClaw | 容器级 | 最常用的隔离方案。完整文件系统 + 网络隔离,跨平台 |
gVisor runsc |
Gemini | 用户态内核 | Google 开源的用户态 Linux 内核。拦截所有系统调用,提供最强的隔离能力 |
Bubblewrap bwrap |
Codex | 进程级 | Linux 轻量沙箱,用于 Flatpak。命名空间隔离,启动快 |
| LXC/LXD | Gemini | 系统容器 | 完整 Linux 系统容器,比 Docker 更接近虚拟机 |
| K8s Pod | DeerFlow | 集群级 | 生产环境大规模隔离,自动扩缩容 |
| Apple Container | DeerFlow | 容器级 | macOS 原生容器(自动检测环境后选用) |
| execve(2) 拦截 | Codex | 系统调用级 | Shell Tool MCP 拦截每个 execve 调用,知道每个执行程序的完整路径。最底层的安全机制 |
| 产品 | Full Auto 模式 | 默认模式 | 可配置性 |
|---|---|---|---|
| Codex CLI | 完全禁网 (defense-in-depth) | 允许网络 | 通过审批模式间接控制 |
| Gemini CLI | 取决于沙箱 profile | 允许网络 | 6 种 profile (permissive/strict x open/proxied/blocked) |
| DeerFlow 2 | 沙箱内无外网 | 主进程有网络 | Docker network 配置 |
| Claude Code | 允许网络 | 允许网络 | 无内置网络限制 |
| OpenCode | 允许网络 | 允许网络 | 无内置网络限制 |
| OpenClaw | 允许网络 | 允许网络 | 无默认网络限制 |
Codex CLI 的 execve(2) 拦截是最底层的安全机制:它不依赖沙箱或容器,而是在系统调用级别知道每个被执行程序的完整路径。这意味着即使攻击者绕过了所有上层防护,execve 拦截仍然能阻止未授权的程序执行。
Gemini CLI 的 gVisor 是最强隔离:它运行一个用户态 Linux 内核,拦截所有系统调用并在用户空间实现。这比 Docker(共享宿主内核)安全得多,但性能开销也更大。
安全性和易用性永远是 tradeoff:Codex CLI Full Auto 的完全禁网使得无法在自动化模式下调用外部 API;OpenClaw 的开放模式使得初学者可以快速上手但面临安全风险。没有绝对正确的选择,取决于使用场景。
安全架构直接影响产品的目标用户群。Codex CLI 的多层沙箱面向企业和安全敏感场景;OpenClaw 的开放模式面向个人开发者和创客。PM 在设计安全策略时,核心问题是「你的用户出了安全事故后,谁来承担责任?」-- 如果是平台承担(SaaS),必须严格;如果是用户自担(开源 CLI),可以宽松。
单 Agent 能力有上限,多 Agent 协作是突破天花板的关键。但不同产品对「多 Agent」的理解截然不同。
| 产品 | 多 Agent 模式 | 最大并发 | 超时 | 隔离级别 |
|---|---|---|---|---|
| Claude Code | Sub-Agent (Agent tool) + Agent Team(/agent-team 命名团队,worktree 隔离并行) |
无硬限制 | 无 | Sub-Agent:独立上下文窗口,共享文件系统;Agent Team:每成员独立 git worktree(代码级隔离),Lead Agent 协调合并 |
| Codex CLI | Sub-Agent (experimental) | 无硬限制 | 无 | 独立上下文 |
| Gemini CLI | 内置专家子代理 (4 种) | 4 个内置 | 无 | 独立上下文窗口 + 独立工具集 |
| OpenCode | Task Agent | 无硬限制 | 无 | 独立上下文 |
| DeerFlow 2 | Lead + Sub-Agents | 3 个 sub-agents | 15 分钟 | 独立上下文 + 独立线程 |
| OpenClaw | Router + Isolated Agents | 无硬限制 | 可配置 | 完全隔离(独立 workspace + session + tools) |
大多数编码 Agent 用简单的 Sub-Agent 模式(Claude Code, OpenCode, Codex CLI),因为编码场景的任务分解相对明确:一个主 Agent 负责全局决策,Sub-Agent 负责局部调查或执行。
DeerFlow 2 的 Lead Agent + 中间件链是最复杂但最可扩展的,11 层中间件(认证/限流/日志/缓存/去重...)使得每一层都可以独立替换和扩展。
OpenClaw 的 Router 模式最适合「多人格多任务」场景:每个 Agent 有完全独立的 workspace、session 和工具集,通过 sessions_spawn 和 sessions_send 进行跨 Agent 通信。这不是编码工具的「子任务委派」,而是多个独立 Agent 的协作网络。
Gemini CLI 的 4 个内置专家子代理是一种折中方案:不像 Sub-Agent 那样完全通用,而是预定义了 4 种专家角色(代码调查/CLI帮助/通用/浏览器),每个角色有针对性的工具集和上下文。
多 Agent 的核心产品决策是「隔离 vs 共享」的 tradeoff。隔离度越高(OpenClaw),Agent 间越安全但信息传递成本越大;共享度越高(Claude Code),信息流通越快但上下文污染风险越大。对于 PM,关键是理解用户的任务是「一个大任务分解为子任务」(用 Sub-Agent)还是「多个独立任务并行」(用 Router 模式)。
可扩展性决定了产品的生命力。MCP 协议已成为事实标准,但各产品的扩展体系远不止 MCP。
| 产品 | MCP 角色 | 传输协议 | OAuth | 工具过滤 | 独特能力 |
|---|---|---|---|---|---|
| Claude Code | Client | stdio, SSE | 无 | 无 | -- |
| Codex CLI | Client + Server | stdio, HTTP | 有 | 白/黑名单 | 双向 MCP(可作为 Server 被其他工具调用) |
| Gemini CLI | Client | stdio, SSE, HTTP | 有 | include-tools |
DiscoveredMCPTool 包装层,统一工具接口 |
| OpenCode | Client | stdio, SSE | 无 | 无 | -- |
| DeerFlow 2 | Client | stdio, SSE, HTTP | 有 (client_credentials) | enabled 开关 |
嵌入式 Client(直接在 Python 中使用) |
| OpenClaw | Client | stdio | 无 | 无 | -- |
| 扩展层 | Claude Code | Codex CLI | Gemini CLI | OpenCode | DeerFlow 2 | OpenClaw |
|---|---|---|---|---|---|---|
| Hooks / 生命周期 | PreToolUse, PostToolUse, Notification, Stop (4 事件) | -- | 11 事件 (onStartup, onShutdown, onQuery, onResponse...) | -- | LangGraph callbacks | -- |
| Skills / 命令 | Custom Slash Commands (/init-project 等) | Feature Flags | Skills + Custom Commands + Extensions | Custom Commands (.md 文件) | 16 内建 Skills | 13,729+ ClawHub 社区技能 |
| MCP | Client | Client + Server | Client | Client | Client | Client |
| 插件系统 | -- | Shell Tool MCP (可扩展) | Extensions Gallery | -- | Skills-as-Markdown | Plugins (npm 包) |
| 规则引擎 | CLAUDE.md rules/ | AGENTS.md | Policy Engine (TOML) | contextPaths | SOUL.md | AGENTS.md + SOUL.md |
| 生态规模 | 中(社区 MCP) | 中 | 大(Extensions Gallery) | 小 | 中 | 最大(13,729+ ClawHub) |
onStartup / onShutdown -- 生命周期onQuery / onResponse -- 消息拦截onToolCall / onToolResult -- 工具前后onError -- 错误处理onFileChange -- 文件变更onSessionStart / onSessionEnd -- 会话管理onContextUpdate -- 上下文变更PreToolUse -- 工具调用前(可拦截/修改)PostToolUse -- 工具调用后(可注入信息)Notification -- 通知事件Stop -- Agent 停止前Gemini CLI 的扩展体系最全面,5 层扩展(Extensions + Skills + Hooks + Commands + MCP)覆盖了从生命周期到工具到 UI 的所有扩展点。11 个 Hook 事件是所有产品中最多的,使得第三方可以深度定制行为。
OpenClaw 的 ClawHub 生态最大(13,729+ 社区技能),因为 SKILL.md 的 Markdown 定义方式极大降低了贡献门槛 -- 不需要会编程,只需要写 Markdown 就能定义新工具。
Codex CLI 的 MCP 双向能力是独家的:它不仅是 MCP Client(消费其他 MCP Server 的工具),还可以作为 MCP Server 被其他工具调用。这意味着你可以在 Claude Code 中通过 MCP 调用 Codex CLI 的能力。
Claude Code 的 4 个 Hook + MCP 虽然数量少,但遵循 80/20 原则:PreToolUse 和 PostToolUse 两个钩子就覆盖了 80% 的扩展需求(权限控制、日志记录、信息注入)。Shell 脚本实现意味着零依赖,任何语言都可以写 Hook。
扩展体系的核心产品决策是「平台化 vs 专精化」。Gemini CLI 和 OpenClaw 走平台路线,提供丰富的扩展点吸引第三方生态;Claude Code 走专精路线,用少量但关键的扩展点保持核心体验的一致性。PM 需要考虑:你的产品是「操作系统」(需要生态)还是「工具」(需要精简)?