Codex × Claude Code 双轨并行——一个项目两套 AI 工具Windows 10/11 · Codex CLI v0.130.0 · Claude Code CLI v2.0 · DeepSeek V4 Pro · dsv4-cc-proxy-tray · 2026-05-31 · 常青一、这篇教程解决什么问题一句话定位Codex 和 Claude Code 不是二选一的竞品——Codex 配置极简、token 省、干活利索Claude Code 有 Skills/Hooks/Routines 系统生态。把两个同时装在一个项目里按场景分工你得到的是一个超级开发环境。这篇教你配置隔离、场景分工、交叉验证的全套方案。跳读指南只想看什么时候用哪个的直接跳到 第六节 场景分工决策表。想抄.gitignore和文件布局的跳到 第五节 Git 仓库文件布局。想知道怎么让两个工具不打架的跳到 第三节 配置隔离方案。想学交叉验证的跳到 第七节 交叉验证工作流。遇到冲突的跳到 Debug 章节。阅读前提已完成第 0 篇安装Codex 能正常启动和干活已完成 Claude Code 基础安装和 DeepSeek 配置详见 系列第 0 篇dsv4-cc-proxy-tray 已启动curl http://localhost:16889/health返回{status:ok}了解 Codexconfig.toml基础详见 [一config.toml 深度配置](新手上路一Codex config.toml 深度配置——模型供应商、Profile 与沙箱机制.md)读完能得到什么理解 Codex 和 Claude Code 的本质差异——不是谁更好而是什么时候用谁一份完整的双配置隔离方案——两个工具的配置文件和平共处互不干扰AGENTS.md 和 CLAUDE.md 的单一真相来源内容复用策略——只维护一份共享内容一套可落地的场景分工决策表——从项目初始化到 CI/CD每个场景该用谁交叉验证工作流——重要代码让两个 AI 各自审查交集采纳了解 dsv4-cc-proxy-tray 如何用一个代理同时服务两个工具的双协议路由二、为什么需要两套工具——不是奢侈是策略2.1 同一个 DeepSeek V4 Pro不同的性格两个工具都通过 dsv4-cc-proxy-tray 接入 DeepSeek V4 Pro底层模型完全相同。那差异在哪差异在系统层——Codex 和 Claude Code 各自构建的 system prompt 不同、工具定义不同、对话管理策略不同。结果同一个模型发出来的性格不同。维度Codex CLIClaude Code CLI推理风格GPT 式——直接、行动导向、少废话Anthropic 式——周密、解释充分、注重安全边界输出特征偏简洁倾向于快速给出代码偏详细倾向于先分析再写代码指令遵循把 AGENTS.md 当合同执行把 CLAUDE.md 当建议参考任务偏好快速增删改、脚手架、文件操作深度分析、多文件重构、安全审查token 效率高 3-4×渐进式加载 Skills/MCP低一次性加载全部 Skills把它想象成同一个引擎装了不同的变速箱——功率一样发力方式不同。2.2 功能矩阵互补能力Codex CLIClaude Code CLI配置复杂度★☆☆☆☆一个 TOML 打天下★★★★☆JSON 三层合并 Hooks SkillsSandbox 隔离★★★★★elevated/unelevated/WSL2 三模式★★☆☆☆权限模式 6 种无系统级沙箱行为控制instructions AGENTS.md developer_instructionsCLAUDE.md Skills Hooks CommandsMCP 生态配置简单社区 MCP bridgeECC 生态 156 技能配置灵活云端自动化❌ 无等价功能✅ Routines定时/API/Webhook 触发代码审查❌ 无系统级/review✅/review/ultrareview ECC code-reviewerIDE 支持VS Code / JetBrains有限 / TerminalVS Code / JetBrains / Desktop / WebCI/CD✅exec模式✅-p/--print模式成本可见性⚠️/context/status无 $✅/cost精确到 $0.0001token 效率★★★★★3-4×★★★☆☆模型路由✅ Profiles 系统结构化⚠️ 环境变量切换2.3 三个让你无法拒绝的理由理由一推理互补。同一个 promptCodex 偏能不能用Claude Code 偏该不该这样写。复杂决策用两个工具各跑一遍你得到两个视角。理由二功能互补。Codex 没有的Routines 云端自动化、/review代码审查、Hooks 自动化Claude Code 有。Claude Code 做不好的Windows Sandbox 三级隔离、极简配置、Profiles 一键切换Codex 有。理由三容灾备份。任何一个工具都有概率出问题——代理挂了、API 抽风、版本更新引入 bug。只装了一个出问题时你干等着。两个都装等于有了容灾。Reddit 上 500 开发者的共识“The smart move? Use both.” 一个 Claude Code 用户说得更直接“After a Claude outage left me shipping nothing, I added Codex.”三、配置隔离方案——两个工具和平共处3.1 谁的文件在哪C:\Users\用户名\ ├── .codex\ │ ├── config.toml ← Codex 用户级配置 │ ├── sessions\ ← 会话历史 │ └── model-catalog.json ← 模型元数据 │ ├── .claude\ │ ├── settings.json ← Claude Code 用户级配置 │ ├── settings.local.json ← 本地覆盖不提交 Git │ └── projects\ ← 会话历史和项目状态 │ └── 项目目录\ ├── .codex\ │ └── config.toml ← Codex 项目级配置可选 ├── .claude\ │ ├── settings.json ← Claude Code 项目级配置 │ └── settings.local.json ← 本地覆盖 ├── AGENTS.md ← Codex 项目指令 └── CLAUDE.md ← Claude Code 项目指令关键事实两个工具的配置文件完全独立——Codex 读.codex/config.tomlTOMLClaude Code 读.claude/settings.jsonJSON。不存在交叉读取不会互相覆盖。3.2 双工具完整配置——直接抄CodexC:\Users\用户名\.codex\config.tomlmodel deepseek-v4-flash model_provider deepseek model_reasoning_effort medium model_max_output_tokens 16000 model_auto_compact_token_limit 120000 developer_instructions 你是资深全栈开发者。回复使用简体中文。 [model_providers.deepseek] name DeepSeek (via proxy) base_url http://localhost:16889/v1 env_key DEEPSEEK_API_KEY wire_api responses [profiles.heavy] model deepseek-v4-pro model_reasoning_effort maxClaude CodeC:\Users\用户名\.claude\settings.json{env:{ANTHROPIC_BASE_URL:http://localhost:16889/v1/messages,ANTHROPIC_AUTH_TOKEN:sk-你的DeepSeek-API-Key,ANTHROPIC_MODEL:deepseek-v4-pro,ANTHROPIC_DEFAULT_OPUS_MODEL:deepseek-v4-pro,ANTHROPIC_DEFAULT_SONNET_MODEL:deepseek-v4-pro,ANTHROPIC_DEFAULT_HAIKU_MODEL:deepseek-v4-flash,ANTHROPIC_SMALL_FAST_MODEL:deepseek-v4-flash,API_TIMEOUT_MS:3000000},model:deepseek-v4-pro,permissions:{allow:[Bash(git:*),Bash(npm:*),Read,Write,Edit,Glob,Grep]}}两个关键差异Codex 的base_url是http://localhost:16889/v1Claude Code 的是http://localhost:16889/v1/messages——路径不同后面会讲为什么。Codex 从DEEPSEEK_API_KEY读 KeyClaude Code 从ANTHROPIC_AUTH_TOKEN读 Key——可以指向同一个值。3.3 环境变量统一管理# 在 PowerShell $PROFILE 中设置两个变量指向同一个 Key$env:DEEPSEEK_API_KEY sk-你的DeepSeek-API-Key$env:ANTHROPIC_AUTH_TOKEN sk-你的DeepSeek-API-Key两个环境变量指向同一个 DeepSeek API Key。DeepSeek 账户只有一个不需要两套 Key。3.4 警惕Codex 的迁移 Claude 配置陷阱Codex CLI 有一个已知的 bugGitHub issue #24515当它在项目目录中检测到.claude/settings.json时会弹出是否迁移 Claude 设置“的提示。如果点了是”Codex 会直接写入你的用户级~\.codex\config.toml可能覆盖你已经精心配好的设置。应对如果看到这个提示选**“否”**。两个工具的配置应该保持独立维护不需要迁移。四、AGENTS.md 与 CLAUDE.md——一个写两个用4.1 社区共识AGENTS.md 作为单一真相来源Codex 和 Claude Code 社区已形成共识AGENTS.md 应该作为共享规则的唯一主文件CLAUDE.md 通过引用 AGENTS.md 来复用内容。这样你只需要维护一份编码规范。AGENTS.md ← 主文件维护共享规则架构、技术栈、编码规范 ↑ │ Claude Code 通过 AGENTS.md 引用 │ CLAUDE.md ← 只写 Claude Code 专属内容Hooks/Skills/审查维度4.2 三区模型——什么写在哪┌─────────────────────────────────────────────────┐ │ 共享区AGENTS.md │ │ → 项目概述、技术栈、目录结构、编码规范 │ │ → 两个工具都需要的基础信息 │ ├─────────────────────────────────────────────────┤ │ Codex 专属AGENTS.md 中 #codex 章节 │ │ → Profiles 使用约定、exec 脚本说明 │ ├─────────────────────────────────────────────────┤ │ Claude Code 专属CLAUDE.md │ │ → Hooks 配置、Skill 使用约定、审查维度 │ │ → 开头写 AGENTS.md 引用共享内容 │ └─────────────────────────────────────────────────┘4.3 完整示例AGENTS.md主文件共享 Codex 专属--- # Codex 项目指令 --- ## 项目概述 - TODO APIFastAPI SQLite, Python 3.12 - 入口main.py测试tests/ ## 编码规范 - 所有函数写类型注解 - 异常不要裸 except - HTTP 请求加 timeout - commit message 格式类型: 简述 ## Codex 使用约定 - 日常用默认 ProfileFlash medium - 重构用 codex --profile heavy - 审查用 codex --profile reviewCLAUDE.md只写 Claude Code 专属# CLAUDE.md AGENTS.md ← 引用共享规则 ## Claude Code 专属 - 代码审查用 /review - 安全敏感改动跑 /security-review - Hooks提交前自动跑 ruff pytest - Worktree 命名feature/描述4.4 维护策略策略操作适合AGENTS.md 为主推荐共享内容只写在 AGENTS.mdCLAUDE.md 通过AGENTS.md引用100% 的场景手动双写共享部分两边都改不推荐容易漂移五、Git 仓库中的文件布局5.1 完整.gitignore规则# Codex .codex/sessions/ .codex/worktrees/ .codex/.sandbox/ .codex/.sandbox-secrets/ # .codex/config.toml —— 团队可共享 # Claude Code .claude/projects/ .claude/settings.local.json .claude/conversations/ .claude/sessions/ .claude/checkpoints/ # .claude/settings.json —— 团队可共享 # 通用 .env credentials.json *.pem *.key5.2 提交策略文件提交到 Git理由AGENTS.md✅ 必须提交团队共享的编码规范CLAUDE.md✅ 必须提交团队共享的 Claude Code 约定.codex/config.toml项目级⚠️ 团队决定MCP 列表可以共享.claude/settings.json项目级⚠️ 团队决定Hooks 配置可以共享.claude/settings.local.json❌ 绝不提交个人偏好.codex/sessions/❌临时会话数据.claude/projects/❌临时项目状态六、场景分工决策表6.1 完整决策表场景用谁为什么项目初始化 / 脚手架Codex极简配置一条命令开搞日常增删改单文件Codextoken 省 3-4×Flash 足够复杂重构跨多文件Claude CodeSkills 辅助擅长多文件协调代码审查PR ReviewClaude Code/review专门优化安全审查两个都跑交叉验证交集采纳快速代码片段CodexTUI 轻量交互数据库操作两者都可都支持 MCP server-postgresCI/CD 自动化Codexexec 模式 token 效率高云端定时任务Claude CodeCodex 无 Routines写测试用例Codex模式化任务Flash 够用复杂 DebugClaude Code深度推理根因分析架构设计Claude Code深度推理 200K context6.2 决策口诀开新项目 → Codex一条命令开搞 日常搬砖 → Codex快、省、直接 重构审查看架构 → Claude CodeSkills 加持深思熟虑 重要安全 → 两个都跑交叉验证花钱买安心 CI/CD → Codex exec少废话出结果 定时任务 → Claude Code RoutinesCodex 没这个6.3 典型一天的双工具节奏09:00 打开项目 → codex日常开发模式 10:30 复杂 bug → 切到 claude深度调试 11:00 bug 修完 → 回到 codex 继续开发 14:00 PR 需要审查 → claude → /review 15:00 关键代码改动 → 同一段改动丢给 codex 也审一遍 → 合并两份报告 17:00 安全审查 → claude → /security-review七、交叉验证工作流——两个 AI 审同一段代码7.1 为什么需要交叉验证单个 AI 审查代码有一个盲区它会漏掉自己可能犯的同类错误。同一个 DeepSeek V4 Pro在 Codex 和 Claude Code 的不同 system prompt 下关注的维度不同Codex 偏能不能用——功能正确性、逻辑完整性Claude Code 偏该不该这样写——安全性、可维护性、性能社区开发者的经验“It is VERY unlikely that both will hallucinate the same way.”两个工具不太可能以同一种方式犯错。7.2 标准交叉验证流程Step 1导出改动 git diff HEAD~1 changes.diff Step 2Codex 审查终端 1 codex 审查 changes.diff从正确性、逻辑完整性、边界条件三个维度给出意见 Step 3Claude Code 审查终端 2 claude → /review Step 4合并报告 ┌─────────────────┐ ┌─────────────────┐ │ Codex 报告 │ │ CC 报告 │ │ · 变量未初始化 │ │ · 变量未初始化 │ ← 交集必须修 │ · 循环可以优化 │ │ · SQL 注入风险 │ ← CC 独有必须修 │ │ │ · 缺 rate limit │ ← CC 独有建议修 └─────────────────┘ └─────────────────┘ ↓ ↓ ┌─────────────────────────────────────────┐ │ 最终修改清单 │ │ 1. 变量未初始化 ← 必须修两方共识 │ │ 2. SQL 注入风险 ← 必须修CC 发现 │ │ 3. 缺 rate limit ← 建议修 │ │ 4. 循环优化 ← 可选 │ └─────────────────────────────────────────┘7.3 三种审查模式模式操作适用场景额外成本串联审查先 Codex 审修完再 Claude Code 审日常 PR1 次审查并联审查两边同时审同一段改动合并报告重要功能、安全敏感1 次审查对抗审查一边审另一边审审查结果金融/安全/合规2 次审查成本参考一次并联审查总计约 ¥0.15-0.45——不到五毛钱换来双重保险。7.4 Git Worktree 并行模式进阶社区已经发展出一种用 Git Worktree 让两个工具同时干不同活的模式~/proj/main # 你的工作区 ~/proj/refactor # Claude Code 独占分支: refactor/auth ~/proj/scaffold # Codex 独占分支: scaffold/billing两个 Worktree 互不可见各自在独立分支上操作合并时再整合。这避免了两个 AI 同时编辑同一个文件的灾难。Git Worktree 的详细用法见 [三日常开发工作流](新手上路三Codex 日常开发工作流与效率工具.md)。八、dsv4-cc-proxy-tray 的双协议支持——一个代理服务两个工具8.1 代理架构dsv4-cc-proxy-tray 在本地localhost:16889启动 HTTP 服务器同时暴露两个 API 路径┌─────────────────────────────┐ │ dsv4-cc-proxy-tray │ │ localhost:16889 │ │ │ Codex ─────────────→│ /v1/responses │──→ DeepSeek API (Responses API) │ (Responses → Chat 翻译) │ api.deepseek.com │ │ Claude Code ───────→│ /v1/messages │──→ DeepSeek API (Messages API) │ (Messages → Chat 翻译) │ api.deepseek.com │ │ │ 共享一个 DeepSeek API Key │ └─────────────────────────────┘协议鸿沟Codex 说 Responses API/v1/responsesClaude Code 说 Messages API/v1/messagesDeepSeek 只懂 Chat Completions/v1/chat/completions。代理在中间做了两套翻译都跑在同一个进程里共享同一个 DeepSeek API Key。8.2 为什么路径不同工具代理 URL实际路径代理内部路由Codexhttp://localhost:16889/v1/v1/responsesResponses → Chat 翻译Claude Codehttp://localhost:16889/v1/messages/v1/messagesMessages → Chat 翻译同一个端口路径不同——不需要开两个代理不需要两个端口。代理根据请求路径自动判断发给哪个翻译器。8.3 同时运行的并发行为当你同时打开 Codex 和 Claude Code两个终端窗口代理按顺序处理请求t1: Codex 请求到达 → 翻译 → DeepSeek → t2: Claude Code 请求到达排队→ Codex 响应返回 → 开始处理 Claude Code 请求 t3: ...所以两个工具同时跑重型任务时可能感觉有点慢——请求在排队。日常开发中这种影响微乎其微只有同时做两个 2 万 token 的重型操作时才会察觉。九、Debug——五个最常见的双工具冲突Debug #1一个工具连不上代理现象Codex 正常Claude Code 报Connection refused。或反过来。根因分析最常见原因代理没启动或其他程序占了 16889 端口。另一个可能环境变量设置不一致——DEEPSEEK_API_KEY有值但ANTHROPIC_AUTH_TOKEN是空的。一览对比表维度正常异常代理状态curl localhost:16889/health→ OKcurl 失败端口占用仅 dsv4-cc-proxy-tray其他程序占了 16889两个环境变量都有值一个为空修复# 第 1 步确认代理在运行curl http://localhost:16889/health# 第 2 步如果代理没启动启动它# 第 3 步检查端口占用netstat-ano|findstr:16889# 第 4 步验证两个环境变量echo$env:DEEPSEEK_API_KEYecho$env:ANTHROPIC_AUTH_TOKEN# 两个都应该输出 sk-...验证# 两个终端各发一个 hi# 终端 1: codex, 输入 回 hi# 终端 2: claude, 输入 回 hi# 两个都应收到回复Debug #2Codex 迁移 Claude 设置弹窗现象打开 Codex 时弹出提示“检测到 Claude Code 配置是否迁移”根因分析这是 Codex 的一个已知行为#24515当项目目录下存在.claude/settings.json时触发。如果点了是Codex 会直接覆盖你的用户级~\.codex\config.toml——可能重置approval_policy、model_provider等关键设置。修复# 看到这个提示 → 选否 # 两个工具的配置应该独立维护不需要迁移验证# 查看你的 Codex 配置是否被意外改了cat~\.codex\config.toml# 确认 approval_policy、model_provider 等字段还是你预期的值Debug #3环境变量互相干扰现象本来两个工具都正常某天一个突然报AuthenticationError。根因分析DEEPSEEK_API_KEY和ANTHROPIC_AUTH_TOKEN虽然名字不同但如果一个引用另一个# ❌ 坏写法如果 DEEPSEEK_API_KEY 赋值失败ANTHROPIC_AUTH_TOKEN 也为空$env:DEEPSEEK_API_KEY sk-xxxx$env:ANTHROPIC_AUTH_TOKEN $env:DEEPSEEK_API_KEY或者某个桌面工具如 CC-Switch在切换配置时覆盖了环境变量。修复# ✅ 好写法两个变量独立赋值$env:DEEPSEEK_API_KEY sk-你的Key$env:ANTHROPIC_AUTH_TOKEN sk-你的Key验证# 新开终端两个变量都输出 sk-... 且相同echo$env:DEEPSEEK_API_KEY.Substring(0,5)echo$env:ANTHROPIC_AUTH_TOKEN.Substring(0,5)Debug #4两个工具编辑同一文件导致合并冲突现象Codex 和 Claude Code 同时编辑了api/routes.pyGit 显示合并冲突。根因分析这是双工具并行最常见的冲突——两个 AI 不知道对方在干什么。文件碰撞 合并地狱。一览对比表维度安全不安全工作方式Git Worktree 隔离两个工具在同一目录同时干活文件分工Codex 只改 api/, CC 只改 frontend/两个都碰同一个文件修复# 方案 1文件分工——明确谁管什么文件# AGENTS.md 或 CLAUDE.md 中约定# Codex 负责 api/ 目录# Claude Code 负责 frontend/ 目录# 方案 2Worktree 隔离最安全git worktree add../refactor-b refactor/auth cd../refactor# 在这里开 Claude Code 做重构不影响主工作区验证git worktree list# 应该看到多个 worktree各自独立Debug #5两个工具模型不一致——同一 prompt 结果差距大现象同一段代码的审查结果Codex 说没问题Claude Code 列出 5 个安全问题。根因分析最可能的原因——确实配了不同的模型config.toml里model deepseek-v4-flashsettings.json里model: deepseek-v4-proFlash 和 Pro 的安全审查能力差距显著。一览对比表维度一致不一致模型名称两个都用deepseek-v4-pro一个 Flash 一个 Proreasoning_effort两个都high/max一个none一个max修复# 在 Codex 中检查当前用的模型全名是什么model_reasoning_effort 是多少 # 在 Claude Code 中检查/model # 确保交叉验证时两个工具用同一个模型 同级 reasoning_effort验证两个工具分别发送相同 prompt审查这段代码的安全性 拿到的两份报告拿去交叉比对——如果差异过大一个说没问题一个列了 5 条 说明模型或推理深度不一致。十、速查卡10.1 配置文件位置速查文件位置被谁读Codex 用户配置~\.codex\config.tomlCodexCodex 项目配置项目\.codex\config.tomlCodexClaude Code 用户配置~\.claude\settings.jsonClaude CodeClaude Code 项目配置项目\.claude\settings.jsonClaude Code共享指令项目\AGENTS.mdCodex Claude Code通过AGENTS.mdCC 专属指令项目\CLAUDE.mdClaude Code10.2 代理端点速查工具base_url协议Codexhttp://localhost:16889/v1Responses APIClaude Codehttp://localhost:16889/v1/messagesMessages API10.3 场景分工速查场景首选备注开新项目Codex极简日常开发Codex省 3-4× token重构/审查/架构Claude CodeSkills 加持安全审查两个都跑交叉验证CI/CDCodexexec 模式定时任务Claude CodeRoutines10.4 常见报错映射报错最可能原因解决Codex 连接失败代理没启动或端口被占curl localhost:16889/healthClaude Code 连接失败ANTHROPIC_AUTH_TOKEN为空echo $env:ANTHROPIC_AUTH_TOKENCodex 弹出迁移提示检测到.claude/目录选否Git 合并冲突两个工具同时编辑同一文件Worktree 隔离或文件分工审查结果差异大模型或 reasoning_effort 不一致检查两边配置十一、扩展阅读新手上路一Codex config.toml 深度配置 — 双工具配置隔离的基础新手上路五自定义指令 — AGENTS.md 和 instructions 的完整用法新手上路六成本优化 — 双工具成本对比和 Profiles 模型路由Claude Code 新手上路系列 — Claude Code 侧的基础配置十二、参考文献Claude Code vs Codex: What 500 Reddit Developers Really Think (DEV.to) — 社区共识“聪明人两个都用”Claude vs Codex: Use Both (Lakshmi Narasimhan) — 双工具对抗审查最佳实践Codex CLI vs Claude Code (Zapier) — 功能矩阵对比Codex CLI vs Claude Code (utilo.io) — 稳定性 vs 智能性框架Codex CLI vs Claude Code: Terminal Agent Workflows (Verdent) — 功能矩阵 双工具布局Claude Code Codex Coexistence Guide (Shakacode) — 双工具文件布局和共存指南AGENTS.md as Source of Truth (Zenn) — AGENTS.md 单一真相来源模式Codex Migration Prompt Bug (#24515) — 迁移 Claude 配置弹窗的已知 bugRunning 5 AI Agents in Parallel with Git Worktrees — Git Worktree 多 Agent 并行开发dsv4-cc-proxy-tray GitHub — 代理双协议支持
新手上路(七):一个 AI 不够用?Codex + Claude Code 双轨并行,场景分工 + 交叉验证方案直接抄
发布时间:2026/6/1 2:13:17
Codex × Claude Code 双轨并行——一个项目两套 AI 工具Windows 10/11 · Codex CLI v0.130.0 · Claude Code CLI v2.0 · DeepSeek V4 Pro · dsv4-cc-proxy-tray · 2026-05-31 · 常青一、这篇教程解决什么问题一句话定位Codex 和 Claude Code 不是二选一的竞品——Codex 配置极简、token 省、干活利索Claude Code 有 Skills/Hooks/Routines 系统生态。把两个同时装在一个项目里按场景分工你得到的是一个超级开发环境。这篇教你配置隔离、场景分工、交叉验证的全套方案。跳读指南只想看什么时候用哪个的直接跳到 第六节 场景分工决策表。想抄.gitignore和文件布局的跳到 第五节 Git 仓库文件布局。想知道怎么让两个工具不打架的跳到 第三节 配置隔离方案。想学交叉验证的跳到 第七节 交叉验证工作流。遇到冲突的跳到 Debug 章节。阅读前提已完成第 0 篇安装Codex 能正常启动和干活已完成 Claude Code 基础安装和 DeepSeek 配置详见 系列第 0 篇dsv4-cc-proxy-tray 已启动curl http://localhost:16889/health返回{status:ok}了解 Codexconfig.toml基础详见 [一config.toml 深度配置](新手上路一Codex config.toml 深度配置——模型供应商、Profile 与沙箱机制.md)读完能得到什么理解 Codex 和 Claude Code 的本质差异——不是谁更好而是什么时候用谁一份完整的双配置隔离方案——两个工具的配置文件和平共处互不干扰AGENTS.md 和 CLAUDE.md 的单一真相来源内容复用策略——只维护一份共享内容一套可落地的场景分工决策表——从项目初始化到 CI/CD每个场景该用谁交叉验证工作流——重要代码让两个 AI 各自审查交集采纳了解 dsv4-cc-proxy-tray 如何用一个代理同时服务两个工具的双协议路由二、为什么需要两套工具——不是奢侈是策略2.1 同一个 DeepSeek V4 Pro不同的性格两个工具都通过 dsv4-cc-proxy-tray 接入 DeepSeek V4 Pro底层模型完全相同。那差异在哪差异在系统层——Codex 和 Claude Code 各自构建的 system prompt 不同、工具定义不同、对话管理策略不同。结果同一个模型发出来的性格不同。维度Codex CLIClaude Code CLI推理风格GPT 式——直接、行动导向、少废话Anthropic 式——周密、解释充分、注重安全边界输出特征偏简洁倾向于快速给出代码偏详细倾向于先分析再写代码指令遵循把 AGENTS.md 当合同执行把 CLAUDE.md 当建议参考任务偏好快速增删改、脚手架、文件操作深度分析、多文件重构、安全审查token 效率高 3-4×渐进式加载 Skills/MCP低一次性加载全部 Skills把它想象成同一个引擎装了不同的变速箱——功率一样发力方式不同。2.2 功能矩阵互补能力Codex CLIClaude Code CLI配置复杂度★☆☆☆☆一个 TOML 打天下★★★★☆JSON 三层合并 Hooks SkillsSandbox 隔离★★★★★elevated/unelevated/WSL2 三模式★★☆☆☆权限模式 6 种无系统级沙箱行为控制instructions AGENTS.md developer_instructionsCLAUDE.md Skills Hooks CommandsMCP 生态配置简单社区 MCP bridgeECC 生态 156 技能配置灵活云端自动化❌ 无等价功能✅ Routines定时/API/Webhook 触发代码审查❌ 无系统级/review✅/review/ultrareview ECC code-reviewerIDE 支持VS Code / JetBrains有限 / TerminalVS Code / JetBrains / Desktop / WebCI/CD✅exec模式✅-p/--print模式成本可见性⚠️/context/status无 $✅/cost精确到 $0.0001token 效率★★★★★3-4×★★★☆☆模型路由✅ Profiles 系统结构化⚠️ 环境变量切换2.3 三个让你无法拒绝的理由理由一推理互补。同一个 promptCodex 偏能不能用Claude Code 偏该不该这样写。复杂决策用两个工具各跑一遍你得到两个视角。理由二功能互补。Codex 没有的Routines 云端自动化、/review代码审查、Hooks 自动化Claude Code 有。Claude Code 做不好的Windows Sandbox 三级隔离、极简配置、Profiles 一键切换Codex 有。理由三容灾备份。任何一个工具都有概率出问题——代理挂了、API 抽风、版本更新引入 bug。只装了一个出问题时你干等着。两个都装等于有了容灾。Reddit 上 500 开发者的共识“The smart move? Use both.” 一个 Claude Code 用户说得更直接“After a Claude outage left me shipping nothing, I added Codex.”三、配置隔离方案——两个工具和平共处3.1 谁的文件在哪C:\Users\用户名\ ├── .codex\ │ ├── config.toml ← Codex 用户级配置 │ ├── sessions\ ← 会话历史 │ └── model-catalog.json ← 模型元数据 │ ├── .claude\ │ ├── settings.json ← Claude Code 用户级配置 │ ├── settings.local.json ← 本地覆盖不提交 Git │ └── projects\ ← 会话历史和项目状态 │ └── 项目目录\ ├── .codex\ │ └── config.toml ← Codex 项目级配置可选 ├── .claude\ │ ├── settings.json ← Claude Code 项目级配置 │ └── settings.local.json ← 本地覆盖 ├── AGENTS.md ← Codex 项目指令 └── CLAUDE.md ← Claude Code 项目指令关键事实两个工具的配置文件完全独立——Codex 读.codex/config.tomlTOMLClaude Code 读.claude/settings.jsonJSON。不存在交叉读取不会互相覆盖。3.2 双工具完整配置——直接抄CodexC:\Users\用户名\.codex\config.tomlmodel deepseek-v4-flash model_provider deepseek model_reasoning_effort medium model_max_output_tokens 16000 model_auto_compact_token_limit 120000 developer_instructions 你是资深全栈开发者。回复使用简体中文。 [model_providers.deepseek] name DeepSeek (via proxy) base_url http://localhost:16889/v1 env_key DEEPSEEK_API_KEY wire_api responses [profiles.heavy] model deepseek-v4-pro model_reasoning_effort maxClaude CodeC:\Users\用户名\.claude\settings.json{env:{ANTHROPIC_BASE_URL:http://localhost:16889/v1/messages,ANTHROPIC_AUTH_TOKEN:sk-你的DeepSeek-API-Key,ANTHROPIC_MODEL:deepseek-v4-pro,ANTHROPIC_DEFAULT_OPUS_MODEL:deepseek-v4-pro,ANTHROPIC_DEFAULT_SONNET_MODEL:deepseek-v4-pro,ANTHROPIC_DEFAULT_HAIKU_MODEL:deepseek-v4-flash,ANTHROPIC_SMALL_FAST_MODEL:deepseek-v4-flash,API_TIMEOUT_MS:3000000},model:deepseek-v4-pro,permissions:{allow:[Bash(git:*),Bash(npm:*),Read,Write,Edit,Glob,Grep]}}两个关键差异Codex 的base_url是http://localhost:16889/v1Claude Code 的是http://localhost:16889/v1/messages——路径不同后面会讲为什么。Codex 从DEEPSEEK_API_KEY读 KeyClaude Code 从ANTHROPIC_AUTH_TOKEN读 Key——可以指向同一个值。3.3 环境变量统一管理# 在 PowerShell $PROFILE 中设置两个变量指向同一个 Key$env:DEEPSEEK_API_KEY sk-你的DeepSeek-API-Key$env:ANTHROPIC_AUTH_TOKEN sk-你的DeepSeek-API-Key两个环境变量指向同一个 DeepSeek API Key。DeepSeek 账户只有一个不需要两套 Key。3.4 警惕Codex 的迁移 Claude 配置陷阱Codex CLI 有一个已知的 bugGitHub issue #24515当它在项目目录中检测到.claude/settings.json时会弹出是否迁移 Claude 设置“的提示。如果点了是”Codex 会直接写入你的用户级~\.codex\config.toml可能覆盖你已经精心配好的设置。应对如果看到这个提示选**“否”**。两个工具的配置应该保持独立维护不需要迁移。四、AGENTS.md 与 CLAUDE.md——一个写两个用4.1 社区共识AGENTS.md 作为单一真相来源Codex 和 Claude Code 社区已形成共识AGENTS.md 应该作为共享规则的唯一主文件CLAUDE.md 通过引用 AGENTS.md 来复用内容。这样你只需要维护一份编码规范。AGENTS.md ← 主文件维护共享规则架构、技术栈、编码规范 ↑ │ Claude Code 通过 AGENTS.md 引用 │ CLAUDE.md ← 只写 Claude Code 专属内容Hooks/Skills/审查维度4.2 三区模型——什么写在哪┌─────────────────────────────────────────────────┐ │ 共享区AGENTS.md │ │ → 项目概述、技术栈、目录结构、编码规范 │ │ → 两个工具都需要的基础信息 │ ├─────────────────────────────────────────────────┤ │ Codex 专属AGENTS.md 中 #codex 章节 │ │ → Profiles 使用约定、exec 脚本说明 │ ├─────────────────────────────────────────────────┤ │ Claude Code 专属CLAUDE.md │ │ → Hooks 配置、Skill 使用约定、审查维度 │ │ → 开头写 AGENTS.md 引用共享内容 │ └─────────────────────────────────────────────────┘4.3 完整示例AGENTS.md主文件共享 Codex 专属--- # Codex 项目指令 --- ## 项目概述 - TODO APIFastAPI SQLite, Python 3.12 - 入口main.py测试tests/ ## 编码规范 - 所有函数写类型注解 - 异常不要裸 except - HTTP 请求加 timeout - commit message 格式类型: 简述 ## Codex 使用约定 - 日常用默认 ProfileFlash medium - 重构用 codex --profile heavy - 审查用 codex --profile reviewCLAUDE.md只写 Claude Code 专属# CLAUDE.md AGENTS.md ← 引用共享规则 ## Claude Code 专属 - 代码审查用 /review - 安全敏感改动跑 /security-review - Hooks提交前自动跑 ruff pytest - Worktree 命名feature/描述4.4 维护策略策略操作适合AGENTS.md 为主推荐共享内容只写在 AGENTS.mdCLAUDE.md 通过AGENTS.md引用100% 的场景手动双写共享部分两边都改不推荐容易漂移五、Git 仓库中的文件布局5.1 完整.gitignore规则# Codex .codex/sessions/ .codex/worktrees/ .codex/.sandbox/ .codex/.sandbox-secrets/ # .codex/config.toml —— 团队可共享 # Claude Code .claude/projects/ .claude/settings.local.json .claude/conversations/ .claude/sessions/ .claude/checkpoints/ # .claude/settings.json —— 团队可共享 # 通用 .env credentials.json *.pem *.key5.2 提交策略文件提交到 Git理由AGENTS.md✅ 必须提交团队共享的编码规范CLAUDE.md✅ 必须提交团队共享的 Claude Code 约定.codex/config.toml项目级⚠️ 团队决定MCP 列表可以共享.claude/settings.json项目级⚠️ 团队决定Hooks 配置可以共享.claude/settings.local.json❌ 绝不提交个人偏好.codex/sessions/❌临时会话数据.claude/projects/❌临时项目状态六、场景分工决策表6.1 完整决策表场景用谁为什么项目初始化 / 脚手架Codex极简配置一条命令开搞日常增删改单文件Codextoken 省 3-4×Flash 足够复杂重构跨多文件Claude CodeSkills 辅助擅长多文件协调代码审查PR ReviewClaude Code/review专门优化安全审查两个都跑交叉验证交集采纳快速代码片段CodexTUI 轻量交互数据库操作两者都可都支持 MCP server-postgresCI/CD 自动化Codexexec 模式 token 效率高云端定时任务Claude CodeCodex 无 Routines写测试用例Codex模式化任务Flash 够用复杂 DebugClaude Code深度推理根因分析架构设计Claude Code深度推理 200K context6.2 决策口诀开新项目 → Codex一条命令开搞 日常搬砖 → Codex快、省、直接 重构审查看架构 → Claude CodeSkills 加持深思熟虑 重要安全 → 两个都跑交叉验证花钱买安心 CI/CD → Codex exec少废话出结果 定时任务 → Claude Code RoutinesCodex 没这个6.3 典型一天的双工具节奏09:00 打开项目 → codex日常开发模式 10:30 复杂 bug → 切到 claude深度调试 11:00 bug 修完 → 回到 codex 继续开发 14:00 PR 需要审查 → claude → /review 15:00 关键代码改动 → 同一段改动丢给 codex 也审一遍 → 合并两份报告 17:00 安全审查 → claude → /security-review七、交叉验证工作流——两个 AI 审同一段代码7.1 为什么需要交叉验证单个 AI 审查代码有一个盲区它会漏掉自己可能犯的同类错误。同一个 DeepSeek V4 Pro在 Codex 和 Claude Code 的不同 system prompt 下关注的维度不同Codex 偏能不能用——功能正确性、逻辑完整性Claude Code 偏该不该这样写——安全性、可维护性、性能社区开发者的经验“It is VERY unlikely that both will hallucinate the same way.”两个工具不太可能以同一种方式犯错。7.2 标准交叉验证流程Step 1导出改动 git diff HEAD~1 changes.diff Step 2Codex 审查终端 1 codex 审查 changes.diff从正确性、逻辑完整性、边界条件三个维度给出意见 Step 3Claude Code 审查终端 2 claude → /review Step 4合并报告 ┌─────────────────┐ ┌─────────────────┐ │ Codex 报告 │ │ CC 报告 │ │ · 变量未初始化 │ │ · 变量未初始化 │ ← 交集必须修 │ · 循环可以优化 │ │ · SQL 注入风险 │ ← CC 独有必须修 │ │ │ · 缺 rate limit │ ← CC 独有建议修 └─────────────────┘ └─────────────────┘ ↓ ↓ ┌─────────────────────────────────────────┐ │ 最终修改清单 │ │ 1. 变量未初始化 ← 必须修两方共识 │ │ 2. SQL 注入风险 ← 必须修CC 发现 │ │ 3. 缺 rate limit ← 建议修 │ │ 4. 循环优化 ← 可选 │ └─────────────────────────────────────────┘7.3 三种审查模式模式操作适用场景额外成本串联审查先 Codex 审修完再 Claude Code 审日常 PR1 次审查并联审查两边同时审同一段改动合并报告重要功能、安全敏感1 次审查对抗审查一边审另一边审审查结果金融/安全/合规2 次审查成本参考一次并联审查总计约 ¥0.15-0.45——不到五毛钱换来双重保险。7.4 Git Worktree 并行模式进阶社区已经发展出一种用 Git Worktree 让两个工具同时干不同活的模式~/proj/main # 你的工作区 ~/proj/refactor # Claude Code 独占分支: refactor/auth ~/proj/scaffold # Codex 独占分支: scaffold/billing两个 Worktree 互不可见各自在独立分支上操作合并时再整合。这避免了两个 AI 同时编辑同一个文件的灾难。Git Worktree 的详细用法见 [三日常开发工作流](新手上路三Codex 日常开发工作流与效率工具.md)。八、dsv4-cc-proxy-tray 的双协议支持——一个代理服务两个工具8.1 代理架构dsv4-cc-proxy-tray 在本地localhost:16889启动 HTTP 服务器同时暴露两个 API 路径┌─────────────────────────────┐ │ dsv4-cc-proxy-tray │ │ localhost:16889 │ │ │ Codex ─────────────→│ /v1/responses │──→ DeepSeek API (Responses API) │ (Responses → Chat 翻译) │ api.deepseek.com │ │ Claude Code ───────→│ /v1/messages │──→ DeepSeek API (Messages API) │ (Messages → Chat 翻译) │ api.deepseek.com │ │ │ 共享一个 DeepSeek API Key │ └─────────────────────────────┘协议鸿沟Codex 说 Responses API/v1/responsesClaude Code 说 Messages API/v1/messagesDeepSeek 只懂 Chat Completions/v1/chat/completions。代理在中间做了两套翻译都跑在同一个进程里共享同一个 DeepSeek API Key。8.2 为什么路径不同工具代理 URL实际路径代理内部路由Codexhttp://localhost:16889/v1/v1/responsesResponses → Chat 翻译Claude Codehttp://localhost:16889/v1/messages/v1/messagesMessages → Chat 翻译同一个端口路径不同——不需要开两个代理不需要两个端口。代理根据请求路径自动判断发给哪个翻译器。8.3 同时运行的并发行为当你同时打开 Codex 和 Claude Code两个终端窗口代理按顺序处理请求t1: Codex 请求到达 → 翻译 → DeepSeek → t2: Claude Code 请求到达排队→ Codex 响应返回 → 开始处理 Claude Code 请求 t3: ...所以两个工具同时跑重型任务时可能感觉有点慢——请求在排队。日常开发中这种影响微乎其微只有同时做两个 2 万 token 的重型操作时才会察觉。九、Debug——五个最常见的双工具冲突Debug #1一个工具连不上代理现象Codex 正常Claude Code 报Connection refused。或反过来。根因分析最常见原因代理没启动或其他程序占了 16889 端口。另一个可能环境变量设置不一致——DEEPSEEK_API_KEY有值但ANTHROPIC_AUTH_TOKEN是空的。一览对比表维度正常异常代理状态curl localhost:16889/health→ OKcurl 失败端口占用仅 dsv4-cc-proxy-tray其他程序占了 16889两个环境变量都有值一个为空修复# 第 1 步确认代理在运行curl http://localhost:16889/health# 第 2 步如果代理没启动启动它# 第 3 步检查端口占用netstat-ano|findstr:16889# 第 4 步验证两个环境变量echo$env:DEEPSEEK_API_KEYecho$env:ANTHROPIC_AUTH_TOKEN# 两个都应该输出 sk-...验证# 两个终端各发一个 hi# 终端 1: codex, 输入 回 hi# 终端 2: claude, 输入 回 hi# 两个都应收到回复Debug #2Codex 迁移 Claude 设置弹窗现象打开 Codex 时弹出提示“检测到 Claude Code 配置是否迁移”根因分析这是 Codex 的一个已知行为#24515当项目目录下存在.claude/settings.json时触发。如果点了是Codex 会直接覆盖你的用户级~\.codex\config.toml——可能重置approval_policy、model_provider等关键设置。修复# 看到这个提示 → 选否 # 两个工具的配置应该独立维护不需要迁移验证# 查看你的 Codex 配置是否被意外改了cat~\.codex\config.toml# 确认 approval_policy、model_provider 等字段还是你预期的值Debug #3环境变量互相干扰现象本来两个工具都正常某天一个突然报AuthenticationError。根因分析DEEPSEEK_API_KEY和ANTHROPIC_AUTH_TOKEN虽然名字不同但如果一个引用另一个# ❌ 坏写法如果 DEEPSEEK_API_KEY 赋值失败ANTHROPIC_AUTH_TOKEN 也为空$env:DEEPSEEK_API_KEY sk-xxxx$env:ANTHROPIC_AUTH_TOKEN $env:DEEPSEEK_API_KEY或者某个桌面工具如 CC-Switch在切换配置时覆盖了环境变量。修复# ✅ 好写法两个变量独立赋值$env:DEEPSEEK_API_KEY sk-你的Key$env:ANTHROPIC_AUTH_TOKEN sk-你的Key验证# 新开终端两个变量都输出 sk-... 且相同echo$env:DEEPSEEK_API_KEY.Substring(0,5)echo$env:ANTHROPIC_AUTH_TOKEN.Substring(0,5)Debug #4两个工具编辑同一文件导致合并冲突现象Codex 和 Claude Code 同时编辑了api/routes.pyGit 显示合并冲突。根因分析这是双工具并行最常见的冲突——两个 AI 不知道对方在干什么。文件碰撞 合并地狱。一览对比表维度安全不安全工作方式Git Worktree 隔离两个工具在同一目录同时干活文件分工Codex 只改 api/, CC 只改 frontend/两个都碰同一个文件修复# 方案 1文件分工——明确谁管什么文件# AGENTS.md 或 CLAUDE.md 中约定# Codex 负责 api/ 目录# Claude Code 负责 frontend/ 目录# 方案 2Worktree 隔离最安全git worktree add../refactor-b refactor/auth cd../refactor# 在这里开 Claude Code 做重构不影响主工作区验证git worktree list# 应该看到多个 worktree各自独立Debug #5两个工具模型不一致——同一 prompt 结果差距大现象同一段代码的审查结果Codex 说没问题Claude Code 列出 5 个安全问题。根因分析最可能的原因——确实配了不同的模型config.toml里model deepseek-v4-flashsettings.json里model: deepseek-v4-proFlash 和 Pro 的安全审查能力差距显著。一览对比表维度一致不一致模型名称两个都用deepseek-v4-pro一个 Flash 一个 Proreasoning_effort两个都high/max一个none一个max修复# 在 Codex 中检查当前用的模型全名是什么model_reasoning_effort 是多少 # 在 Claude Code 中检查/model # 确保交叉验证时两个工具用同一个模型 同级 reasoning_effort验证两个工具分别发送相同 prompt审查这段代码的安全性 拿到的两份报告拿去交叉比对——如果差异过大一个说没问题一个列了 5 条 说明模型或推理深度不一致。十、速查卡10.1 配置文件位置速查文件位置被谁读Codex 用户配置~\.codex\config.tomlCodexCodex 项目配置项目\.codex\config.tomlCodexClaude Code 用户配置~\.claude\settings.jsonClaude CodeClaude Code 项目配置项目\.claude\settings.jsonClaude Code共享指令项目\AGENTS.mdCodex Claude Code通过AGENTS.mdCC 专属指令项目\CLAUDE.mdClaude Code10.2 代理端点速查工具base_url协议Codexhttp://localhost:16889/v1Responses APIClaude Codehttp://localhost:16889/v1/messagesMessages API10.3 场景分工速查场景首选备注开新项目Codex极简日常开发Codex省 3-4× token重构/审查/架构Claude CodeSkills 加持安全审查两个都跑交叉验证CI/CDCodexexec 模式定时任务Claude CodeRoutines10.4 常见报错映射报错最可能原因解决Codex 连接失败代理没启动或端口被占curl localhost:16889/healthClaude Code 连接失败ANTHROPIC_AUTH_TOKEN为空echo $env:ANTHROPIC_AUTH_TOKENCodex 弹出迁移提示检测到.claude/目录选否Git 合并冲突两个工具同时编辑同一文件Worktree 隔离或文件分工审查结果差异大模型或 reasoning_effort 不一致检查两边配置十一、扩展阅读新手上路一Codex config.toml 深度配置 — 双工具配置隔离的基础新手上路五自定义指令 — AGENTS.md 和 instructions 的完整用法新手上路六成本优化 — 双工具成本对比和 Profiles 模型路由Claude Code 新手上路系列 — Claude Code 侧的基础配置十二、参考文献Claude Code vs Codex: What 500 Reddit Developers Really Think (DEV.to) — 社区共识“聪明人两个都用”Claude vs Codex: Use Both (Lakshmi Narasimhan) — 双工具对抗审查最佳实践Codex CLI vs Claude Code (Zapier) — 功能矩阵对比Codex CLI vs Claude Code (utilo.io) — 稳定性 vs 智能性框架Codex CLI vs Claude Code: Terminal Agent Workflows (Verdent) — 功能矩阵 双工具布局Claude Code Codex Coexistence Guide (Shakacode) — 双工具文件布局和共存指南AGENTS.md as Source of Truth (Zenn) — AGENTS.md 单一真相来源模式Codex Migration Prompt Bug (#24515) — 迁移 Claude 配置弹窗的已知 bugRunning 5 AI Agents in Parallel with Git Worktrees — Git Worktree 多 Agent 并行开发dsv4-cc-proxy-tray GitHub — 代理双协议支持