Install
openclaw skills install @muippt/mu-self-evolveAI Agent 持续进化系统:每日经验沉淀+每周错误反思,正向提炼与负向纠偏合一。v3.0 新增 VFM 确定性验算、评分+衰减淘汰、WHERE×WHY 病理归档、主动 Skill 合成。触发词:记录错误、进化系统、自我反思、踩坑记录、self-evolve、self-improve。
openclaw skills install @muippt/mu-self-evolveIRON LAW:
read → write 覆写,禁止使用 edit 工具。 原因:本流程耗时长,edit 的 oldText 基于早期读取的内容构造,等到实际执行时文件可能已被其他会话修改,导致匹配失败。用 write 全量覆写不依赖文本匹配,天然避免此问题无例外。
把经验、错误、纠正、知识缺口沉淀为持久记忆,正向提炼 + 负向纠偏,形成完整进化闭环。
适用于任何基于 LLM 的 AI Agent(OpenClaw / Claude Code / Cursor 等),让 Agent 像人一样从经验中学习。
文件结构与领域标签见 references/file-structure.md
Claude Code 环境兼容说明见 references/claude-code-compat.md
openclaw cron list 查找名称含"进化"或"evolve"的任务openclaw cron add \
--name "🧬 每日自我进化" \
--cron "30 19 * * *" \
--tz "Asia/Shanghai" \
--exact \
--session isolated \
--announce \
--message "执行每日自我进化流程(见 mu-self-evolve SKILL.md)。今天是周几?如果是周五,额外执行【第六步:周度反思】。"
Claude Code 环境下用系统 crontab 或手动触发,详见 references/claude-code-compat.md
前置:读取今日日记
若 memory/$(date +%Y-%m-%d).md 不存在(今天还没有日记),跳到第六步发摘要说明"今日无日记记录"。
读取今日日记 — memory/YYYY-MM-DD.md 梳理当天经验
分类录入(含冲突裁决) — 纠正→LEARNINGS.md,错误→ERRORS.md,新需求→FEATURE_REQUESTS.md。格式模板见 references/record-templates.md
read → write 覆写(见 IRON LAW #3)grep -i "关键词" .learnings/LEARNINGS.md 搜索同主题条目wc -l .learnings/LEARNINGS.md,若 >500 行 → 运行淘汰评分脚本(见下方"淘汰机制"),根据建议先归档再录入;未超限则直接录入wc -l .learnings/ERRORS.md,若 >300 行 → 运行淘汰评分脚本处理grep -r "Pattern-Key" .learnings/ .learnings/archive/
检查提升条件 — 对候选条目运行 VFM 验算脚本:
python3 scripts/vfm_verify.py <pattern-key>
candidate(候选),待更多数据积累后重新验算更新长期记忆 — 最重要 1-3 条洞察追加到 MEMORY.md(保持 ≤80 行)
read → write 覆写(见 IRON LAW #3)子Agent执行质量回顾 — 检查今日子Agent是否通读SKILL.md、产出是否符合规范
发送摘要 — 通知木老师进化结果
详细步骤见 references/weekly-reflection.md
概览(含关键判断条件):
memory/narratives/YYYY-MM-DD.md,按 (WHERE×WHY) 病理键结构化
判断:有可写内容(至少1条值得反思的模式)才生成;无内容则跳过,不强行凑字数memory/YYYY-MM-DD.md 和 memory/narratives/YYYY-*.md 移动到 memory/archive/(保留原文件名,不删除不合并)
范围:同时覆盖 daily notes + narratives,两者用同一个 30天规则
判断:以文件名日期为准,今天日期 - 文件日期 > 30天 → 移动# 先做评委偏差审计
python3 scripts/bias_audit.py
# 再跑淘汰评分
python3 scripts/eviction_score.py
# 如需单独处理 ERRORS.md
python3 scripts/eviction_score.py .learnings/ERRORS.md
effective_score = VFM × 0.5^(age_days/30),半衰期30天
🪶 淘汰评分:
- LEARNINGS: X条 → 保留N / 归档N / 当前行数X
- ERRORS: X条 → 保留N / 归档N / 当前行数X
- 偏差审计: PASS/FAIL
v3.0 用评分+衰减淘汰替代行数硬截断,核心公式:
effective_score = VFM × 0.5^(days_since_last_seen / 30)
| 状态 | 条件 | 处理 |
|---|---|---|
| promoted | 状态=promoted | 移出至永久记忆 |
| resolved+旧 | 状态=resolved 且 >30天 | 移至 archive |
| 高复现 | Recurrence≥2 | 豁免(不论分数和年龄) |
| 仅1次+旧 | Recurrence=1 且 >14天 | 标记 dormant,移至 archive |
| 低分+旧 | effective<25 且 >14天 | 移至 archive |
| 正常 | effective≥25 或 <14天 | 保留 |
被检索命中(grep 匹配到)时,Agent 手动更新 Last-Seen 日期 → 衰减重置
| 情况 | 操作 |
|---|---|
| 命令/工具失败 | 记录到 .learnings/ERRORS.md,标注 WHERE+WHY |
| 木老师纠正我 | 记录到 .learnings/LEARNINGS.md,category: correction |
| 木老师正向反馈 | 记录到 LEARNINGS.md,category: positive_signal |
| 木老师要我没有的功能 | 记录到 .learnings/FEATURE_REQUESTS.md |
| 内部 API/MCP 失败 | 记录到 ERRORS.md,附接口和 token 状态,WHERE=api_call,WHY=具体根因 |
| 知识过时/有盲区 | 记录到 LEARNINGS.md,category: knowledge_gap |
| 发现更好做法 | 记录到 LEARNINGS.md,category: best_practice |
| 反复出现的模式 | 加 Pattern-Key,验算通过后提升 |
| 类似已有条目 | 录入前冲突裁决:合并/覆盖/新增 |
自动识别以下信号并记录:
纠正信号 → LEARNINGS.md correction:
功能需求信号 → FEATURE_REQUESTS.md:
知识缺口信号 → LEARNINGS.md knowledge_gap:
错误信号 → ERRORS.md:
正向反馈信号 → LEARNINGS.md positive_signal:
偏好信号 → LEARNINGS.md best_practice:
| 经验类型 | 提升目标 | 示例 |
|---|---|---|
| 行为风格、原则 | SOUL.md | "输出用数字序号不用 bullet" |
| 工作流、子Agent规则 | AGENTS.md | "有专属子Agent先分配给子Agent" |
| 工具使用、API配置 | TOOLS.md | "发文件用本地路径而非远程 URL" |
| 高频场景规律 | MEMORY.md | 偏好设置、常用 ID 等 |
| 可复用能力模式 | 新建 mu-xxx Skill | 独立封装为技能 |
提升条件(v3.0 三重门控):
python3 scripts/vfm_verify.py <pattern-key> 输出置信度≥70VFM 评分(提升前自检):
| 维度 | 权重 | 判断问题 |
|---|---|---|
| 高频使用 | ×3 | 这条规则会每天/每周触发吗? |
| 减少失败 | ×3 | 这条能把之前的翻车变成成功吗? |
| 减轻木老师负担 | ×2 | 能让木老师少解释一句话吗? |
| 节省未来成本 | ×2 | 能让未来的我省时间/token吗? |
每项 0-10 分,加权总分 ≥50 才提升。低于50的留在 LEARNINGS.md 观察。
v3.0 新增:维度二"减少失败"不再仅靠 LLM 估算,需对照 vfm_verify.py 的解决率数据。无数据的条目该维度给0分。
提升后状态改为:
**状态**: promoted
**提升到**: TOOLS.md · "工具规则" 章节
# 统计待处理条目数
grep -h "状态.*pending" .learnings/*.md | wc -l
# 列出高优先级待处理
grep -B5 "优先级.*high\|critical" .learnings/*.md | grep "^## \["
# 搜索特定领域
grep -B2 "领域.*mcp" .learnings/*.md | grep "^## \["
# 按病理键搜索
grep -B2 "WHERE.*mcp" .learnings/*.md | grep "^## \["
回顾动作:
| 条件 | 说明 |
|---|---|
| 反复出现 | 同一病理键(WHERE×WHY)的条目≥3条 |
| 已验证 | 状态 resolved,方案可用 |
| 非显而易见 | 需要调试才能发现 |
| 可复用 | 不是某次任务专属 |
| 木老师说 | "做成 skill"、"以后常用" |
6g 聚类扫描发现满足条件的聚类后,直接生成 Skill 草案(SKILL.md 骨架 + 核心脚本框架),报告木老师确认后走 mu-dev-workflow 安装到 <SKILL_DIR>/mu-xxx/。
vfm_verify.py 需要足够的条目才能产出有意义的置信度评分,早期阶段(条目<5)验算结果参考价值有限派活一句话:"谁+做什么"。子Agent自己匹配Skill→通读SKILL.md→严格执行。
| 文件 | 内容 |
|---|---|
| references/record-templates.md | LRN/ERR/FEAT 三种记录的完整 Markdown 模板(含 WHERE×WH 病理键) |
| references/weekly-reflection.md | 周五第六步:6a错误扫描 + 6b Narrative + 6c规则提议 + 6f评分淘汰 + 6g Skill合成 |
| references/file-structure.md | 文件结构与领域标签说明(含 WHERE/WHY 标签 + 用户自定义标签) |
| references/claude-code-compat.md | Claude Code 环境兼容说明(路径映射+调度降级) |
| scripts/env_detect.py | 环境自动检测(OpenClaw 优先,Claude Code 降级) |
| scripts/vfm_verify.py | VFM 确定性验算脚本(复现/跨任务/解决率/病理集中度→置信度评分) |
| scripts/eviction_score.py | 评分+衰减淘汰脚本(effective_score=VFM×0.5^(age/30)) |
| scripts/bias_audit.py | 评委偏差审计脚本(缺陷注入→验证淘汰机制可信度) |