AI 编程助手已经很强了。
它能读代码、写脚本、改 Bug、生成文档、跑测试,甚至能在一次复杂任务中持续推进上下文。但很多长期使用者都会遇到同一个问题:
它在这一轮会话里很懂你,到了下一轮,又像第一次合作。
你不得不反复告诉它:
• 我的回答偏好是什么; • 这个项目有哪些特殊约束; • 上次踩过什么坑; • 哪些命令已经验证过; • 哪些东西绝对不能写进记忆; • 哪些流程应该沉淀成可复用技能。
这些经验原本很有价值,但如果只停留在聊天窗口里,很快就会随着上下文窗口一起消失。
所以我做了一个开源项目:
Codex Self-Improving Loop一个给 Codex 使用的本地、可审查、可撤回的自改进闭环系统。
项目地址:
https://github.com/newcatshuang/codex-self-improving-loop它不是要替代 Codex,也不是做一个复杂的外部记忆数据库,而是给 Codex 加上一层更适合真实工程协作的“学习回路”:
会话经验 -> 生成候选 -> 安全扫描 -> 人工审查 -> 显式晋升 -> 后续任务自动回忆和复用核心思想很简单:
AI 可以主动发现经验,但长期行为的改变必须可审查、可解释、可撤回。
一、为什么 AI 编程助手需要“自我进化回路”?
对个人开发者和团队来说,AI 编程助手真正的价值不只是“单次生成代码”,而是长期协作。
长期协作需要稳定的默契。
比如你希望它默认做到:
• 修改前先理解项目结构; • 不要扩大变更范围; • 改完后说明验证命令; • 不要把项目事实写进全局偏好; • 不要在未验证时声称“已完成”; • 遇到历史问题时先检索上次会话。
这些要求如果每次都重新输入,会非常低效。
更麻烦的是,很多经验不是一开始就能写出来的,而是在真实任务中逐渐暴露出来的:
• 某个验证命令在 Windows 下需要特殊 Python 路径; • 某个脚本在 GBK 环境下会因为 UTF-8 输出崩溃; • 某类候选不应该从助手自己的进展说明里提取; • 某些日志输出不应该被当成长期记忆。
这类信息最适合在任务结束时被提炼出来,进入一个可审查的学习 inbox。
这就是 Self-Improving Loop 要解决的问题。
它不是让 AI 随意改写自己,而是建立一个受控流程:
观察任务提取候选过滤风险保留证据人工确认逐步沉淀二、这个项目到底做了什么?
Codex Self-Improving Loop 主要包含两组能力。
第一组是 跨会话记忆能力:
• 搜索历史 Codex 会话; • 找回上次讨论过的方案、错误和命令; • 只返回短片段,避免把整段历史粗暴塞回上下文; • 对敏感内容做基础脱敏。
第二组是 可审查学习能力:
• 从最近会话中提取记忆候选; • 提取可复用技能候选; • 提取已有技能的补丁候选; • 扫描候选中的密钥、私有 URL、脱敏值和 prompt injection 风险; • 只在用户明确批准后,把短记忆写入长期 USER.md;• 生成技能索引、学习 inbox 汇总和任务结束提醒报告。
换句话说,它让 Codex 从“只会在当前会话里学习”,变成“可以把有价值的经验沉淀成长期资产”。
但这套长期资产不是自动乱写的,而是分层管理的:
USER.md | |
AGENTS.md | |
这个分层非常重要。
因为一个失控的长期记忆文件,迟早会变成新的技术债。
三、项目架构:轻量,但不是随便拼凑
项目安装后,会在本机创建两类核心目录:
$HOME/.agents/skills ├─ session-recall └─ memory-capture$HOME/.codex ├─ memories ├─ skill-candidates ├─ nudge-reports ├─ skill-usage.json ├─ skills-index.md └─ learning-inbox-summary.md核心模块如下:
session-recall | |
memory-capture | |
codex_memory_nudge.py | |
promote_memory.py | USER.md |
promote_candidates.py | |
scan_skill_candidates.py | |
generate_skills_index.py | |
summarize_learning_inbox.py |
所有运行脚本都使用 Python 标准库实现。
这意味着:
• 不依赖 PowerShell; • 不需要第三方 Python 包; • Windows、macOS、Linux 都可以使用; • 安装脚本只复制仓库里的真实文件,不在脚本里内嵌大段生成内容。
四、为什么默认只生成候选,而不是直接写入记忆?
因为“会学习”不等于“应该自动相信自己学到的一切”。
如果 AI 把所有聊天内容都写进长期记忆,会很快出现问题:
• 临时任务描述变成长期规则; • 项目事实混入全局偏好; • 验证日志被当成经验; • 助手自己的进展说明被当成用户偏好; • 已脱敏内容被错误保留; • 多个偏好互相冲突; • 长期记忆越来越臃肿。
因此,这个项目选择了一条更克制的路线:
自动发现,人工确认。自动扫描,显式晋升。自动总结,但不自动改写长期行为。
例如任务结束时运行:
python "$HOME/.agents/skills/memory-capture/scripts/codex_memory_nudge.py"它会生成很多 review artifacts:
$HOME/.codex/memories/inbox$HOME/.codex/skill-candidates/inbox$HOME/.codex/skill-candidates/patches$HOME/.codex/nudge-reports但它不会自动启用新 skill,也不会绕过审查直接修改长期偏好。
真正写入长期记忆,需要显式执行:
python "$HOME/.agents/skills/memory-capture/scripts/promote_memory.py" \ --text "Prefer concise engineering handoffs with verification and residual risk." \ --approved这个设计看起来保守,但更适合真实工程环境。
五、安装和验证
克隆仓库:
git clone https://github.com/newcatshuang/codex-self-improving-loop.gitcd codex-self-improving-loop安装:
python install.py安装完成后,重启 Codex 或打开一个新会话,让 skill discovery 重新加载。
可以先用临时目录验证安装逻辑:
python tests/verify-install.py --codex-root /tmp/codex-sil --agents-root /tmp/agents-silWindows 也可以这样:
python tests/verify-install.py --codex-root C:/Temp/codex-sil --agents-root C:/Temp/agents-sil验证通过后,再使用默认安装目录。
六、日常使用方式
1. 检索历史会话
当你想找回上次讨论内容时,可以运行:
python "$HOME/.agents/skills/session-recall/scripts/search_sessions.py" \ --query "previous error" \ --max-results 10它会返回命中的历史片段,而不是整段会话。
适合场景:
• “上次那个方案是什么?” • “之前这个错误怎么处理的?” • “继续上次的改造思路。” • “找一下我们之前有没有验证过这个命令。”
2. 从最近会话提取记忆候选
python "$HOME/.agents/skills/memory-capture/scripts/extract_memory.py" \ --max-messages 40输出位置:
$HOME/.codex/memories/inbox你可以打开生成的 Markdown 文件,判断哪些内容值得长期保留。
3. 晋升一条已审查记忆
python "$HOME/.agents/skills/memory-capture/scripts/promote_memory.py" \ --text "Prefer concise engineering handoffs with verification and residual risk." \ --approved晋升后会写入:
$HOME/.codex/memories/USER.md这一步是显式的。
也就是说,长期行为变化必须经过用户确认。
4. 运行任务结束学习闭环
python "$HOME/.agents/skills/memory-capture/scripts/codex_memory_nudge.py"它会依次执行:
• 提取 memory candidates; • 提取 skill candidates; • 提取 skill patch candidates; • 扫描候选安全风险; • 生成 memory budget report; • 记录 skill usage; • 生成 skill index; • 生成 learning inbox summary。
这是最适合放在“任务结束前”的命令。
七、适合哪些使用者?
这个项目适合下面几类人:
• 长期使用 Codex 做真实项目开发; • 经常需要跨会话继续任务; • 希望 Codex 逐渐适应自己的工程习惯; • 希望把常用流程沉淀成 skill; • 希望本地保存,不依赖云端记忆服务; • 对安全、审查、撤回有明确要求; • 不希望 AI 助手在长期记忆里越写越乱。
如果你只是偶尔让 AI 写一段小脚本,这个项目可能不是刚需。
但如果你已经把 Codex 当成长期工程搭档,那么这类自改进闭环会非常有价值。
八、最佳实践
1. 全局记忆只放稳定偏好
适合进入全局 USER.md 的内容:
• 回答风格; • 验证习惯; • 安全偏好; • 通用工作方式; • 明确的长期协作规则。
不适合进入全局 USER.md 的内容:
• 某个项目的特殊规则; • 某次任务的临时结论; • 具体接口路径; • 业务系统细节; • 未验证的猜测。
项目事实应该放进项目级 AGENTS.md。
2. 定期清理 inbox
候选不是记忆。
建议定期检查:
$HOME/.codex/memories/inbox$HOME/.codex/skill-candidates/inbox$HOME/.codex/skill-candidates/patches处理方式可以是:
• 晋升; • 归档; • 删除; • 移到项目级文档; • 改写成正式 skill。
3. 谨慎使用自动晋升
promote_candidates.py --auto-promote 只适合处理:
• 短句; • 重复出现; • 明确安全; • 明确属于用户偏好或避免规则。
不适合处理:
• 长段总结; • 项目事实; • 模糊经验; • 含敏感信息的内容; • 没有上下文验证的结论。
4. skill 应该是流程,不是流水账
好的 skill 应该描述:
• 什么时候使用; • 如何判断适用; • 执行步骤; • 常见失败模式; • 验证方式。
不要把一次任务的聊天记录直接变成 skill。
九、这个项目的价值
Codex Self-Improving Loop 的价值不在于“多一个脚本集合”,而在于它提供了一种更健康的 AI 工程协作模式:
不是让 AI 记住一切,而是让 AI 发现值得记住的东西。不是让 AI 自动改变自己,而是让改变经过审查、验证和撤回。不是把上下文无限拉长,而是把经验沉淀成结构化资产。这套机制让 Codex 更像一个长期协作的工程伙伴:
• 它能回忆; • 它能提炼; • 它能生成候选; • 它能识别风险; • 它能沉淀偏好; • 它能提出技能改进; • 它也能在必要时撤回影响。
对真实软件开发来说,这比单次生成能力更重要。
结语
AI 编程助手的下一步,不只是更强的模型,也包括更好的协作记忆、更可靠的工作流和更可控的自我改进机制。
Codex Self-Improving Loop 尝试用一种轻量、本地、可审查的方式解决这个问题。
它坚持一个原则:
让 AI 主动发现经验,但让人决定什么值得留下。
项目地址:
https://github.com/newcatshuang/codex-self-improving-loop如果你正在长期使用 Codex,并且希望它不再每次都从零开始,而是能随着你的工程实践逐步成长,这个项目值得试一试。
夜雨聆风