Codex with ChatGPT:让ChatGPT做大脑,Codex当双手的AI结对编程神器

> 一个将ChatGPT的规划能力与Codex的执行能力结合的AI编程工具,实现真正的思考-编码分离协作。 ## 项目定位:为什么需要这个项目? 在AI辅助编程的浪潮中,我们面临一个尴尬的现状: - **ChatGPT**(尤其是GPT-4系列)拥有极强的代码理解、架构设计和问题拆解能力,但它无法直接在你的终端里执行命令、修改文件、运行测试。你只能复制粘贴,来回切换上下文,效率大打折扣。 - **OpenAI Codex CLI**(或Codex harness)是一个终端原生的编码代理,它能读写文件、执行shell命令、运行测试,但它的“思考”能力相对较弱——它更像一个勤奋但缺乏战略眼光的执行者,容易在复杂任务中迷失方向,或者做出短视的决策。 **Codex with ChatGPT** 正是为了解决这个割裂而生。它创建了一个**双智能体协作架构**: - **ChatGPT** 作为“规划大脑”(Planner),负责理解用户需求、拆解任务、设计技术方案、生成步骤清单。 - **Codex** 作为“执行双手”(Worker),严格按照ChatGPT给出的计划,在本地环境中逐步执行:创建文件、修改代码、运行命令、验证结果。 这就像让一位资深架构师(ChatGPT)和一位高效的工程师(Codex)结对编程。架构师不碰键盘,但给出精确的蓝图;工程师不思考大局,但保证每一次落笔都精准无误。 ## 核心痛点:现有AI编程工具的短板 ### 1. 纯ChatGPT的痛点 - **上下文断裂**:每次复制代码到ChatGPT,再复制回来,上下文丢失严重。 - **无法执行**:ChatGPT不知道你的环境变量、依赖版本、编译错误,它只能“猜”。 - **缺乏反馈循环**:代码出错后,你需要手动把错误信息贴回去,再等它修正,循环极慢。 ### 2. 纯Codex的痛点 - **规划能力弱**:面对“重构整个模块”或“实现一个新功能”这类复杂任务,Codex容易陷入局部优化,忽略全局架构。 - **缺乏高层抽象**:它倾向于直接写代码,而不是先想清楚数据结构、接口设计、边界条件。 - **难以处理模糊需求**:如果用户说“让这个应用更快”,Codex可能只会改几个循环,而不会想到缓存策略、数据库索引或异步化改造。 ### 3. 现有“双模型”方案的痛点 有些方案尝试在同一进程中交替调用GPT和Codex,但存在两个问题: - **上下文共享混乱**:两个模型共享同一对话历史,导致ChatGPT的“思考”和Codex的“行动”混杂在一起,容易产生幻觉。 - **缺乏结构化交接**:没有明确的“计划-执行-反馈”协议,往往ChatGPT说一套,Codex做另一套。 ## 项目架构与工作原理 ### 整体流程 用户输入需求 ↓ [ChatGPT Planner] —— 生成结构化任务清单(JSON格式) ↓ [Codex Worker] —— 逐条执行任务,调用本地工具(文件读写、shell命令) ↓ [执行结果反馈] —— 错误信息、测试输出、git diff 回传给ChatGPT ↓ [ChatGPT 再规划] —— 根据反馈调整计划,进入下一轮迭代 ### 关键技术点 1. **任务清单协议**:ChatGPT输出的是严格的JSON数组,每个元素包含`action`(如`write_file`、`run_command`、`edit_file`)、`path`、`content`或`command`等字段。这种结构化设计避免了自然语言带来的歧义。 2. **双向上下文管理**:ChatGPT只看到“计划”和“反馈”,不直接接触Codex的原始输出;Codex只收到“具体指令”,不接触用户的高层意图。这种隔离防止了模型间的相互干扰。 3. **错误回传机制**:当Codex执行失败时,项目会将完整的错误堆栈、退出码、当前工作目录信息打包,作为新的上下文发送给ChatGPT,让它能基于实际环境重新规划。 4. **增量执行**:Codex每完成一个任务项,就会暂停并等待下一项指令,而不是一次性执行完所有计划。这允许ChatGPT在中间介入调整方向。 ## 安装与快速上手 ### 环境要求 - Node.js 18+(项目使用TypeScript编写) - 已安装并配置好OpenAI CLI(`codex`命令可用) - 有效的OpenAI API Key(同时支持ChatGPT API和Codex API) ### 安装步骤 bash # 1. 克隆仓库 git clone https://github.com/XiaoDuoYa/codex-with-chatgpt.git cd codex-with-chatgpt # 2. 安装依赖 npm install # 3. 配置环境变量 cp .env.example .env # 编辑 .env,填入: # OPENAI_API_KEY=你的API密钥 # OPENAI_MODEL=gpt-4-turbo-preview (或你使用的模型) # 4. 构建项目 npm run build # 5. 运行(以交互模式为例) npm start ### 代码示例:一个实际任务 假设你想让AI帮你重构一个Python脚本,使其支持并发下载。 bash $ npm start > 请输入你的需求: > 重构 download.py,将原来的串行下载改为使用 asyncio 并发下载,并添加重试机制。 [ChatGPT Planner] 正在分析需求... 计划生成: 1. 读取当前 download.py 的内容 2. 分析现有代码结构,识别串行下载部分 3. 设计新的并发架构(asyncio + aiohttp) 4. 重写文件,保留原有函数签名 5. 添加重试逻辑(指数退避) 6. 运行测试验证 [Codex Worker] 正在执行任务 1/6:读取文件... ✓ 已读取 download.py(120行) [Codex Worker] 正在执行任务 2/6:分析代码... ✓ 识别出 3 处串行下载点 [Codex Worker] 正在执行任务 3/6:设计新架构... [ChatGPT Planner] 收到架构建议,确认方案... [Codex Worker] 正在执行任务 4/6:重写文件... ✓ 已生成新版本(145行) [Codex Worker] 正在执行任务 5/6:添加重试逻辑... ✓ 已添加 retry 装饰器 [Codex Worker] 正在执行任务 6/6:运行测试... ✗ 测试失败:async 函数中使用了同步 requests 库 [ChatGPT Planner] 分析错误,调整计划... 新计划: - 将 requests 替换为 aiohttp - 修改所有 await 调用点 [Codex Worker] 执行修正... ✓ 测试通过(2个用例) 任务完成!最终代码已保存。 ## 核心亮点深度解析 ### 1. 真正的“思考-执行”分离 这不是简单的“两个模型串联”,而是通过严格的协议层实现了角色隔离。ChatGPT永远不会直接操作文件系统,Codex永远不会收到模糊的自然语言需求。这种设计带来了三个直接好处: - **减少幻觉**:ChatGPT不会因为“猜测”文件内容而编造代码,它只能基于Codex回传的真实内容做规划。 - **提高可解释性**:每一步都有明确的“计划-执行-验证”记录,你可以随时介入,查看当前AI在做什么,为什么这么做。 - **方便调试**:如果AI走偏了,你可以只修改ChatGPT的计划,而不需要重新生成整个执行过程。 ### 2. 自适应错误处理 传统的AI编程工具遇到错误时,要么直接失败,要么尝试“硬改”。本项目实现了**闭环反馈**: - 当Codex执行失败,错误信息会作为新的输入发送给ChatGPT。 - ChatGPT会重新审视计划,可能改变策略、调整参数、甚至推翻之前的方案。 - 这种“从失败中学习”的能力,使得它能够处理多轮迭代的复杂任务,而不是一次性的代码生成。 ### 3. 轻量级且可定制 项目本身只有约2000行TypeScript代码,没有复杂的框架依赖。这意味着: - 你可以轻松阅读源码,理解其工作原理。 - 你可以修改协议(比如增加新的action类型),扩展其能力。 - 你可以替换底层的“Planner”或“Worker”,比如用Claude替代ChatGPT,或者用其他编码代理替代Codex。 ### 4. 透明的成本控制 由于每次调用都明确区分了“规划”和“执行”,你可以精确控制API调用次数。例如: - 对于简单任务,可以跳过ChatGPT规划,直接让Codex执行。 - 对于复杂任务,可以限制ChatGPT的迭代轮数,防止无限循环。 ## 适用场景 ### 最合适的场景 1. **大型代码库重构**:需要理解全局架构,同时进行大量机械性修改。ChatGPT负责设计重构方案,Codex负责逐文件修改。 2. **跨文件功能实现**:比如“添加一个用户认证模块”,涉及后端路由、前端页面、数据库迁移、测试用例。ChatGPT规划模块间接口,Codex逐层实现。 3. **技术债务清理**:面对遗留系统,ChatGPT分析依赖关系,Codex执行替换和删除。 4. **教学与学习**:你可以观察ChatGPT如何拆解问题,Codex如何执行,学习AI的编程思维。 ### 不太适合的场景 - **单文件小修改**:直接用Codex或Copilot更快,引入这个项目反而增加开销。 - **需要强交互的调试**:如果问题需要频繁人工确认(比如“这个API返回什么?”),目前的自动化流程可能不够灵活。 - **离线环境**:必须依赖OpenAI API,无法完全本地化。 ## 与同类项目对比 | 项目 | 架构 | 核心优势 | 局限性 | |------|------|----------|--------| | **Codex with ChatGPT** | 双模型,严格协议分离 | 规划能力强,错误反馈闭环 | 需要两个API,延迟较高 | | **OpenAI Codex CLI** | 单模型 | 简单直接,执行速度快 | 复杂任务规划弱 | | **Cursor** | IDE集成,多模型 | 交互体验好,上下文丰富 | 封闭生态,不易定制 | | **Aider** | 单模型+Git管理 | 版本控制集成好 | 规划能力取决于底层模型 | | **AutoGPT** | 多代理,自主循环 | 全自动,目标驱动 | 容易失控,成本不可控 | **关键差异**:大多数工具试图让一个模型“既思考又行动”,而本项目刻意分离了这两个角色。这种设计哲学在工程上更接近“主从架构”——主控负责决策,从机负责执行,通过明确定义的接口通信。 ## 实际使用体验与注意事项 ### 优点体验 - **任务拆解清晰**:你能看到ChatGPT是如何把“重构下载脚本”分解为6个具体步骤的,这种透明度有助于建立信任。 - **错误恢复能力强**:在测试中,当Codex遇到Python版本不兼容问题,ChatGPT能快速识别并调整方案,而不是盲目重试。 ### 需要注意的坑 1. **API成本**:每次任务可能消耗2-5次ChatGPT调用和5-10次Codex调用,复杂任务成本更高。建议设置预算上限。 2. **上下文窗口限制**:ChatGPT的上下文窗口(如8K或16K token)可能不足以处理超长代码文件。项目目前没有自动截断或摘要机制,需要手动分块。 3. **Codex的权限控制**:Codex可以执行任意shell命令,这意味着如果提示词注入恶意指令,可能有安全风险。建议在隔离的容器或虚拟机中运行。 4. **版本兼容性**:项目目前依赖OpenAI的特定API版本,如果API更新,可能需要手动调整。 ## 未来展望与改进方向 从项目代码中可以看出,作者留了一些扩展点: - **支持更多Planner**:目前硬编码了ChatGPT,但接口设计可以轻松接入其他LLM。 - **支持自定义工具**:Codex的action类型是开放的,可以添加`git_commit`、`docker_build`等新动作。 - **持久化会话**:目前每个任务是一次性的,未来可以保存对话状态,支持断点续跑。 ## 总结:值得一试吗? 如果你已经熟悉Codex CLI,并且觉得它在复杂任务上“力不从心”,那么这个项目值得你花一小时尝试。它提供了一种**优雅的工程化思路**——不是让AI更强大,而是让多个AI各司其职,通过协议协作。这种“组合式AI”的哲学,可能是未来AI编程工具的重要方向。 当然,它目前还处于早期阶段(GitHub Stars 514),文档和社区支持有限。但作为一个技术原型,它展示的架构思想远比其当前功能更有价值。 **适合人群**: - 对AI Agent架构感兴趣的开发者 - 需要处理复杂重构任务的专业程序员 - 愿意折腾开源工具的技术爱好者 **不适合人群**: - 追求开箱即用的普通用户 - 对API成本敏感的个人开发者 - 需要GUI界面的非技术用户 --- **项目链接**:https://github.com/XiaoDuoYa/codex-with-chatgpt
查看工具