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