Proactive Self Improving
v1.0.0自动捕获经验并安全进化的技能。触发条件:(1)命令/操作失败时→记ERRORS.md (2)被用户纠正('不对'/'应该是')时→记LEARNINGS.md (3)用户需要不存在的能力时→记FEATURE_请求S.md (4)外部API/工具出错时→记ERRORS.md (5)发现自己知识过时/错误时→记LEARNINGS.md (6)发现更好做法时→记LEARNINGS.md (7)每个任务完成时→回顾过程,有新经验则记LEARNINGS.md。去重原则:如果没有新经验或已有条目已覆盖则跳过不写。每次写入同时在.learnings/CHANGE记录.md追加JSONL日志。经验反复出现≥3次时晋升到代理S.md/工具S.md/SOUL.md。详见正文。
运行时依赖
版本
<!-- 模式: {"ts":"ISO-8601","action":"添加|promote|提取|resolve","type":"learning|error|feature","id":"entry ID","summary":"≤100字","tar获取":"晋升目标(可选)"} -->
安装命令
点击复制技能文档
Proactive Self-Improving 代理
自动捕获经验 · 安全进化 · 记录轨迹
让 代理 在日常工作中自动识别错误、纠正和最佳实践,结构化记录,安全地将经验沉淀为长期能力。
目录 核心理念 经验记录系统 经验进化路径 操作日志 行为准则 快速参考
- 核心理念
两条腿走路:
记录 — 每次犯错、被纠正、发现更好做法时,立刻结构化记录 进化 — 反复出现的经验自动晋升为永久能力,但有护栏防止漂移
核心法则:
如果一个经验值得记住,就必须写到文件里。脑子里的"记住了"不算数。
去重法则:
触发 ≠ 必须写入。每次触发时先判断:这个经验是否真正新颖?如果没什么可学的,或者本质上已经包含在已有条目中,直接跳过,不写入。避免用重复的低价值记录污染 .learnings/。
- 经验记录系统
检测到以下 7 种场景时,评估是否有新经验值得记录:
# 场景 记录到 类别 1 命令/操作失败 ERRORS.md - 2 用户纠正("不对"/"应该是…"/"Actually…") LEARNINGS.md correction 3 用户需要不存在的能力 FEATURE_请求S.md - 4 外部 API/工具出错 ERRORS.md - 5 发现自己知识过时/错误 LEARNINGS.md knowledge_gap 6 发现了更好的做法 LEARNINGS.md best_practice 7 任务完成时 LEARNINGS.md task_review 场景 7:任务完成触发(Task Review)
每次完成一个任务后,主动回顾:
这次过程中踩了什么坑? 有没有走弯路?下次怎么做更快? 有没有发现新的工具用法或技巧? 有没有什么值得其他 代理 也知道的?
如果有真正新颖的经验 → 写入 LEARNINGS.md 如果没什么可学的,或已有条目已覆盖 → 跳过,不写入
学术场景扩展
在论文检索/分析场景中,额外关注:
📚 论文关键结论 — 解析出的重要发现或反直觉结论 🏷️ 分类决策 — 为什么把论文归入某个类别 ⚖️ 评分依据 — review 打分时的关键判断理由 🔍 检索技巧 — 某个搜索策略特别有效或无效 检测关键词
纠正信号:
"不对" / "不是" / "错了" / "应该是" / "Actually" / "No, I meant"
能力请求信号:
"能不能…" / "有没有办法…" / "要是能…" / "Can you…"
知识空白信号:
用户提供了你不知道的信息 API 行为和你的理解不一致 文档内容已过时 2.2 文件体系 .learnings/ ├── LEARNINGS.md # 经验/纠正/最佳实践/任务回顾 ├── ERRORS.md # 错误日志 ├── FEATURE_请求S.md # 能力请求 └── CHANGE记录.md # 操作日志(详见第 4 节)
2.3 记录格式 Learning 条目
[LRN-YYYYMMDD-XXX] category
Priority: low | medium | high | critical 状态: pending | resolved | promoted | promoted_to_技能 Area: re搜索 | infra | 工具s | docs | config
内容
简述:发生了什么、为什么错/不好、正确/更好的做法是什么。建议修复
具体应该怎么改、改哪里。元数据
- Source: error | correction | user_feedback | task_review | best_practice
- See Also: LRN-XXXXXXXX-XXX(关联条目)
- Pattern-Key: xxx(可选,用于递归模式检测)
- Promoted-To: 代理S.md(仅晋升后填写)
Error 条目
[ERR-YYYYMMDD-XXX] 出错的工具/命令
Priority: high 状态: pending | resolved Area: re搜索 | infra | 工具s | docs | config
摘要
简述什么操作失败了。错误信息
\实际的报错输出
\上下文
- 执行的命令/操作
- 输入参数
- 环境信息(如相关)
建议修复
可能的解决方案。元数据
- Reproducible: yes | no | unknown
- See Also: ERR-XXXXXXXX-XXX
Feature 请求 条目
[FEAT-YYYYMMDD-XXX] 能力名称
Priority: medium 状态: pending | resolved Area: re搜索 | infra | 工具s | docs | config
需要的能力
用户想做什么。场景
为什么需要、解决什么问题。复杂度
simple | medium | complex建议实现
怎么做、可以扩展哪个现有功能。元数据
- Frequency: first_time | recurring
2.4 ID 生成规则
格式:TYPE-YYYYMMDD-XXX
TYPE:LRN(经验)、ERR(错误)、FEAT(功能请求) YYYYMMDD:当天日期 XXX:三位序号(001、002…)或随机三字符(A7B)
同一天同类型递增序号。
- 经验进化路径
当一条 learning 足够重要且通用时,将其精炼后写入永久文件:
经验类型 晋升到 举例 工作流改进 代理S.md "批量处理论文时每篇独立 spawn" 工具使用技巧 工具S.md "Semantic Scholar API 限流 3s 间隔" 行为模式 SOUL.md "不确定分类时用 unclassified/"
晋升步骤:
精炼:把冗长的经验浓缩为一条简洁的规则 写入:添加到目标文件的对应章节 更新原条目:状态 → promoted,填写 Promoted-To 记录日志:在 CHANGE记录.md 追加一条 promote 记录 3.2 递归模式检测
当记录新条目时,先搜索是否有相似的旧条目:
grep -r "关键词" .learnings/
找到相似条目 → 添加 See Also 互相链接 同一模式出现 ≥3 次 → 触发自动晋升,写入永久文件 反复出现说明不是偶发事件,值得固化为规则 3.3 技能提取
当一条经验满足以下任意条件时,可提取为独立 技能:
条件 说明 有 2+ 个 See Also 链接 同类问题反复出现 状态 为 resolved 且验证有效 解决方案被验证过 非显而易见 需要调试/探索才发现 跨项目通用 不是特定项目的特殊情况
提取步骤:
创建 技能s/<技能-name>/技能.md 将解决方案写成独立的、自包含的技能说明 更新原条目:状态 → promoted_to_技能 记录日志:CHANGE记录.md 追加 提取 记录 3.4 安全护栏 ADL 协议(Anti-Drift Limits)— 防止漂移
禁止的进化:
❌ 不为了"看起来聪明"而增加复杂度 ❌ 不做无法验证效果的改动 ❌ 不用"直觉""感觉"作为改动理由 ❌ 不为了新奇牺牲稳定性
优先级排序:
稳定性 > 可解释性 > 可复用性 > 可扩展性 > 新奇性
VFM 协议(Value-First Modification)— 价值优先
晋升/提取前先打分:
维度 权重 问题 检索复用性 3x 未来执行任务时会反复用到吗? 错误预防 3x 能避免以后犯同样错误吗? 分析质量 2x 能提升产出的深度/准确性吗? 效率提升 2x 能节省未来处理时间吗?
加权总分 < 50 → 不晋升,留在 .learnings/ 即可。
黄金法则:
"这个改动能让未来的我用更少成本解决更多问题吗?"
- 操作日志(CHANGE记录.md)
每次对 .learnings/ 做写入操作时,同步追加一条日志。
格式
文件头部为 markdown 说明,主体为 JSONL 代码块:
# Change记录
\
{"ts":"2026-03-02T11:00:00+08:00","action":"添加","type":"learning","id":"LRN-20260302-001","summary":"Semantic Scholar API 需要 3s 间隔防限流"}
{"ts":"2026-03-02T14:30:00+08:00","action":"添加","type":"error","id":"ERR-20260302-001","summary":"pdfplumber 遇到扫描版 PDF 返回空文本"}
{"ts":"2026-03-03T09:00:00+08:00","action":"promote","type":"learning","id":"LRN-20260302-001","summary":"API 限流规则","tar获取":"工具S.md"}
{"ts":"2026-03-05T10:00:00+08:00","action":"提取","type":"learning","id":"LRN-20260304-002","summary":"扫描版 PDF 处理","tar获取":"技能s/pdf-fallback"}
{"ts":"2026-03-05T12:00:00+08:00","action":"resolve","type":"error","id":"ERR-20260302-001","summary":"改用 OCR fallback 方案"}
\字段说明 字段 类型 必填 说明 ts string ✅ ISO-8601 时间戳,带时区 action enum ✅ 添加 / promote / 提取 / resolve type enum ✅ learning / error / feature id string ✅ 对应条目 ID(如 LRN-20260302-001) summary string ✅ ≤100 字摘要 tar获取 string ❌ 仅 promote / 提取 时填写,目标路径 action 枚举 action 含义 触发时机 添加 新增记录 写入 LEARNINGS/ERRORS/FEATURE_请求S 时 promote 晋升 经验写入 代理S.md / 工具S.md / SOUL.md 时 提取 提取技能 经验提取为独立 技能 时 resolve 已解决 问题修复、标记 resolved