乐于分享
好东西不私藏

给 Codex 装上“自我进化回路”:让 AI 编程助手真正越用越懂你

给 Codex 装上“自我进化回路”:让 AI 编程助手真正越用越懂你

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
可复用流程
Skill Candidate
已有 skill 的缺口
Skill Patch Candidate
可疑或含糊内容
保留在 review inbox
密钥和敏感信息
阻断,不允许晋升

这个分层非常重要。

因为一个失控的长期记忆文件,迟早会变成新的技术债。


三、项目架构:轻量,但不是随便拼凑

项目安装后,会在本机创建两类核心目录:

$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
检索本地 Codex 历史会话
memory-capture
提取、扫描、晋升、归档学习候选
codex_memory_nudge.py
任务结束时运行完整 review-mode 学习闭环
promote_memory.py
将审查过的记忆写入 USER.md
promote_candidates.py
评分、自动晋升安全重复候选、归档已处理候选
scan_skill_candidates.py
扫描 skill 候选中的风险内容
generate_skills_index.py
生成已安装 skill 索引
summarize_learning_inbox.py
汇总学习 inbox 状态

所有运行脚本都使用 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-sil

Windows 也可以这样:

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,并且希望它不再每次都从零开始,而是能随着你的工程实践逐步成长,这个项目值得试一试。