我最近大半年写代码的方式彻底换了一遍。以前是自己在 IDE 里死磕,遇到不确定的函数再去翻文档、搜社区,折腾半天最后可能还要返工。现在我的默认工作姿势是三套 AI 工具搭档干活:Claude 负责架构设计和代码审查,Codex 在终端里跑执行类任务,Grok 负责搜实时信息和验证思路。这个组合在圈子里被不少人叫“王炸”,一开始我也不信,直到自己搭了一条完整工作流跑了几十个任务之后,才明白这个说法一点都不夸张。
这个组合的核心价值不是把三个 AI 都用一遍,而是让它们各干各最擅长的事,形成一条稳定的流水线:一个定架构、一个写代码、一个查信息。适合所有把写代码当日常的人——不管是做后端、写脚本、搞自动化,还是维护老项目,只要你有“代码从 0 到 1”或者“改一个不熟悉的模块”这类需求,这套工作流都能直接套用。我接下来说的内容,全部来自我自己实际跑过的任务,包括每个工具的分工逻辑、怎么把上下文在两个工具之间传递、以及我在踩坑之后总结的排查方法。
1. 先说结论:为什么是这三个工具组合,而不是只用其中一个
很多人一开始会问:如果 Claude 写代码已经很厉害了,为什么还要拉上 Codex 和 Grok?这不是叠 buff,而是因为三个工具的能力区间差异非常大,刚好互补。
1.1 三个工具的看家本领完全不同
我先把三个工具的强项和弱项整理成一张表,这样可以看得比较清楚:
| 工具 | 最擅长的事 | 不擅长的事 | 我的使用定位 |
|---|---|---|---|
| Claude | 长上下文推理、架构设计、代码审查、指令遵循 | 信息实时性弱,内置知识有截止日期 | 架构师 + 审查员 |
| Codex | 终端内多步骤任务执行、读文件、批量改代码、运行命令 | 对模糊需求的理解不够深,容易一头扎进细节 | 主力执行者 |
| Grok | 实时联网搜索、快速信息汇总、回答时效性问题 | 代码生成质量一般,长项目连续性弱 | 情报员 + 验证员 |
看完这张表你应该能发现:这三个工具里没有任何一个能同时做到“懂架构、会执行、掌握最新信息”。Claude 再强,它不知道某个依赖昨天刚发了新版本;Codex 再快,它面对一个语焉不详的需求会直接跑偏;Grok 再能搜,它写一个完整项目的能力撑不过几个回合。所以组合的意义不是“三个都会写代码”,而是“一个主攻信息、一个主攻方案、一个主攻执行”。
1.2 核心逻辑:决策分摊,而不是能力叠加
我在实际使用中最深的体会是:这套组合真正厉害的地方,是把一个复杂任务的决策过程拆开了。
举个例子,假设我要做一个数据看板的前端页面。通常这个任务涉及如下决策:页面结构怎么设计、用哪个图表库、数据接口怎么对接、哪些边界情况需要处理。如果只丢给一个 AI,它会把所有决策都集中在一次生成里,结果就是“看起来全都有,仔细一看全都不对”——选型可能是过时的、接口可能是编的、边界情况基本没有考虑。
我的做法是把决策拆开交给最合适的人:
- 信息决策交给 Grok,让它去查当前主流的图表库、最新的生态推荐、有没有重大坑;
- 架构决策交给 Claude,让它基于 Grok 搜回来的信息,做一版结构设计和技术选型;
- 执行决策交给 Codex,它按 Claude 的方案去改代码、跑命令、把东西真正做出来。
这个过程里,每个工具只做它最擅长的那一段,互相之间的上下文通过文件和剪贴板传递。这样做最大的好处是:任何一个环节出了问题,可以单独回滚,不需要整个任务推倒重来。我用这套流程跑了大概两个月,项目的返工率明显比以前低。
2. 角色分工:Codex 做执行、Claude 做审查、Grok 做情报
如果你只是把三个 AI 的网页都打开,然后复制粘贴问题,那不叫组合,那叫三个 AI 各答各的。真正的组合拳,要先明确每个人的岗位职责。
2.1 Codex 的定位:终端里的“自动驾驶执行者”
这里的 Codex,指的是能在终端里运行的那个智能体工具——它和以前那个网页版代码编辑器不是一回事。这个工具的特点是:能读取你硬盘上的项目文件、能多步骤规划、能在终端里执行命令、能自动帮你修 bug 然后再跑测试。
我在工作流里把它当“手”来用。每当我从 Claude 那边拿到一份清晰的实施方案,就直接把方案丢给 Codex,让它负责落地。它会在终端里自己列计划、自己读文件、自己动手改,改完还会跑一下测试或者构建命令来验证。
用 Codex 有一个很重要的前提:任务的输入必须非常明确。你给它“帮我优化一下这段代码的性能”,它可能会优化出和你预期完全不一样的东西;但如果你给它“把这个函数改成异步实现,然后把调用处全部同步更新”,它就能执行得很稳。所以在我这套组合里,Codex 通常不在最前端接需求,而是在拿到 Claude 或我自己写好的方案之后才开始干活。
2.2 Claude 的定位:深度推理和代码审查
Claude 在我这套工作流里承担的是“大脑”的角色。这主要是因为它的长上下文能力太适合处理复杂逻辑了——你可以把一整个项目的相关文件都放进一次对话里,让它分析模块之间的关系、找出潜在问题、给出重构建议。
我经常干的事情是:让 Codex 改完一堆代码之后,把改动过的核心文件内容直接丢给 Claude,让它按“代码审查”的思路走一遍。Claude 能发现很多低级错误,比如某个异步函数没有 await、某个状态没有重置、某个边界条件没有兜底。我实测下来,让 Claude 做审查这一道工序,能拦截掉大约七八成的基础 bug。
另外一个很重要的用途是写方案。Claude 特别适合把一个模糊的需求变成一份可执行的开发文档——包括数据模型怎么设计、接口怎么定义、模块怎么划分、依赖怎么选。我的习惯是:先把 Grok 搜到的信息和自己对需求的理解一起发给 Claude,让它输出一份几百行的方案,这份方案就是后面 Codex 的“施工图”。
2.3 Grok 的定位:实时联网的情报员
Grok 在我这套组合里的角色不是写代码,而是查资料。它的联网搜索能力相当好用,尤其适合查这类问题:
- 某个库现在最新版本号是多少;
- 某个框架现在官方推荐的最佳实践是什么;
- 某个报错信息现在有没有新的解决方案;
- 某个第三方服务的接口文档有没有更新。
以前我在项目里遇到不熟悉的技术栈,第一反应是去搜索引擎一顿乱翻,然后被各种过时的博客带到坑里。现在我的习惯是先问 Grok:给我当前最新的方案和注意事项。它会直接给出一个带信息源的汇总,我再把这段汇总当作上下文喂给 Claude 去设计方案。
这里还有一个小技巧:Grok 和一个代码审查流程配合起来特别好用。每次我写完代码,如果遇到“这个 API 不知道为什么废弃了”或者“这个包怎么装都报错”的时候,用 Grok 查一下目标库的官方迁移方案,通常几分钟就能定位问题。
2.4 三个工具之间的上下文流转方式
光有分工还不够,工具有效协作的前提是“信息能流转起来”。我目前用的是三条流转路径:
第一,人和工具之间手动流转。比如我从 Grok 那里拿到搜索结果,经过自己筛选之后,把核心结论复制给 Claude 作为背景信息。这一条路径适合需要筛选信息的环节,因为 AI 的信息有时候不完全可靠,人过一道手可以避免污染后续流程。
第二,通过文件流转。Claude 生成的方案文档直接保存成 markdown 文件,然后告诉 Codex“去读这个文件,按里面的方案执行”。这样 Codex 不用在对话里重新理解一遍需求,上下文损失非常小。
第三,通过剪贴板和命令行参数流转。比如 Codex 跑完任务之后,我把它的执行日志和报错信息复制出来,贴给 Claude 看,让 Claude 帮忙分析最终的问题。这个方式看起来原始,但实际用起来效率很高。
3. 实操流程:从一次完整任务看懂三工具怎么接力
说再多理论,不如完整跑一遍。我拿最近做的一个小项目当例子,把每一步的真实操作和提示词都写出来。这是一个自动化周报生成工具,需求是:读取本地 git 仓库的提交记录,自动提取关键变更,生成一份带分类的周报 markdown 文件。
3.1 任务设定:明确边界和限制条件
在开始之前,我先把这个任务里几个关键的限制条件列清楚,因为后续所有 AI 的输入输出都受这些条件的约束:
- 输入:本地 git 仓库最近 7 天的提交记录;
- 处理:把提交信息按“功能开发、Bug 修复、重构优化、文档维护”分类;
- 输出:一份 markdown 格式周报,按分类排列并附上提交作者;
- 技术栈:用 Python 写,优先使用 git 命令而不是第三方库。
这个任务有一个天然的模糊点:提交信息的格式五花八门,分类逻辑并不简单。所以我先让 Grok 去查一下现在社区里对 git 提交信息规范的主流做法,再用 Claude 来定方案。
3.2 第一步:Grok 先做情报收集
我给 Grok 的提示词大概是这样的:
我在做一个 git 提交记录自动分类成周报的工具。 请帮我查一下: 1. 当前主流的 conventional commits 规范中,常用的提交类型有哪些; 2. 如果用 Python 来实现,最推荐用什么方式解析 git 提交记录——直接调用 git log 命令,还是用某个库; 3. 有哪些常见的坑需要提前规避,比如提交信息为空、作者名称乱码、跨平台换行符问题。 请给出简洁的结论,不用展开代码。Grok 跑完之后给出了几个关键结论:commit 类目用 feat / fix / refactor / docs 四种已经覆盖绝大多数场景;调用 git log 比引入第三方库更稳,因为库的接口经常会变;跨平台的话,git 默认换行符在 Windows 下需要额外处理。这几个结论看起来不复杂,但如果你不和 AI 确认,自己很容易在解析时踩坑。
3.3 第二步:Claude 输出架构方案
接下来我把 Grok 的结论整理之后发给 Claude,让它设计整个工具的结构。我的提示词是这样写的:
我现在要实现一个周报生成工具:读取本地 git 仓库最近 7 天提交,按 feat/fix/refactor/docs 分类,输出一份 markdown 文件。 已知条件: - 用 Python 实现,通过 subprocess 调用 git log 获取提交记录; - 输入支持自定义仓库路径和日期范围; - 兼容 Windows 和 macOS,注意换行符和编码问题; - 分类规则要支持后续手动扩展。 请输出: 1. 项目的文件结构(不要超过 3 个模块); 2. 核心函数的设计:输入参数、返回值类型; 3. 分类规则的实现思路; 4. 输出 markdown 的模板格式。 不用写完整代码,写到伪代码级别即可。Claude 输出的方案里最有价值的一点,是建议我把“分类规则”单独抽成一个字典结构,而不是写死成 if-else 链。这个设计意味着以后我想加一种新的分类,只需要在字典里加一行。另外它还提醒我在 git log 输出格式里加上--no-color和--date=short参数,避免解析到 ANSI 控制字符,这个细节很实用。
3.4 第三步:Codex 按方案落代码
拿到 Claude 的方案以后,我把它保存成一个design.md文件放到项目目录里,然后启动 Codex 执行。
我当时在项目目录里运行了类似这样的指令:
依据 design.md 文件里的设计方案,把这个周报生成器完整实现出来。 注意: - 代码文件放在 src 目录下; - 需要能处理空的 git 仓库和空提交信息; - 运行方式应支持命令行传参; - 实现完成后,用示例仓库跑一次,确认能生成正确的 markdown 文件。Codex 接到指令之后,自己读了一遍设计文档,然后开始建目录、写代码、跑测试。我观察到它在写分类逻辑的时候遇到一个情况:有些提交信息里同时包含feat:和fix:这两个关键词,这个时候需要确定优先级。它没有自己闷头决定,而是停下来问我要哪种处理方式——我让 Claude 先定一个规则,规则是“包含多个类型时优先取第一个出现的类型”。这个过程看起来很简单,但它确实避免了“生成完了才发现不符合预期”的返工。
大约过了二十分钟,Codex 完成了代码编写,并且自己跑了一个演示,生成了一个周报 markdown 文件。它把整个执行过程的日志都留在了终端输出里,方便我后续检查每一步做了什么。
3.5 第四步:Claude 审查 + Grok 验证结果
代码能跑不代表写得好。我接下来把最关键的几个代码文件内容贴给了 Claude,让它做一轮代码审查。当时我给的提示词很明确:
下面是三个 Python 文件的完整内容,来自一个周报生成工具。 请按以下维度审查: 1. 有没有潜在的异常会导致程序崩溃却没被捕获; 2. 分类逻辑有没有边界情况没考虑到; 3. 有没有明显性能问题; 4. 代码风格有没有与 Python 主流实践明显不一致的地方。 只输出问题和修改建议,不用重写完整代码。Claude 指出了两个问题:第一,subprocess.run调用 git 命令时没有设置encoding参数,在 Windows 中文环境下可能抛出 UnicodeDecodeError;第二,输出目录不存在时没有自动创建。这两个问题都是那种“平时不明显、一换环境就翻车”的典型坑,审查完我就让 Codex 顺手修掉了。
然后是 Grok 的验证环节。我让它检查我用的 git 命令参数和 markdown 输出格式是否和当前主流实践一致,因为有些参数在老版本 git 里不支持,而 Grok 能帮我确认一下当前主流 git 版本的兼容情况。它查下来确认没有问题,我整个任务就算收工了。
3.6 结果复盘:用这套流程省了多少事
这次任务从开始到结束大概花了两个半小时。如果按我以前的习惯,需要自己查资料、自己写一遍代码、自己调试各种边界问题,保守估计要大半天。最明显的收益不是速度,而是“每一步都有专门的 AI 把关”——方案是 Claude 审过的、代码是 Codex 跑的、信息是 Grok 查的,每一层出问题的概率都被压得很低。
4. 常见问题与排查技巧实录
任何工具用久了都会暴露问题,这套组合也不例外。我整理了这段时间里最常遇到的几个问题、排查思路和修正方法,希望对你有参考价值。
4.1 常见问题速查表
| 问题 | 现象 | 排查思路 | 解决方案 |
|---|---|---|---|
| Codex 改代码改过头 | 明明只让改一个函数,它连调用处的格式都动了一遍 | 先看 git diff,确认改动范围 | 给 Codex 的任务描述里明确写“只允许修改指定文件或指定区块”,并让它先列计划再动手 |
| Claude 审查时过度建议 | 把没问题的代码也建议重构,导致越审越乱 | 看建议是否涉及当前任务范围 | 审查时明确给它范围限制:“只关注崩溃风险和逻辑错误,不做风格建议” |
| Grok 给过时信息 | 搜索结果和官方文档不一致 | 验证信息源的更新时间和官方状态 | 让 Grok 在回答中标注信息发布日期;重要信息查完后再到官网确认 |
| 上下文传递丢失 | Codex 执行到一半理解错了需求 | 检查传入的文件是否被正确读取 | 在任务指令里加一句“先阅读 design.md 并总结执行计划,确认后再动手” |
| 三种工具风格不一致 | 代码一会用函数式、一会用类 | 定位污染来源 | 在方案文档里增加“代码风格规范”章节,提前定死 |
4.2 上下文移交技巧:比想象中更关键
三个工具各自有独立的对话上下文,如何把有效信息从 A 无缝转到 B,是我觉得整个流程里最容易被低估的环节。
先说文件移交。Claude 的方案文档别直接丢给 Codex 就完事,最好在文档开头加一段“任务摘要”,把目标、边界、验收标准用三句话写清楚。我用过之后的感受是:加了摘要之后,Codex 跑偏的概率能降低一半以上。因为模型第一次读长文档的时候,会用前面几百个字建立对任务的整体理解,如果一上来就是大段背景分析,它很容易把重点放在背景上而不是最终目的上。
再说对话移交。如果你要把 Codex 的执行日志复制给 Claude 分析,建议先把日志格式整理一下,把无关的命令输出删掉,只保留报错信息和上下文片段。否则 Claude 读了 200 行日志之后,反而会偏向于给出表面建议,而不是抓到真正的核心问题。我在实践中经常把日志压缩到 20 行以内再发出去,分析质量明显提升。
4.3 成本控制与节奏调整
三个工具全开意味着 Token 消耗速度翻倍,成本是个现实问题。我的经验是:控制成本的关键不是不用,而是减少无效调用。
我自己的用量控制策略是:
- 简单查询直接用 Grok 一次问完,不要和它来回聊好几轮;
- 大型架构设计集中让 Claude 一次输出完整方案,不要挤牙膏一样一句一句问;
- Codex 只跑确定性的执行任务,不要在它身上做探索性讨论——让它“做”而不是“想”;
- 小任务别开完整流程,只有那种需要三类信息都参与的复杂需求才走“组合拳”。
另外每周末我都会回看这一周的工具调用记录,看看哪些任务其实是单工具就能解决的却走了三工具流程。验完发现大概有两到三成的任务,完全可以精简成“一个查询 + 一个实现”,不需要全员出动。流程越精简,成本越低,出错的环节也越少。
4.4 一个容易被忽视的步骤:让工具之间“互相监督”
这套组合用久之后,我发现一个特别有价值的点:可以让工具互相验证,减少“集体幻觉”。
具体做法是:完成一个阶段后,把上一个工具的输出交给下一个工具做验证。比如 Grok 查到“某库的最新版本是 1.8.2”,我会让 Claude 在方案里顺带检查一下这个版本号和当前需求匹不匹配;Codex 写完代码之后,我会让 Grok 查一下最关键的 API 在目标版本里是否真的存在。虽然工具不是百分之百可靠,但交叉验证之后,比只信单个工具可靠得多。
当然,这一步要把握度,不能无限叠加验证导致流程变得臃肿。我的经验是:只对可能引入高风险的地方做交叉验证——比如依赖版本、核心 API 调用、兼容性相关的逻辑。至于普通代码逻辑,有一轮 Claude 审查就够了。
5. 最后再分享一个我自己的习惯
我用了很多组合方案,最终沉淀下来的体会是:工具组合本身不是王炸,“合适的人在合适的环节做合适的事”才是王炸。Claude、Codex 和 Grok 只是刚好在架构、执行、信息三个维度上切分得比较清晰,所以你才会觉得它们的组合效果好。如果你换成另外三个能力互补的工具,只要分工逻辑对了,一样能打出类似的效果。
所以我不建议你上来就把所有任务都交给三个工具。最好先拿一个你比较熟悉的小项目,手动切分一遍,看看每类工具在哪个环节给你带来最大增益。跑通一次之后,再慢慢扩大到更复杂的任务。我自己的流程也是从“Codex 写代码 + 我自己检查”进化到“Grok 查资料 + Claude 定方案 + Codex 执行 + Claude 审查”的,每一步都是在真实项目里验证过才留下来的。这套操作里最值得学的不是某个具体工具,而是“让每个工具待在自己擅长的那一环”的思路。