<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OpenAI on 记录点滴 - 分享</title><link>https://www.iminling.com/tags/openai/</link><description>Recent content in OpenAI on 记录点滴 - 分享</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>iminling.com</copyright><lastBuildDate>Fri, 10 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.iminling.com/tags/openai/index.xml" rel="self" type="application/rss+xml"/><item><title>Codex 也能定义 Agent：和 Claude Code Agent 到底差在哪</title><link>https://www.iminling.com/ai/codex-vs-claude-agent-comparison/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://www.iminling.com/ai/codex-vs-claude-agent-comparison/</guid><description>&lt;img src="https://images.iminling.com/app/hide.php?key=Q1FHanhZanRvRjVCN2M2R01GVmEyZ1J2MDZ4RXlnTGtqTzVQRGhwdUNKbGVtd0Era1hoSEt3NEJuK1ZrUU40YzJ5YWxzTDA9" alt="Featured image of post Codex 也能定义 Agent：和 Claude Code Agent 到底差在哪" /&gt;&lt;h1 id="codex-也能定义-agent和-claude-code-agent-到底差在哪"&gt;Codex 也能定义 Agent：和 Claude Code Agent 到底差在哪
&lt;/h1&gt;&lt;p&gt;最近看一些 agent 对比资料时，我发现一个很常见但已经过时的说法：&lt;strong&gt;Codex 不能定义 agent，Claude Code 才可以。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个结论现在已经不准确了。&lt;/p&gt;
&lt;p&gt;OpenAI 官方已经单独写了 Codex 的 &lt;code&gt;subagents&lt;/code&gt; 文档，明确说明可以在 &lt;code&gt;~/.codex/agents/&lt;/code&gt; 或项目内 &lt;code&gt;.codex/agents/&lt;/code&gt; 定义自定义 agent，而且是用独立的 TOML 文件来配置。&lt;/p&gt;
&lt;p&gt;所以现在更值得问的问题，已经不是“Codex 能不能定义 agent”，而是：&lt;strong&gt;Codex 和 Claude Code 都能做 agent 之后，它们的设计重点到底差在哪。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你之前已经看过我写的 AI 编程 CLI 总览文和 skills 对比文，这篇可以理解成下一层专题：它不再泛谈工具选型，而是专门讲 agent 这一层机制到底怎么分化。&lt;/p&gt;
&lt;h2 id="写在前面"&gt;写在前面
&lt;/h2&gt;&lt;p&gt;先给结论。&lt;/p&gt;
&lt;p&gt;Codex 和 Claude Code 现在都支持自定义 agent，但两边的重心并不一样。&lt;/p&gt;
&lt;p&gt;Claude Code 的 subagent，更像是一个已经深度融入主工作流的“专门分身系统”。它强调自动委派、上下文隔离、工具边界、权限模式、skills 注入、后台运行、worktree 隔离和持久记忆。&lt;/p&gt;
&lt;p&gt;Codex 的 subagent，则更像是一个“可编排的显式多代理机制”。它同样支持自定义 agent，也支持模型、沙箱、MCP、skills 配置继承，但官方文档最强调的点是：&lt;strong&gt;只有在你明确要求时，Codex 才会 spawn subagent。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;换句话说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 更像“主会话会主动用 agent 帮你拆任务”&lt;/li&gt;
&lt;li&gt;Codex 更像“你明确下令后，它再把任务派给子 agent”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是谁强谁弱的问题，而是两种很不一样的交互哲学。&lt;/p&gt;
&lt;h2 id="核心概念"&gt;核心概念
&lt;/h2&gt;&lt;p&gt;虽然大家平时都习惯说“agent”，但两边官方文档里更准确的术语其实都是 &lt;strong&gt;subagent&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它们共同解决的是一类问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主对话不想被大段搜索结果、日志、文件内容淹没&lt;/li&gt;
&lt;li&gt;某一类任务会反复出现，希望有固定的专用提示词和工具边界&lt;/li&gt;
&lt;li&gt;希望把研究、审查、修改、排查这些工作拆成不同角色处理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从这个角度看，Codex 和 Claude Code 的目标很像，都是把“一个大助手”拆成“一个主会话 + 多个专门助手”。&lt;/p&gt;
&lt;p&gt;但一旦继续往下看，就会发现它们在五个地方分化得很明显：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定义文件怎么写&lt;/li&gt;
&lt;li&gt;主会话什么时候会委派&lt;/li&gt;
&lt;li&gt;子 agent 能拿到哪些能力&lt;/li&gt;
&lt;li&gt;配置和上下文怎么继承&lt;/li&gt;
&lt;li&gt;工程化边界做到什么程度&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="先看一张总表"&gt;先看一张总表
&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;官方术语&lt;/td&gt;
&lt;td&gt;Subagents&lt;/td&gt;
&lt;td&gt;Subagents / custom agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;定义位置&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.claude/agents/&lt;/code&gt;、&lt;code&gt;.claude/agents/&lt;/code&gt;、&lt;code&gt;--agents&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.codex/agents/&lt;/code&gt;、&lt;code&gt;.codex/agents/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;定义格式&lt;/td&gt;
&lt;td&gt;Markdown + YAML frontmatter + Markdown body&lt;/td&gt;
&lt;td&gt;TOML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;最核心必填项&lt;/td&gt;
&lt;td&gt;&lt;code&gt;name&lt;/code&gt;、&lt;code&gt;description&lt;/code&gt;，正文作为 system prompt&lt;/td&gt;
&lt;td&gt;&lt;code&gt;name&lt;/code&gt;、&lt;code&gt;description&lt;/code&gt;、&lt;code&gt;developer_instructions&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;默认委派方式&lt;/td&gt;
&lt;td&gt;Claude 可根据 &lt;code&gt;description&lt;/code&gt; 自动 delegate，也可显式指定&lt;/td&gt;
&lt;td&gt;官方明确写明：只有你显式要求时才会 spawn subagent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;工具控制&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tools&lt;/code&gt;、&lt;code&gt;disallowedTools&lt;/code&gt;、&lt;code&gt;permissionMode&lt;/code&gt; 很细&lt;/td&gt;
&lt;td&gt;以 &lt;code&gt;sandbox_mode&lt;/code&gt;、父会话审批/沙箱继承为主&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP 支持&lt;/td&gt;
&lt;td&gt;支持按 subagent 配 &lt;code&gt;mcpServers&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;支持按 custom agent 配 &lt;code&gt;mcp_servers&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;skills 关系&lt;/td&gt;
&lt;td&gt;subagent 可显式加载 &lt;code&gt;skills&lt;/code&gt;，且不继承父会话 skills&lt;/td&gt;
&lt;td&gt;custom agent 可配 &lt;code&gt;skills.config&lt;/code&gt;，未写时继承父会话&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;后台运行&lt;/td&gt;
&lt;td&gt;支持 &lt;code&gt;background: true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;官方页重点在线程与并发，不是固定后台 agent 配置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;仓库隔离&lt;/td&gt;
&lt;td&gt;支持 &lt;code&gt;isolation: worktree&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;官方 subagents 页未把 worktree 隔离作为 custom agent 核心字段&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;持久记忆&lt;/td&gt;
&lt;td&gt;支持 &lt;code&gt;memory: user/project/local&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;官方 subagents 页未把持久记忆列为 custom agent 核心字段&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;嵌套限制&lt;/td&gt;
&lt;td&gt;官方明确：subagent 不能再 spawn subagent&lt;/td&gt;
&lt;td&gt;通过 &lt;code&gt;agents.max_depth&lt;/code&gt; 控制，默认 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只看表格，最醒目的差异其实就两条：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 更强调“单个 subagent 的能力边界”&lt;/li&gt;
&lt;li&gt;Codex 更强调“多 agent 调度时的显式控制和并发参数”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="定义方式claude-更像写角色卡codex-更像写配置文件"&gt;定义方式：Claude 更像写角色卡，Codex 更像写配置文件
&lt;/h2&gt;&lt;p&gt;这是两边最直观的区别。&lt;/p&gt;
&lt;h3 id="claude-codemarkdown-文件就是-agent-本体"&gt;Claude Code：Markdown 文件就是 agent 本体
&lt;/h3&gt;&lt;p&gt;Claude Code 的 subagent 文件本质上是一段带 frontmatter 的 Markdown。前面写元信息，后面整段正文就是这个 subagent 的 system prompt。&lt;/p&gt;
&lt;p&gt;官方支持的字段很多，常用的包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;description&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tools&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;disallowedTools&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;permissionMode&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;maxTurns&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcpServers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hooks&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;memory&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;background&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;effort&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isolation&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;color&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;initialPrompt&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种设计的好处是很直观。&lt;/p&gt;
&lt;p&gt;你在定义 Claude subagent 时，脑子里的问题往往是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个角色是谁&lt;/li&gt;
&lt;li&gt;它该在什么时候被调用&lt;/li&gt;
&lt;li&gt;它能用哪些工具&lt;/li&gt;
&lt;li&gt;它应该遵守什么规则&lt;/li&gt;
&lt;li&gt;它需要什么附加技能和记忆&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，Claude 的 subagent 文件天然更接近“角色说明书”。&lt;/p&gt;
&lt;h3 id="codextoml-更偏配置驱动"&gt;Codex：TOML 更偏配置驱动
&lt;/h3&gt;&lt;p&gt;Codex 的 custom agent 是 TOML 文件。官方页目前明确列出的必填项是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;description&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;developer_instructions&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;常见可选项包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nickname_candidates&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model_reasoning_effort&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sandbox_mode&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp_servers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;skills.config&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方还说明，custom agent 文件可以承载其他受支持的 &lt;code&gt;config.toml&lt;/code&gt; 键。&lt;/p&gt;
&lt;p&gt;这说明 Codex 的思路不是“正文 prompt 外挂一点配置”，而是更明显地把 custom agent 当成一种&lt;strong&gt;派生 session 配置层&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;换句话说，Claude 更像“定义一个专门助手”；Codex 更像“定义一种被 spawn 出来的工作模式”。&lt;/p&gt;
&lt;h2 id="委派机制这可能是两边最大的分水岭"&gt;委派机制：这可能是两边最大的分水岭
&lt;/h2&gt;&lt;p&gt;如果只允许我挑一个最值得写进文章标题下方的差异，那我会选这一条。&lt;/p&gt;
&lt;h3 id="claude-code可以自动委派"&gt;Claude Code：可以自动委派
&lt;/h3&gt;&lt;p&gt;Claude Code 官方文档明确写到，Claude 会根据每个 subagent 的 &lt;code&gt;description&lt;/code&gt; 判断什么时候把任务 delegate 给它。&lt;/p&gt;
&lt;p&gt;这意味着 Claude 的 agent 系统并不只是“你手动点名才会用”，而是会融入主会话自己的决策流程。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码库搜索任务，Claude 可能自动丢给 &lt;code&gt;Explore&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;计划模式里的研究任务，可能自动丢给 &lt;code&gt;Plan&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;复杂多步骤操作，可能自动丢给 &lt;code&gt;general-purpose&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自定义 subagent 也可以走同样路线，只要 &lt;code&gt;description&lt;/code&gt; 写得足够清楚。&lt;/p&gt;
&lt;h3 id="codex只有显式要求才会-spawn"&gt;Codex：只有显式要求才会 spawn
&lt;/h3&gt;&lt;p&gt;Codex 这边官方表述更直接：&lt;strong&gt;Codex only spawns subagents when you explicitly ask it to.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这句话非常关键，因为它直接决定了使用心智。&lt;/p&gt;
&lt;p&gt;在 Codex 里，subagent 更像一个你主动调度的资源，而不是主会话会自动替你判断的分身系统。&lt;/p&gt;
&lt;p&gt;这会带来两种体验差异：&lt;/p&gt;
&lt;p&gt;第一种差异是可控性更高。&lt;/p&gt;
&lt;p&gt;你想并行开几个、让谁做什么、何时停止，基本都更偏显式。&lt;/p&gt;
&lt;p&gt;第二种差异是自动化程度更低。&lt;/p&gt;
&lt;p&gt;如果你习惯 Claude 那种“我只描述目标，系统自己判断要不要起 agent”的方式，切到 Codex 时会明显感觉它更依赖你的调度意图。&lt;/p&gt;
&lt;h2 id="继承规则claude-更强调边界codex-更强调沿父会话继承"&gt;继承规则：Claude 更强调边界，Codex 更强调沿父会话继承
&lt;/h2&gt;&lt;p&gt;两边都支持“没写的配置从父会话继承”，但重点不太一样。&lt;/p&gt;
&lt;h3 id="claude-code-的继承重点"&gt;Claude Code 的继承重点
&lt;/h3&gt;&lt;p&gt;Claude Code 文档里有几个点特别值得注意。&lt;/p&gt;
&lt;p&gt;第一，&lt;code&gt;tools&lt;/code&gt; 如果省略，就继承父会话工具；&lt;code&gt;disallowedTools&lt;/code&gt; 则是在继承后的工具集上继续扣减。&lt;/p&gt;
&lt;p&gt;第二，&lt;code&gt;model&lt;/code&gt; 默认是 &lt;code&gt;inherit&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;第三，&lt;code&gt;skills&lt;/code&gt; &lt;strong&gt;不会&lt;/strong&gt;从父会话自动继承。只有你在 subagent 文件里显式写了 &lt;code&gt;skills:&lt;/code&gt;，它才会在启动时把这些 skill 的内容直接注入上下文。&lt;/p&gt;
&lt;p&gt;第四，项目级 subagent 支持从当前工作目录向上发现 &lt;code&gt;.claude/agents/&lt;/code&gt;，但 &lt;code&gt;--add-dir&lt;/code&gt; 只给文件访问权限，不会顺带扫描 subagent 配置。&lt;/p&gt;
&lt;p&gt;这套规则的核心味道很明显：Claude 很在意“一个 subagent 拿到什么，不拿到什么”。&lt;/p&gt;
&lt;h3 id="codex-的继承重点"&gt;Codex 的继承重点
&lt;/h3&gt;&lt;p&gt;Codex 当前官方页对继承的描述也很清楚，但口味更偏“子 session 叠层”。&lt;/p&gt;
&lt;p&gt;它明确写到，custom agent 里未指定的可选项会从父 session 继承。更重要的是，spawn 子 agent 时，父 turn 当下的 runtime overrides 也会重新套用，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;审批设置&lt;/li&gt;
&lt;li&gt;沙箱设置&lt;/li&gt;
&lt;li&gt;交互过程中临时改过的运行参数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--yolo&lt;/code&gt; 这类高权限运行状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着 Codex 的 custom agent 虽然可以自己声明一些默认配置，但真正运行时，它依然深受当前父会话状态影响。&lt;/p&gt;
&lt;p&gt;这种设计很适合“当前会话就是一个大工作流控制器”的用法。&lt;/p&gt;
&lt;h2 id="能力边界claude-code-在-subagent-这层给的旋钮更多"&gt;能力边界：Claude Code 在 subagent 这层给的旋钮更多
&lt;/h2&gt;&lt;p&gt;如果你关心的不是“能不能开多个 agent”，而是“每个 agent 能不能像单独岗位一样严格收口”，那 Claude Code 这边会更有吸引力。&lt;/p&gt;
&lt;h3 id="claude-code-能直接在-subagent-层定义的东西更多"&gt;Claude Code 能直接在 subagent 层定义的东西更多
&lt;/h3&gt;&lt;p&gt;Claude 不只是让你选模型和工具，它还允许你直接在 subagent 里定义：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;权限模式 &lt;code&gt;permissionMode&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;生命周期 &lt;code&gt;hooks&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;持久记忆 &lt;code&gt;memory&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;后台运行 &lt;code&gt;background&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;工作目录隔离 &lt;code&gt;isolation: worktree&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;effort 等级&lt;/li&gt;
&lt;li&gt;初始提示 &lt;code&gt;initialPrompt&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着一个 Claude subagent 可以非常像“仓库里的正式岗位”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码审查员只能读文件&lt;/li&gt;
&lt;li&gt;安全检查员只能用有限工具&lt;/li&gt;
&lt;li&gt;某个 agent 永远后台跑&lt;/li&gt;
&lt;li&gt;某个 agent 永远在临时 worktree 里改代码&lt;/li&gt;
&lt;li&gt;某个 agent 还有自己的长期记忆目录&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="codex-的-custom-agent-更像核心运行参数覆写"&gt;Codex 的 custom agent 更像核心运行参数覆写
&lt;/h3&gt;&lt;p&gt;Codex 当然也支持重要能力开关，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sandbox_mode&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp_servers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model_reasoning_effort&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;skills.config&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但从官方页当前呈现出来的重点看，它更像是在告诉你：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个 agent 用什么模型&lt;/li&gt;
&lt;li&gt;推理强度多高&lt;/li&gt;
&lt;li&gt;运行在什么沙箱里&lt;/li&gt;
&lt;li&gt;接哪些 MCP&lt;/li&gt;
&lt;li&gt;技能配置怎么带进去&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，Codex 的 custom agent 已经足够实用，但它在“岗位制度化”这一层，没有 Claude Code 展开得那么细。&lt;/p&gt;
&lt;h2 id="工程化能力claude-更像内建工作流codex-更像多线程调度器"&gt;工程化能力：Claude 更像内建工作流，Codex 更像多线程调度器
&lt;/h2&gt;&lt;p&gt;这部分特别适合团队用户看。&lt;/p&gt;
&lt;h3 id="claude-code-的工程化味道"&gt;Claude Code 的工程化味道
&lt;/h3&gt;&lt;p&gt;Claude Code 的 subagent 文档会让你明显感觉到，它不是只想解决“多开几个分身”，而是要把 subagent 做进整个 CLI 工作流里。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/agents&lt;/code&gt; 可以直接图形化管理&lt;/li&gt;
&lt;li&gt;支持 project / user / managed / plugin 多层来源&lt;/li&gt;
&lt;li&gt;同名 agent 有明确优先级覆盖规则&lt;/li&gt;
&lt;li&gt;支持后台任务&lt;/li&gt;
&lt;li&gt;支持 worktree 隔离&lt;/li&gt;
&lt;li&gt;支持 persistent memory&lt;/li&gt;
&lt;li&gt;支持和 skills、hooks、MCP 联动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种设计非常适合长时间维护的团队仓库。&lt;/p&gt;
&lt;p&gt;因为团队真正需要的，不只是“多一个 agent”，而是“这个 agent 在组织里怎么分发、怎么收权限、怎么和现有流程接起来”。&lt;/p&gt;
&lt;h3 id="codex-的工程化味道"&gt;Codex 的工程化味道
&lt;/h3&gt;&lt;p&gt;Codex 这边更突出的，是并发和深度控制。&lt;/p&gt;
&lt;p&gt;官方页给了统一的 &lt;code&gt;[agents]&lt;/code&gt; 配置段，用来控制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;agents.max_threads&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agents.max_depth&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agents.job_max_runtime_seconds&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中官方页写得很明确：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;agents.max_threads&lt;/code&gt; 默认是 &lt;code&gt;6&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agents.max_depth&lt;/code&gt; 默认是 &lt;code&gt;1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明 Codex 对 subagent 的定位，很大一部分就是“可控的并行 worker 体系”。&lt;/p&gt;
&lt;p&gt;它非常适合这种场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把一堆独立检查任务并发跑出去&lt;/li&gt;
&lt;li&gt;做批量审查&lt;/li&gt;
&lt;li&gt;做一批对象的一致性核对&lt;/li&gt;
&lt;li&gt;让多个 worker 收集证据，再由主线程统一汇总&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以如果你更常见的任务是“把一个复杂问题拆成多个并行检查项”，Codex 的这套设计会很顺手。&lt;/p&gt;
&lt;h2 id="一个很实际的判断谁更适合什么人"&gt;一个很实际的判断：谁更适合什么人
&lt;/h2&gt;&lt;p&gt;如果你平时的使用方式更接近下面这种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我只说目标，不太想手动编排&lt;/li&gt;
&lt;li&gt;我希望系统自己判断什么时候该起 agent&lt;/li&gt;
&lt;li&gt;我希望 agent 有明确的工具边界、权限模式和长期角色定义&lt;/li&gt;
&lt;li&gt;我希望它和项目里的 skills、hooks、MCP、worktree 一起协同&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 Claude Code 的 subagent 机制通常会更贴手。&lt;/p&gt;
&lt;p&gt;如果你的使用方式更接近下面这种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我要明确地控制何时 spawn 子 agent&lt;/li&gt;
&lt;li&gt;我要按任务拆很多并行 worker&lt;/li&gt;
&lt;li&gt;我要给不同子任务设置不同模型或沙箱&lt;/li&gt;
&lt;li&gt;我更关心线程数、深度、批量 job 这种编排能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 Codex 的 subagent 机制会更符合习惯。&lt;/p&gt;
&lt;h2 id="常见问题与解决方案"&gt;常见问题与解决方案
&lt;/h2&gt;&lt;h3 id="问题一现在还能说-codex-不支持自定义-agent-吗"&gt;问题一：现在还能说 Codex 不支持自定义 agent 吗
&lt;/h3&gt;&lt;p&gt;不建议这么说。&lt;/p&gt;
&lt;p&gt;更准确的说法应该是：&lt;strong&gt;Codex 已经支持自定义 agent / subagents，但它和 Claude Code 的定义方式、委派机制和工程化边界不一样。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果继续把“Codex 不支持 agent”写进对比文，今天已经容易误导读者。&lt;/p&gt;
&lt;h3 id="问题二claude-code-和-codex-的-agent能不能简单理解成同一种东西"&gt;问题二：Claude Code 和 Codex 的 agent，能不能简单理解成同一种东西
&lt;/h3&gt;&lt;p&gt;不能完全这样理解。&lt;/p&gt;
&lt;p&gt;它们当然都属于“主会话委派子助手”的范畴，但 Claude 更强调自动委派和子 agent 的独立岗位边界，Codex 更强调显式调度和并发执行。&lt;/p&gt;
&lt;p&gt;所以它们属于同一类能力，但不是同一种产品哲学。&lt;/p&gt;
&lt;h3 id="问题三如果我要给团队写一套-agent先选哪边更省事"&gt;问题三：如果我要给团队写一套 agent，先选哪边更省事
&lt;/h3&gt;&lt;p&gt;如果你的重点是“项目里沉淀一套长期可维护的角色体系”，Claude Code 往往更省事，因为字段更完整，和项目工作流结合得也更深。&lt;/p&gt;
&lt;p&gt;如果你的重点是“把问题拆成多个并发 worker 来跑”，Codex 往往更顺手，因为它把并发、深度和 job 时限这些控制点摆得更前面。&lt;/p&gt;
&lt;h3 id="问题四agent-和-skills-是一回事吗"&gt;问题四：agent 和 skills 是一回事吗
&lt;/h3&gt;&lt;p&gt;不是。&lt;/p&gt;
&lt;p&gt;不管在 Claude Code 还是 Codex 里，skills 更像可复用知识包或流程包；agent 更像执行这些事情的专门角色。&lt;/p&gt;
&lt;p&gt;这也是为什么我更建议把它们拆开理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;skills 解决“这件事怎么稳定复用”&lt;/li&gt;
&lt;li&gt;agent 解决“由谁、以什么边界、在什么上下文里去做”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关于三家工具的 skills 差异，可以接着看我前面那篇 skills 对比文；如果你想单独理解 &lt;code&gt;CODEX_HOME&lt;/code&gt; 为什么会影响 Codex 的 skills、配置和状态目录，也可以再看那篇 &lt;code&gt;CODEX_HOME&lt;/code&gt; 专题。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;很多旧资料还停留在“Claude Code 有 agent，Codex 没有”的阶段，但现在这个判断已经落后了。&lt;/p&gt;
&lt;p&gt;今天更准确的结论应该是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Codex 可以定义自定义 agent&lt;/strong&gt;，而且 OpenAI 已经给了官方 &lt;code&gt;subagents&lt;/code&gt; 文档&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code 也可以定义 subagent&lt;/strong&gt;，而且工程化边界展开得更完整&lt;/li&gt;
&lt;li&gt;真正的差异不在“有没有”，而在“怎么定义、何时委派、边界收得多细、工作流整合有多深”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果把一句话压缩到最短：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Code 更像带权限、记忆、skills、worktree 的角色化 subagent 系统&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codex 更像由你显式调度的多线程 subagent 编排系统&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也正因为如此，后面再看到有人把 Codex 写成“不能定义 agent”，你就要多留一个心眼了：问题很可能不是结论本身，而是资料已经过期了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;参考资料：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://developers.openai.com/codex/subagents" target="_blank" rel="noopener"
&gt;OpenAI Codex Docs: Subagents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://code.claude.com/docs/en/sub-agents" target="_blank" rel="noopener"
&gt;Anthropic Claude Code Docs: Create custom subagents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://code.claude.com/docs/en/skills" target="_blank" rel="noopener"
&gt;Anthropic Claude Code Docs: Skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://code.claude.com/docs/en/commands" target="_blank" rel="noopener"
&gt;Anthropic Claude Code Docs: Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://code.claude.com/docs/en/claude-directory" target="_blank" rel="noopener"
&gt;Anthropic Claude Code Docs: Explore the .claude directory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.iminling.com/ai/ai-cli-tools-comparison/" &gt;AI 编程 CLI 工具怎么选：Claude Code、Codex CLI 与 OpenCode 对比&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.iminling.com/ai/ai-cli-skills-support-comparison/" &gt;Claude Code、Codex、OpenCode 对 Skills 的支持现状对比&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.iminling.com/ai/codex-home-guide/" &gt;Codex 的 CODEX_HOME 是什么？会影响哪些目录和行为&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>