Skills Evolve(经验沉淀与 Skill 进化)
从用户对话或会话上下文中提取关键经验,识别受影响的 Skill,将知识注入到对应 SKILL.md 中,实现 Skill 的持续进化。
触发条件
- 用户说"总结经验"、"更新 skill"、"经验沉淀"、"把经验写到 skill"
- 用户说"更新 XX skill"、"给 skill 补充知识"
- 用户说"skill 进化"、"evolve"
- 会话结束时用户要求归档本次学到的东西
输入
- 必须: 经验描述(至少包含以下之一):
- 具体的经验内容("审核系统用的是 aix-py 不是 maycur-ai-audit")
- "基于当前会话"(隐式引用整个对话上下文)
- 指向具体文件/代码的定位经验
- 可选: 目标 skill 名称(不指定则自动识别)
经验分类体系
从输入中提取的经验按以下四类分类:
| 类别 | 特征 | 典型注入位置 |
|---|---|---|
| 架构知识 | 系统间关系、项目结构、数据流、多项目架构 | ## 已知{领域}知识 section |
| 代码定位 | 观察名→代码映射、关键文件路径、项目 ID | ## {资源}速查 section 或表格 |
| 排障方法论 | 调试步骤、根因分析模式、五步法 | ## 已知{领域}知识 或 ## {场景}排障指南 |
| 踩坑记录 | 常见错误、注意事项、误判案例 | ## 常见错误与注意事项 section |
执行流程(4 阶段)
阶段 1: 经验提取
- 分析用户提供的信息或当前会话上下文
- 提取关键经验点,每条经验应包含:
- 事实: 具体的知识内容(如"审核代码在 aix-py 的 audit_graph.py")
- Why: 为什么这条经验重要(如"避免在错误项目中搜索")
- 场景: 什么情况下会用到这条经验
- 将每条经验归入上述四类之一
- 向用户展示提取结果,确认无遗漏:
📋 提取到以下经验: 【架构知识】 1. 审核系统三层架构:ai-dispatcher → aix-py → maycur-ai-audit 2. 当前生产使用 aix-py,不是 maycur-ai-audit 【代码定位】 3. 审核 pipeline 核心文件: aix-py/app/graphs/ai_audit/audit_graph.py 4. 常用项目 ID: aix-py=281452, ai-dispatcher=233017, maycur-ai-audit=338301 【排障方法论】 5. Trace→代码五步法:获取trace→定位节点→映射代码→分析数据流→定位根因 6. 大多数"审核错误"是数据准备问题,不是审核逻辑问题 是否需要补充或修改?
阶段 2: 目标识别
- 扫描
skills/目录下所有 SKILL.md,读取 name 和 description - 根据经验内容的关键词匹配相关 skill:
- 经验中提到具体 skill 名 → 直接匹配
- 经验涉及某个工具/平台(SLS、Langfuse、GitLab、Ops)→ 匹配对应 skill
- 经验涉及排障/分析流程 → 匹配 maycur-ai-{log,code,root-cause}-analyzer
- 无法匹配 → 列出所有 skill 供用户选择
- 向用户展示匹配结果,确认更新目标:
📋 识别到以下 skill 需要更新: 1. maycur-ai-root-cause-analyzer — 匹配原因:审核系统架构知识 + 排障方法论 2. gitlaber — 匹配原因:项目 ID 速查表 + 代码搜索技巧 是否全部更新?或选择特定 skill? - 用户确认后,读取目标 SKILL.md 全文
阶段 3: 知识注入
- 分析目标 SKILL.md 的现有结构,确定注入策略
注入策略判断
| 目标 SKILL.md 现状 | 注入策略 |
|---|---|
已有 ## 已知{领域}知识 section |
追加到该 section 末尾 |
已有 ## 常见错误与注意事项 section |
追加踩坑记录到该 section |
| 已有相关速查表格 | 追加行到已有表格 |
| 无相关知识 section | 在 ## 依赖 section 之前 新增 section |
Section 命名规范
- 架构知识:
## 已知{领域}知识(如## 已知系统架构知识、## 已知审核系统架构) - 速查表:
## 常用{资源}速查(如## 常用项目速查、## 常用 API 速查) - 排障方法:
## {场景}排障指南(如## Langfuse Trace 排障指南) - 踩坑记录: 追加到
## 常见错误与注意事项
内容规范
使用表格呈现映射关系(观察名→函数、项目名→ID)
使用代码块呈现架构图和数据流
每条知识附 关键认知(加粗的一句话总结)
避免冗余:不重复 skill 已有的内容
向用户展示拟更新的 diff(变更位置 + 新增内容摘要)
用户确认后,执行 Edit 更新 SKILL.md
阶段 4: 验证与收尾
- 确认所有 SKILL.md 更新成功,无语法错误
- 可选:询问用户是否同步写入 memory 文件
- 输出变更摘要
输出格式
## 📝 Skills Evolve 变更摘要
**经验来源**: [来源描述]
### 变更清单
| Skill | 变更类型 | 变更内容 |
|-------|---------|---------|
| maycur-ai-root-cause-analyzer | 新增 section | 「已知审核系统架构」含三层架构图+节点映射表 |
| gitlaber | 新增 section | 「常用项目速查」含 6 个项目 ID |
### 经验归档
| 类别 | 经验点 |
|------|-------|
| 架构认知 | 审核系统使用 aix-py 而非 maycur-ai-audit |
| 排障方法 | Trace→代码五步法 |
通用规则
- 增量更新: 只追加新知识,不删除已有内容
- 确认后执行: 每个 skill 的更新都需用户确认 diff 后再执行 Edit
- 保持一致: 新增 section 的风格(表格、代码块、加粗)与目标 SKILL.md 现有风格一致
- 不过度注入: 一条经验只注入到最相关的 1-2 个 skill,不要到处塞
- memory 同步: 如果用户开启了 memory,同步写入一份到 memory 目录作为备份
与其他 Skill 的关系
- skills-collect: skills-collect 管理文件的集成和更新,skills-evolve 管理内容的进化和沉淀。两者互补。
- 所有其他 skill: skills-evolve 的操作对象
依赖
- 工具: Read、Edit、Glob(读取和修改 SKILL.md 文件)
- 前置: 至少有一个已安装的 skill 可供更新