ChatGPT 规划,Codex 执行:一个让 AI 结对编程更聪明的开源方案

> ChatGPT 负责思考与规划,Codex 负责执行与落地——一个将大模型规划能力与代码代理执行能力无缝结合的 TypeScript 开源项目。 ## 一、项目背景:为什么需要“ChatGPT + Codex”组合? 在 AI 辅助编程的浪潮中,开发者已经习惯了两种截然不同的工作流: - **ChatGPT 类对话模型**(如 GPT-4、GPT-4o):擅长理解复杂需求、拆解任务、生成代码片段,但缺乏在真实代码仓库中自主操作的能力(如读写文件、运行测试、git 提交等)。 - **代码代理(Codex 等)**:能够在一个沙盒环境中自主执行多步操作,比如搜索代码、修改文件、运行命令,但它的“规划能力”往往受限于上下文窗口和模型自身的推理深度,遇到复杂或模糊的需求时容易跑偏。 `codex-with-chatgpt` 的诞生正是为了解决这一割裂:**让 ChatGPT 作为“大脑”负责全局规划与决策,让 Codex 作为“双手”负责具体执行**。这种“双模型协作”模式,既利用了 ChatGPT 强大的语言理解和任务分解能力,又保留了 Codex 在真实环境中的可操作性,从而显著提升 AI 编程的完成度和可靠性。 ## 二、核心痛点与解决方案 ### 痛点 1:Codex 单独使用时,面对复杂任务“力不从心” Codex 本身是一个基于 OpenAI 代码模型的终端代理,它可以在一个工作目录中执行命令、编辑文件。但如果你直接给它一个庞大的需求,比如“重构整个项目的认证模块,并添加单元测试”,它可能会: - 在第一步就陷入细节,忘记全局目标; - 重复修改同一个文件,导致逻辑混乱; - 无法合理分配时间,在次要问题上浪费过多 token。 **解决方案**:项目将 Codex 的每一次调用都交给 ChatGPT 来“指挥”。ChatGPT 首先将大需求拆解为一系列具体的小步骤(例如:1. 分析现有认证代码;2. 设计新接口;3. 修改核心逻辑;4. 编写测试;5. 运行测试并修复错误)。然后,每一步都作为一个独立的 Codex 任务执行,执行结果反馈给 ChatGPT,由它决定下一步动作。这形成了一个“规划-执行-反馈-再规划”的闭环。 ### 痛点 2:ChatGPT 无法直接操作文件系统或运行命令 即使使用 ChatGPT 的代码解释器(Code Interpreter),它也只能在受限的 Python 环境中运行,且无法访问你的本地仓库。而 `codex-with-chatgpt` 通过将 Codex 作为后端执行引擎,让 ChatGPT 的规划结果能够直接作用于真实的代码仓库。 ### 痛点 3:多轮对话中的上下文丢失 直接使用 Codex 时,每次执行都是一个独立的会话,很难保持跨步骤的上下文。而本项目通过 ChatGPT 维护一个全局的“任务状态”,每次执行完 Codex 后,将输出摘要和当前文件状态反馈给 ChatGPT,让它始终掌握全局,不会迷失方向。 ## 三、安装与快速上手 ### 环境要求 - Node.js 18+ 和 npm - 一个 OpenAI API Key(需要同时具备 ChatGPT 和 Codex 的访问权限,通常为同一 key) ### 安装步骤 bash # 克隆项目 git clone https://github.com/XiaoDuoYa/codex-with-chatgpt.git cd codex-with-chatgpt # 安装依赖 npm install # 配置环境变量 cp .env.example .env # 编辑 .env,填入你的 OPENAI_API_KEY 和可选的 OPENAI_ORG_ID ### 基本用法 项目提供了一个命令行工具,你可以直接输入一个任务描述,它会自动启动“ChatGPT 规划 + Codex 执行”循环。 bash npm start -- "重构 src/utils/date.ts 中的日期格式化函数,使其支持时区参数,并添加单元测试" 更高级的用法是使用交互式模式,在每一步执行后你都可以介入调整: bash npm run interactive ### 代码示例:如何以编程方式调用 项目也导出了核心 API,你可以集成到自己的工具链中: typescript import { CodexWithChatGPT } from './src'; const agent = new CodexWithChatGPT({ apiKey: process.env.OPENAI_API_KEY, model: 'gpt-4o', // ChatGPT 规划模型 codexModel: 'codex', // Codex 执行模型 workingDir: './my-project', }); const result = await agent.run('将项目中的 console.log 全部替换为自定义 logger,并保证代码风格一致'); console.log(result.summary); ## 四、核心亮点深度解析 ### 1. 动态任务分解与优先级排序 ChatGPT 在每一轮规划中,不仅会生成下一步操作,还会根据当前进度和反馈重新评估剩余任务的优先级。比如,如果 Codex 在执行某一步时发现依赖缺失,ChatGPT 会动态插入“安装依赖”这一新步骤,而不需要用户手动干预。 ### 2. 执行结果的结构化反馈 每次 Codex 执行完毕,项目会提取关键信息(如修改的文件列表、运行的命令、测试通过/失败数量、错误日志摘要)并以结构化的 JSON 形式返回给 ChatGPT。这比直接粘贴原始输出更高效,减少了 token 消耗,同时让 ChatGPT 能快速理解当前状态。 ### 3. 安全边界与人工确认机制 项目允许设置“危险命令”白名单/黑名单。例如,你可以禁止 Codex 执行 `git push` 或 `rm -rf` 等高风险操作。此外,在交互模式下,每一步执行前都会询问你是否允许,确保你对最终行为有完全控制权。 ### 4. 支持多种 ChatGPT 模型 你可以在配置中选择 `gpt-4o`、`gpt-4-turbo` 甚至 `gpt-3.5-turbo` 作为规划大脑,以平衡成本和性能。对于简单任务,使用 `gpt-3.5-turbo` 可以大幅降低费用,而复杂任务则推荐 `gpt-4o`。 ### 5. 可扩展的插件机制 项目提供了一套简单的插件接口,你可以在每次执行前后添加自定义钩子(例如:自动格式化代码、发送 Slack 通知、更新项目文档等)。 ## 五、适用场景 - **大型重构任务**:当你想对项目进行跨模块的重构,且需要保持全局一致性时,ChatGPT 的规划能力可以避免 Codex 在局部优化中迷失。 - **自动化代码审查与修复**:你可以将 GitHub Issue 或 PR 评论作为输入,让系统自动分析并生成修复代码,甚至直接提交 PR。 - **学习与教学**:新手开发者可以用它来理解一个复杂代码库的逻辑,ChatGPT 会解释每一步修改的原因。 - **批量重复性任务**:例如为所有函数添加类型注解、统一导入风格、替换弃用 API 等。 ## 六、同类项目对比 | 项目 | 特点 | 对比优势 | 对比劣势 | |------|------|----------|----------| | **Codex CLI**(OpenAI 官方) | 单独使用 Codex,自主执行 | 无需额外配置,直接可用 | 缺乏高层规划,复杂任务容易失控 | | **Aider** | 基于终端的 AI 结对编程,支持多模型 | 支持本地 git 操作,社区活跃 | 规划能力依赖单一模型,不如本项目的“双脑”协作 | | **OpenHands(原 OpenDevin)** | 自主编码智能体,支持多种模型 | 功能全面,有 GUI 界面 | 较重,需要 Docker 环境,学习曲线陡峭 | | **AutoGPT** | 通用自主代理,可处理多种任务 | 灵活,但不够专注编程 | 容易陷入死循环,缺乏代码库感知能力 | **本项目独特优势**: - 专门针对编程场景优化,结合了 ChatGPT 的“常识”和 Codex 的“代码操作”能力。 - 轻量级,纯 TypeScript,无需 Docker,易于集成到现有开发流程。 - 提供细粒度的安全控制和人工介入点,适合生产环境使用。 ## 七、潜在局限与改进方向 - **Token 消耗较高**:由于每次执行都需要调用两个模型,且 ChatGPT 需要接收结构化反馈,整体 token 消耗比单独使用 Codex 多约 30%-50%。建议使用 `gpt-3.5-turbo` 作为规划模型以降低成本。 - **依赖 Codex 的稳定性**:如果 Codex API 不稳定或限流,整个流程会中断。项目目前没有内置重试机制,需要用户自行处理。 - **对非英语任务支持一般**:ChatGPT 和 Codex 对英文支持最佳,对于中文注释或中文需求,效果会稍打折扣,但基本可用。 未来可能的方向:支持更多代码代理后端(如 Claude Code、Gemini CLI 等),以及增加对多仓库项目的支持。 ## 八、总结 `codex-with-chatgpt` 是一个极具巧思的开源项目,它没有尝试重新发明轮子,而是将两个强大的 AI 工具以“规划-执行”模式组合起来,解决了单一工具在复杂编程任务中的短板。虽然它仍处于早期阶段(GitHub 上 537 个 star),但设计思路清晰,代码结构简洁,非常适合那些希望深度控制 AI 编程流程的开发者。如果你厌倦了让 AI 一遍遍“猜”你的意图,不妨试试让 ChatGPT 当你的“项目经理”,让 Codex 当你的“码农”,你只需坐在椅子上喝咖啡。 **项目链接**:[https://github.com/XiaoDuoYa/codex-with-chatgpt](https://github.com/XiaoDuoYa/codex-with-chatgpt)
查看工具