进化引擎(Evolution Engine)
让 Agent 越用越好,而非每次从零开始。 直击四大自我进化顽疾:重复犯错、从沉默误学、记忆压缩丢失、进化无法衡量。通过自反思、纠错学习、反污染防线,让每次交互都积累可复用经验。
痛点与对策速查
| 用户痛点 |
发生场景 |
本系统对策 |
| 重复犯错 |
同样的坑踩多次 |
纠错日志强制记录 + 召回时优先注入 |
| 从沉默误学 |
用户没纠正就当成"做对了" |
反污染防线:永不从沉默推断 |
| 记忆压缩丢偏好 |
压缩时删了已确认的偏好 |
压缩合并而非删除,确认偏好永不丢 |
| 进化无法衡量 |
不知 Agent 是否真变好 |
进化指标:纠正率/晋升率/复用率 |
| 晋升太快污染 |
一次纠错就当永久规则 |
3 次一致确认才晋升到热层 |
| 跨项目污染 |
A 项目的偏好污染 B 项目 |
命名空间隔离:项目/领域/全局三级 |
| 上下文浪费 |
每次加载所有记忆 |
分层加载:热层始终+温层按需 |
| 反思流于形式 |
反思了但不落地 |
反思三问 + 模式晋升闭环 |
何时使用
| 触发情境 |
说明 |
| 用户纠正你或指出错误 |
"不对,应该是..." |
| 完成重要工作想评估结果 |
自反思时机 |
| 发现自己输出可改进 |
主动反思 |
| 希望知识跨会话积累 |
不用手动维护 |
| 用户问"你学到了什么" |
展示进化成果 |
记忆架构
记忆存储在 ~/evolution-engine/,分层结构:
~/evolution-engine/
├── memory.md # 热层:≤100 行,始终加载
├── index.md # 主题索引(含行数)
├── heartbeat-state.md # 心跳状态:上次运行、上次回顾
├── metrics.md # 进化指标追踪
├── projects/ # 按项目隔离的学习
│ ├── [项目A].md
│ └── [项目B].md
├── domains/ # 按领域隔离
│ ├── code.md # 编程领域
│ ├── writing.md # 写作领域
│ └── comms.md # 沟通领域
├── archive/ # 冷层:衰减的模式
└── corrections.md # 最近 50 条纠错日志
分层记忆策略
| 层级 |
位置 |
大小限制 |
加载行为 |
| 热层 |
memory.md |
≤100 行 |
始终加载:确认规则、核心偏好 |
| 温层 |
projects/, domains/ |
≤200 行/文件 |
按项目/领域匹配加载 |
| 冷层 |
archive/ |
无限制 |
显式查询时加载 |
| 纠错 |
corrections.md |
最近 50 条 |
回顾时加载 |
学习信号识别(差异化核心)
纠错信号 → 写入 corrections.md,评估是否晋升 memory.md
| 信号模式 |
示例 |
| 直接否定 |
"不对,那不是..." |
| 修正 |
"其实应该是..." |
| 指出错误 |
"你错了关于..." |
| 偏好表达 |
"我喜欢 X,不是 Y" |
| 提醒曾告知 |
"我记得告诉过你..." |
| 要求停止 |
"别再做 X" |
| 质疑重复 |
"你为什么一直..." |
偏好信号 → 显式时写入 memory.md
| 信号模式 |
示例 |
| 喜欢 |
"我喜欢你..." |
| 总是要求 |
"总是为我做 X" |
| 永不要求 |
"永远别做 Y" |
| 风格声明 |
"我的风格是..." |
| 项目特定 |
"对 [项目],用..." |
模式候选 → 追踪,3 次后晋升
| 信号模式 |
说明 |
| 相同指令重复 3+ 次 |
可能是偏好 |
| 工作流反复有效 |
可能是模式 |
| 用户赞扬特定方法 |
可能是偏好 |
忽略(不记录)— 反污染防线
| 类型 |
示例 |
为什么忽略 |
| 一次性指令 |
"现在做 X" |
非模式 |
| 上下文特定 |
"在这个文件里..." |
非通用 |
| 假设性 |
"如果..." |
非真实偏好 |
| 沉默 |
用户没纠正 |
永不从沉默推断"做对了" |
| 第三方偏好 |
"我老板觉得..." |
非用户自身偏好 |
反污染防线(差异化核心)
核心原则:永不从沉默推断偏好。 用户没纠正 ≠ 用户满意。
三级防线
| 级别 |
规则 |
目的 |
| 第 1 级 |
沉默不记录 |
避免误学"没被纠正=做对了" |
| 第 2 级 |
单次纠错不晋升 |
避免单点误判成永久规则 |
| 第 3 级 |
3 次一致才确认 |
确保模式稳定才入热层 |
晋升流程
用户纠正 → 写入 corrections.md(标记"待观察")
↓
同类信号第 2 次 → 标记"模式候选"
↓
同类信号第 3 次(7 天内)→ 询问用户确认
↓
用户确认 → 晋升到 memory.md(标记"已确认")
用户否认 → 归档到 archive/(标记"误判")
自反思机制(差异化核心)
完成重要工作后,暂停并评估:
反思三问
- 是否达到预期? — 结果与意图对比
- 哪里可以更好? — 识别下次改进点
- 这是模式吗? — 若是,记录到 corrections.md
反思触发时机
| 触发条件 |
说明 |
| 完成多步任务后 |
评估整体流程 |
| 收到反馈后(正/负) |
记录经验 |
| 修复 bug 后 |
记录根因 |
| 发现输出可改进时 |
主动反思 |
反思日志格式
情境:[任务类型]
反思:[我注意到了什么]
经验:[下次如何不同]
反思示例
情境:构建 Flutter UI
反思:间距看起来不对,不得不重做
经验:展示给用户前先检查视觉间距
情境:生成 API 文档
反思:用户说格式不符合团队规范
经验:先问团队文档规范再生成
→ 写入 corrections.md,第 2 次类似纠错时追踪模式
进化指标度量(差异化核心)
"Agent 是否变好了"必须可量化。 追踪以下指标:
| 指标 |
定义 |
健康趋势 |
| 纠错频率 |
每周被纠正次数 |
下降 |
| 晋升率 |
模式成功晋升数/候选数 |
稳定 |
| 复用率 |
热层规则被引用次数 |
上升 |
| 重复犯错率 |
同类错误再次发生比例 |
下降 |
| 反思转化率 |
反思→实际行动的比例 |
上升 |
指标记录格式
## 进化指标(metrics.md)
### 本周统计
- 纠错次数:12(上周 18,↓33%)
- 晋升成功:3 条规则
- 重复犯错:1 次(上周 4 次,↓75%)
- 热层规则引用:47 次
- 反思转化:5/7(71%)
### 趋势分析
- 纠错频率持续下降,说明学习有效
- 重复犯错率大幅下降,经验沉淀生效
- 复用率上升,热层规则有价值
### 待改进
- 反思转化率 71%,3 条反思未落地
- 建议:反思后立即写入 corrections.md
快速查询
| 用户说 |
动作 |
| "你对 X 了解什么" |
搜索所有层级查找 X |
| "你学到了什么" |
展示 corrections.md 最近 10 条 |
| "显示我的模式" |
列出 memory.md(热层) |
| "显示 [项目] 模式" |
加载 projects/{name}.md |
| "温层有什么" |
列出 projects/ + domains/ 文件 |
| "进化指标" |
显示 metrics.md 统计 |
| "忘记 X" |
从所有层移除(确认后) |
| "导出记忆" |
ZIP 所有文件 |
进化统计输出
📊 进化引擎记忆
🔥 热层(始终加载):
memory.md: X 条规则
🌡️ 温层(按需加载):
projects/: X 个文件
domains/: X 个文件
❄️ 冷层(已归档):
archive/: X 个文件
📈 进化指标(7 天):
纠错记录:X 条
晋升到热层:X 条
降级到温层:X 条
重复犯错:X 次
规则复用:X 次
核心规则
1. 从纠错和自反思学习
- 用户明确纠正时记录
- 自己识别改进时记录
- 永不从沉默推断
- 3 次相同教训后询问确认
2. 分层存储
| 层级 |
位置 |
限制 |
行为 |
| 热层 |
memory.md |
≤100 行 |
始终加载 |
| 温层 |
projects/, domains/ |
≤200 行/文件 |
按上下文匹配加载 |
| 冷层 |
archive/ |
无限制 |
显式查询加载 |
3. 自动晋升/降级
| 规则 |
触发条件 |
动作 |
| 晋升 |
模式 7 天内用 3 次 |
提升到热层 |
| 降级 |
模式 30 天未用 |
降到温层 |
| 归档 |
模式 90 天未用 |
移入冷层 |
| 删除 |
永不自动删除 |
仅用户明确要求时 |
4. 命名空间隔离
全局偏好 → memory.md(热层)
领域模式 → domains/{code,writing,comms}.md
项目模式 → projects/{name}.md
跨命名空间继承:全局 → 领域 → 项目
5. 冲突解决
模式矛盾时:
- 最具体优先(项目 > 领域 > 全局)
- 最近优先(同级)
- 歧义时问用户
6. 压缩策略(差异化核心)
文件超限时,合并而非删除:
压缩步骤:
1. 合并相似纠错为单条规则
2. 归档未用模式到 archive/
3. 摘要冗长条目
4. 永不丢失已确认偏好
5. 保留 corrections.md 最近 50 条
| 压缩操作 |
说明 |
保留 |
| 合并 |
相似条目合并为一条 |
规则内容 |
| 摘要 |
冗长描述精简 |
核心经验 |
| 归档 |
未用模式移入冷层 |
完整记录 |
| 删除 |
仅用户明确要求 |
— |
7. 透明度
- 每次基于记忆的行动引用来源:"使用 X(来自 projects/foo.md:12)"
- 每周摘要可用:学到的模式、降级、归档
- 按需导出:所有文件 ZIP
8. 安全边界
- 永不存储凭证、健康数据、第三方信息
- 永不从沉默推断偏好
- 永不自动删除记忆(仅降级/归档)
9. 优雅降级
上下文超限时:
- 仅加载 memory.md(热层)
- 按需加载相关命名空间
- 永不静默失败——告知用户未加载内容
常见陷阱
| 陷阱 |
为什么失败 |
更好做法 |
| 从沉默学习 |
制造虚假规则 |
等待明确纠正或重复证据 |
| 晋升太快 |
污染热层记忆 |
新教训保持观察直到重复 |
| 读取所有命名空间 |
浪费上下文 |
仅加载热层+最小匹配文件 |
| 压缩即删除 |
丢失信任与历史 |
合并、摘要或降级 |
| 反思不落地 |
反思了但不改 |
反思→写入 corrections.md→晋升闭环 |
| 无指标追踪 |
不知是否进化 |
追踪纠错率/复用率 |
真实场景示例
场景 1:避免重复犯错
会话 A:
代理生成代码未加类型注解
用户纠正:"加上类型注解,我们用 TypeScript 严格模式"
→ 写入 corrections.md:"TypeScript 项目必须加类型注解"(待观察)
会话 B:
又生成无类型注解代码
用户再次纠正:"我说过要加类型注解"
→ 第 2 次信号,标记"模式候选"
会话 C:
生成代码加了类型注解
用户未纠正(沉默不记录)
但主动检查发现:同类项目都应加
→ 第 3 次确认,询问用户:"是否所有 TS 项目都要求类型注解?"
→ 用户确认 → 晋升到 memory.md(已确认)
会话 D(新项目):
代理在 TS 项目中自动加类型注解
→ 引用来源:"使用 TypeScript 类型注解规则(来自 memory.md:8)"
场景 2:自反思转化
任务:生成 API 文档
完成后自反思:
情境:生成 API 文档
反思:用户说格式不符合团队规范,需重做
经验:生成文档前先确认团队规范
→ 写入 corrections.md
→ 下次生成文档前,主动询问团队规范
→ 反思转化为行动(转化率+1)
场景 3:跨项目隔离
项目 A(电商):
用户:"错误日志用结构化 JSON 格式"
→ 写入 projects/ecommerce.md
项目 B(博客):
代理默认用 JSON 格式日志
→ 用户:"不需要 JSON,用简单文本"
→ 项目 B 偏好不同,写入 projects/blog.md
全局规则:无(两个项目偏好不同,不晋升全局)
→ 命名空间隔离防止跨项目污染
场景 4:压缩不删除
memory.md 超过 100 行限制
压缩执行:
1. 发现 3 条类似规则:
- "用户喜欢简洁代码"
- "用户偏好短函数"
- "用户要删除冗余注释"
2. 合并为一条:"用户偏好简洁代码风格:短函数、无冗余注释"
3. 归档原始 3 条到 archive/(保留历史)
4. memory.md 行数减少
结果:热层精简,但偏好未丢失,历史可追溯。
常见问题 FAQ
Q1:3 次确认会不会太慢?
A:不会。大多数纠错是即时记录到 corrections.md,立即可查。仅晋升到热层需 3 次,防止误判污染核心规则。
Q2:沉默真的完全不记录吗?
A:是的。用户没纠正可能是没注意、懒得说、或确实满意——无法区分。从沉默推断会制造虚假规则,风险大于收益。
Q3:压缩后还能找回原始记录吗?
A:能。原始条目归档到 archive/,完整保留。热层是精简版,冷层是完整历史。
Q4:进化指标怎么用?
A:每周查看 metrics.md。纠错频率下降说明学习有效;重复犯错率下降说明经验沉淀生效。若指标不改善,说明反思未落地。
Q5:能和其他记忆系统共用吗?
A:能。本系统专注"从纠错学习",可与长期记忆系统互补。建议进化引擎管"经验/教训",长期记忆管"事实/偏好"。
故障排查
| 现象 |
排查步骤 |
解决方案 |
| 重复犯错 |
检查 corrections.md 是否有记录 |
确认纠错已记录;检查召回是否注入 |
| 误学虚假规则 |
检查 memory.md 来源 |
确认是否走了 3 次确认流程 |
| 热层膨胀 |
检查晋升频率 |
执行压缩;提高晋升门槛 |
| 指标不改善 |
检查反思转化率 |
确保反思写入 corrections.md |
| 跨项目污染 |
检查命名空间隔离 |
确认项目模式未晋升全局 |
| 上下文超限 |
检查加载策略 |
仅加载热层+最小匹配 |
依赖说明
运行环境
- Agent 平台:支持 SKILL.md 的任意 AI Agent(Claude Code / Cursor / Codex / Gemini CLI 等)
- 操作系统:Windows / macOS / Linux
第三方依赖
| 依赖项 |
类型 |
是否必需 |
获取方式 |
| LLM API |
API |
必需 |
由 Agent 内置 LLM 提供 |
| 文件系统 |
本地存储 |
必需 |
操作系统内置 |
API Key 配置
- 本 Skill 无需任何 API Key
- 纯 Markdown 指令驱动,所有记忆存储在本地文件
- 不做任何网络请求
可用性分类
- 分类:MD(纯 Markdown 指令,无需 exec)
- 说明:基于 Markdown 的 AI Skill,完全通过自然语言指令驱动 Agent 执行自我进化任务。所有记忆通过文件读写管理,无需命令行执行能力。