Codex 驱动的自进化项目框架
- 适配
claude code等更多平台 - 允许用户选择时候要更新
projects下的每个子目录都是一个独立项目仓库,形如projects/<projectName>。- 你可以从空仓库开始,只提供一句创意
idea逐轮进化。 - 默认使用
multi-agent串行协作,每轮按 3 角色流水线推进:Innovation Analyst:读源码并提出创新改进方案Implementation Engineer:实施改动Verification & Repair Engineer:测试、发现问题并修复
- 所有 Agent 都统一使用同一个
codex CLI和codex.model。 - 每轮迭代结束后,脚本会在该子仓库内自动提交并推送(可通过配置关闭)。
evolution.py:命令行入口。auto_evolution/cli.py:参数解析。auto_evolution/workflow.py:主流程编排。auto_evolution/config_loader.py:配置读取与兼容性归一化。auto_evolution/logging_utils.py:彩色日志与 Codex 输出分类。auto_evolution/prompt_tools.py:提示词读取与迭代 Prompt 组装。auto_evolution/codex_runner.py:Codex 执行、重试、会话恢复、提交信息提取。auto_evolution/git_tools.py:项目仓库检查、分支与远端检查,自动创建仓库、提交推送。
python,基础环境即可git,保证本机的user.name和user.email字段配置正确,且可以免密操作- 本机必须配置好
codex CLI - (非常建议)安装
gh并登录:gh auth login,便于自动化创建GitHub仓库,安装链接
配置教程见 codex 配置教程
只需要将 RightCode 教程中的 config.toml 和 auth.json 两个文件按照你自己运营商的相关配置写好即可。
在项目根目录执行:
cp -rn .template/. .说明:
- 这条命令会把
.template/下的config.json和prompts/*复制到项目根目录。 -n表示不覆盖你已修改过的本地文件,可重复执行。- 运行时会优先读取根目录文件;若根目录缺失,才会回退读取
.template/下对应文件。
config.json 中要修改的字段:
projectName: 你希望进化的项目仓库名。iterations: 你希望进化的迭代次数。multiAgent.enabled: 是否启用多 Agent 协作(默认true)。- (推荐)
autoGitInit: 是否愿意自动化创建仓库(默认为false,必须gh登录才能为true,建议改为true) - (可选)
llmAccess: 如果你希望进化过程中可以加入调用大模型的功能,请提供一个可调用的大模型配置,其中apiKey会以环境变量的形式加载,无需担心泄漏问题。 - (可选)
needAutoUpgrade: 是否在每次启动时自动检查并拉取当前框架仓库更新(默认true),若你希望修改代码,可设置此参数为false。
在 GitHub 上创建一个空仓库,然后在项目根目录执行:
mkdir -p projects/<你的空仓库名>
cd projects/<你的空仓库名>
git init
git checkout -B main
git remote add origin <你的空仓库地址>按需改写 prompts/sys-prompt.md(当前模板是通用系统规则)。
多 Agent 角色提示词位于 prompts/roles/*.zh.md。
记得填写你的创意 idea 到 prompts/user-prompt.md。
(重要!)如果你在迭代中途有新想法 / 新问题,可随时写入 prompts/user-temp-prompt.md,系统会在每轮开始时按最高优先级处理:
- 第 1 角色先将你的需求重构成编号条目
- 第 3 角色删除已完成条目并保留未完成条目。
若你没有在根目录创建这些文件,程序会读取 .template/ 中的默认内容,建议始终维护根目录文件。
在项目根目录执行:
python evolution.py常用可选参数:
python evolution.py --iterations 10 # 传入迭代次数
python evolution.py --project <YOUR_REPO_NAME> # 传入项目仓库名
python evolution.py --prompt "请做一坨💩" # 直接传入创意,但更推荐用 user-prompt.md 传输,不传入 --prompt 参数即自动读取 user-prompt.md
python evolution.py --dry-run # 测试本地流程是否能跑通中断说明:
- 运行中按
Ctrl+C会中断当前 Codex 执行。 - 脚本会检测当前子仓库是否存在未提交改动,若存在会自动回滚这些未完成改动,然后正常退出。
projectName:你的项目仓库名,对应projects/<projectName>。needAutoUpgrade:是否在每次启动时自动检查并拉取当前框架仓库更新,默认true。iterations:迭代轮次。intervalSeconds:轮次间隔秒数。appendIterationContext:是否在每轮 Prompt 附带迭代上下文。systemPromptFile:系统提示词路径。userPromptFile:你创意提示词路径。llmAccess:(可选)提供给codex的大模型调用接口。multiAgent.enabled:是否启用多 Agent 协作流程。multiAgent.maxContextChars:多 Agent 协作记忆的截断长度(避免上下文无限增长)。multiAgent.agents:角色列表,每项包含:name:角色唯一标识。role:角色名称,用于提示词角色卡。goal:角色目标,定义该角色在流水线中的职责。canEditCode:该角色是否允许直接改代码。systemPromptFile:(可选)角色系统提示词文件路径(建议放在prompts/roles/)。
- 只读角色可使用项目临时交接目录:
.git/auto-evolution-handoffs/iter-xxx/,通过HANDOFF_FILE: <path>传递分析结论。 - 运行日志会落盘到框架目录
./logs/。 codex.command:Codex 命令名。codex.model:Codex 模型参数。codex.profile:(可选)profile。codex.dangerouslyBypassApprovalsAndSandbox:是否给予codex最高权限,此项默认为true,为false则无法改动代码。codex.timeoutSeconds:单轮超时秒数。codex.retries:单轮失败重试次数。codex.extraArgs:追加给 Codex 的参数。codex.dryRun:测试本地流程是否能跑通,不调用 Codex,不触发 autoGitInit,不切换分支,不做远端检查。codex.autoGitCommit:每轮迭代后是否自动提交。codex.autoGitPush:每轮迭代后是否自动推送。(若为true则要求autoGitCommit=true)codex.gitRemote:推送远端名,默认origin。codex.gitBranch:推送分支名,默认main。codex.gitCommitPrefix:提交信息前缀(可留空)。codex.autoGitInit:自动初始化仓库机制。启用后若本地项目目录未绑定远端,会自动检测当前GitHub账号下是否有同名仓库,有则绑定并拉取,无则自动创建后绑定。(若为true必须提前登录gh)
本项目版权归 KeeperHihi 所有。