ChatGPT 思考,Codex 执行:一个让 AI 结对编程真正落地的开源利器

> 一个将 ChatGPT 的规划能力与 Codex 的执行能力无缝融合的 AI 编程协作框架。 ## 引言:AI 编程的“双脑”困境 在过去两年里,AI 编程助手已经从“自动补全”进化到“自主代理”。OpenAI 的 Codex 可以在沙箱环境中自主执行多步骤任务,但它的“思维”能力有限——它更像一个高效的执行者,而不是一个深思熟虑的规划者。另一方面,ChatGPT(尤其是 GPT-4 系列)拥有强大的推理和规划能力,但它不能直接操作代码库或运行命令。 于是,一个自然的问题出现了:**能不能让 ChatGPT 当“大脑”,Codex 当“双手”?** 这就是 `XiaoDuoYa/codex-with-chatgpt` 这个开源项目要解决的核心问题。它不是一个简单的脚本,而是一个完整的 TypeScript 框架,让你可以在保留 Codex 官方 harness(执行环境)的同时,将 ChatGPT 作为高层的规划引擎。 ## 项目概览 - **项目名**:codex-with-chatgpt - **作者**:XiaoDuoYa - **语言**:TypeScript - **Stars**:527(持续增长中) - **核心定位**:让 ChatGPT 作为“规划大脑”,Codex 作为“执行双手”,两者通过一个精心设计的桥接层协同工作。 ## 它解决了什么痛点? 1. **Codex 的“短视”问题**:Codex 虽然能执行多步操作,但它的每一步决策往往基于局部上下文,缺乏全局规划。比如,当你让它“重构这个模块并更新所有相关测试”时,它可能会陷入细节,遗漏某些依赖关系。 2. **ChatGPT 的“无手”问题**:ChatGPT 虽然能给出完美的重构方案,但你需要手动将方案复制到终端、手动运行测试、手动修复错误……这大大降低了效率。 3. **上下文割裂**:在传统工作流中,你需要在 ChatGPT 和 Codex 之间来回切换,手动传递上下文。这不仅容易出错,而且会打断思路。 `codex-with-chatgpt` 通过一个**双向通信机制**解决了这些问题:ChatGPT 生成计划,Codex 执行计划,然后 Codex 将执行结果反馈给 ChatGPT,后者根据反馈调整计划,形成一个闭环。 ## 安装与快速上手 ### 环境要求 - Node.js 18+(推荐 20 LTS) - OpenAI API Key(需要同时有 ChatGPT 和 Codex 的访问权限) - Git(可选,用于版本管理) ### 安装步骤 bash # 克隆仓库 git clone https://github.com/XiaoDuoYa/codex-with-chatgpt.git cd codex-with-chatgpt # 安装依赖 npm install # 构建项目 npm run build # 配置环境变量 cp .env.example .env # 编辑 .env,填入你的 OPENAI_API_KEY 和 CODEX_API_KEY(如果不同) ### 基本用法 假设你想让 AI 完成一个任务:“在项目根目录下创建一个 `utils` 文件夹,里面添加一个 `math.ts` 文件,实现 `add` 和 `multiply` 函数,并编写测试。” bash # 使用 CLI 直接运行 execute --task "在项目根目录下创建 utils/math.ts,实现 add 和 multiply 函数,并添加测试" --model gpt-4-turbo # 或者通过配置文件运行 cat > task.yaml <<EOF task: "在项目根目录下创建 utils/math.ts,实现 add 和 multiply 函数,并添加测试" chatgpt_model: "gpt-4-turbo" codex_model: "codex-1" EOF execute --config task.yaml ### 编程接口(TypeScript) 如果你想把 `codex-with-chatgpt` 集成到自己的工具链中,可以使用它提供的编程接口: typescript import { CodexWithChatGPT } from 'codex-with-chatgpt'; const orchestrator = new CodexWithChatGPT({ chatgpt: { model: 'gpt-4-turbo', temperature: 0.2 }, codex: { model: 'codex-1', sandbox: 'docker' }, // 可选:自定义反馈循环次数 maxIterations: 5 }); const result = await orchestrator.run({ task: '重构 src/legacy.ts,将其拆分为多个模块,并确保所有测试通过', workspace: './my-project', // 可选:提供初始上下文 context: { files: ['src/legacy.ts'], testCommand: 'npm test' } }); console.log(result.summary); ## 核心架构与亮点 ### 1. 双引擎编排器(Orchestrator) 这是项目的核心。它负责: - 将用户任务拆解为子任务,并发送给 ChatGPT 生成执行计划。 - 将计划转换为 Codex 可执行的指令序列。 - 收集 Codex 的执行结果(包括错误、测试输出、文件变更),并反馈给 ChatGPT。 - 管理迭代循环,直到任务完成或达到最大迭代次数。 ### 2. 智能上下文管理 项目自动维护一个“上下文窗口”,包含: - 当前工作目录的文件树 - 最近修改的文件内容(增量) - 测试结果和错误日志 - 历史决策记录 这样,ChatGPT 在生成下一步计划时,能够基于真实的工作区状态,而不是凭空想象。 ### 3. 可插拔的沙箱适配器 Codex 官方支持多种沙箱(Docker、VM、本地),本项目提供了统一的适配器接口,让你可以无缝切换。默认使用 Docker,但你也可以自定义: typescript const mySandbox = { async executeCommand(cmd: string) { /* 自定义实现 */ }, async readFile(path: string) { /* 自定义实现 */ }, async writeFile(path: string, content: string) { /* 自定义实现 */ } }; const orchestrator = new CodexWithChatGPT({ sandbox: mySandbox }); ### 4. 反馈循环与自我修正 这是项目的灵魂。当 Codex 执行失败时,错误信息不会被简单丢弃,而是会被结构化整理并返回给 ChatGPT。ChatGPT 会分析错误原因,调整计划,然后重新下达指令。这个循环默认最多执行 5 次,但你可以根据任务复杂度调整。 例如,如果 Codex 因为测试失败而中断,ChatGPT 可能会说:“看起来 `math.ts` 中的 `multiply` 函数忘记处理负数了,请修改实现并重新运行测试。” ### 5. 详细的日志与回放 项目会记录整个执行过程的完整日志,包括每一步的计划、执行命令、输出结果、ChatGPT 的思考过程。你不仅可以看到最终结果,还能回放整个 AI 决策链路,这对于调试和教学非常有价值。 ## 适用场景 1. **代码库重构**:对于大型重构,ChatGPT 可以制定分步迁移计划,Codex 负责执行机械性的代码修改,并随时汇报进展。 2. **自动化测试生成**:让 ChatGPT 分析代码逻辑并设计测试用例,Codex 负责编写测试文件并运行。 3. **跨文件功能开发**:当需要同时修改多个文件时,ChatGPT 可以协调依赖关系,Codex 负责实际修改。 4. **学习与教学**:你可以观察 ChatGPT 如何规划、Codex 如何执行,并看到错误如何被修正,这是一个绝佳的 AI 编程教学工具。 5. **快速原型验证**:你只需要描述想法,让 ChatGPT 设计架构,Codex 快速实现,然后你审查结果。 ## 与其他项目的对比 | 特性 | codex-with-chatgpt | AutoGPT | GitHub Copilot Workspace | LangChain 自定义 Agent | |------|-------------------|---------|--------------------------|----------------------| | 规划能力 | 强(ChatGPT) | 中 | 中 | 取决于配置 | | 执行能力 | 强(Codex 沙箱) | 中(需自行配置) | 中(云端环境) | 弱(需自己集成) | | 上下文管理 | 自动、增量 | 简单截断 | 自动 | 手动管理 | | 反馈循环 | 内置、可调 | 有但粗糙 | 有 | 需自行实现 | | 可扩展性 | 高(插件) | 中 | 低(封闭) | 高(但复杂) | | 易用性 | 高(开箱即用) | 中 | 高(云端) | 低(需编程) | ### 与 AutoGPT 的比较 AutoGPT 是一个更通用的自主代理,但它没有专门针对代码执行优化。`codex-with-chatgpt` 则专注于编程场景,直接利用了 Codex 的沙箱能力,避免了 AutoGPT 常见的“陷入循环”和“上下文爆炸”问题。 ### 与 GitHub Copilot Workspace 的比较 Copilot Workspace 是 GitHub 官方的云端 AI 开发环境,但它是一个封闭系统,你无法自定义模型或沙箱。而 `codex-with-chatgpt` 完全开源,你可以替换任何组件,适合需要深度定制的团队。 ### 与 LangChain 自定义 Agent 的比较 LangChain 提供了构建 Agent 的底层工具,但你需要自己实现大量代码来协调两个模型,并且要处理状态管理、错误恢复等繁琐问题。本项目把这些都封装好了,让你可以专注于任务本身。 ## 局限性与未来展望 - **Token 消耗**:由于需要多次调用两个模型,Token 消耗会比单一模型高。建议使用缓存和流式输出来降低成本。 - **模型依赖**:目前依赖于 OpenAI 的特定模型(GPT-4-turbo 和 Codex),如果未来模型升级,可能需要调整适配器。 - **复杂任务的分割**:对于过于庞大的任务,ChatGPT 可能会生成过于复杂的计划,导致 Codex 执行时出错。建议将任务拆解为更小的子任务。 项目作者正在积极开发中,未来计划包括: - 支持更多模型(如 Claude 3、Gemini) - 可视化界面(实时查看 AI 决策过程) - 插件系统(自定义工具和命令) ## 总结 `codex-with-chatgpt` 是一个极具创新性的开源项目,它巧妙地利用了 ChatGPT 和 Codex 各自的优势,解决了 AI 编程中“规划”与“执行”脱节的问题。虽然它还很年轻(500+ Stars),但架构设计成熟,代码质量高,文档清晰,非常适合对 AI 编程有深度需求的开发者。 如果你厌倦了手动在 ChatGPT 和 Codex 之间来回切换,或者想体验真正的“AI 结对编程”,这个项目绝对值得一试。 --- **项目地址**:https://github.com/XiaoDuoYa/codex-with-chatgpt
查看工具