name: insight-extraction description: ‘从完成的编码会话中提取可操作的见解。在会话完成时使用,以捕获未来会话的学习内容。’ version: 1.0.0 model: sonnet invoked_by: both user_invocable: true tools: [Read, Write, Bash, Glob, Grep] best_practices:
- 提取可操作的知识,而不是日志
- 每个见解都应帮助未来会话做得更好
- 具体到文件、模式和陷阱 error_handling: graceful streaming: supported source: auto-claude verified: false lastVerifiedAt: 2026-02-19T05:29:09.098Z
洞察提取技能
概述
分析完成的编码会话,并为内存系统提取结构化的学习内容。见解帮助未来会话避免错误、遵循既定模式并更快理解代码库。
核心原则: 提取可操作的知识,而不是日志。每个见解都应帮助未来会话做得更好。
使用时机
总是:
- 完成编码任务后
- 修复漏洞后
- 发现新模式后
- 尝试失败后(特别有价值)
例外:
- 无学习内容的琐碎更改
- 仅文档更改
铁律
非琐碎工作的会话结束必须进行洞察提取
非琐碎会话应在上下文丢失前捕获学习内容。
所需输入
要提取见解,您需要:
- Git diff - 文件如何更改
- 任务描述 - 正在实施的内容
- 尝试历史 - 之前的尝试(如果有),使用了哪些方法
- 会话结果 - 成功或失败
工作流程
阶段 1:收集会话数据
# 获取更改的差异
git diff HEAD~1 --stat
git diff HEAD~1
# 获取提交消息
git log -1 --pretty=format:"%s%n%n%b"
# 获取修改的文件列表
git diff HEAD~1 --name-only
阶段 2:分析文件见解
对于每个修改的文件,提取:
- 目的:该文件扮演什么角色?
- 所做更改:进行了哪些修改?关注“为什么”而不仅仅是“什么”
- 使用的模式:应用了哪些编码模式?
- 陷阱:任何文件特定的陷阱?
好例子:
{
"path": "src/stores/terminal-store.ts",
"purpose": "使用immer中间件管理终端会话状态的Zustand存储",
"changes_made": "添加了setAssociatedTask操作以将终端与任务关联",
"patterns_used": ["Zustand操作模式", "immer状态突变"],
"gotchas": ["状态更改必须通过操作进行,而非直接突变"]
}
坏例子(太模糊):
{
"path": "src/stores/terminal-store.ts",
"purpose": "一个存储文件",
"changes_made": "添加了一些代码",
"patterns_used": [],
"gotchas": []
}
阶段 3:提取模式
仅提取可重用的模式:
- 必须适用于不止这一个案例
- 包括何时/何处应用该模式
- 引用代码库中的具体示例
好例子:
{
"pattern": "在具有onClick处理程序的容器内的交互元素上使用e.stopPropagation()",
"applies_to": "任何嵌套在具有点击处理的父元素内的可点击元素",
"example": "Terminal.tsx头部 - 下拉菜单需要stopPropagation以防止焦点窃取"
}
阶段 4:文档化陷阱
必须具体且可操作:
- 包括触发问题的原因
- 包括如何解决或预防
- 避免通用建议(如“小心X”)
好例子:
{
"gotcha": "终端头部onClick窃取子交互元素的焦点",
"trigger": "向终端头部添加按钮/下拉菜单而没有stopPropagation",
"solution": "在子元素的onClick处理程序中调用e.stopPropagation()"
}
阶段 5:文档化方法结果
捕获成功或失败的学习内容:
- 如果成功:是什么让这种方法有效?关键是什么?
- 如果失败:为什么失败?什么方法会更好?
- 尝试的替代方案:尝试了哪些其他方法?
这有助于未来会话从过去的尝试中学习。
阶段 6:生成推荐
具体、可操作的建议,用于未来工作:
- 必须可由未来会话实施
- 应具体于这个代码库,而非通用
- 关注下一步或需要注意的事项
好: “当向终端头部添加更多控件时,遵循本会话中的下拉菜单模式 - 使用stopPropagation并根据头部定位”
坏: “编写好代码”或“彻底测试”
阶段 7:输出结构化见解
创建结构化见解输出:
# 会话见解:[任务名称]
## 日期
[时间戳]
## 任务
[正在实施的描述]
## 结果
[成功/失败]
## 文件见解
### [文件路径]
- **目的**:[该文件的作用]
- **更改**:[更改了什么及原因]
- **模式**:[使用的模式]
- **陷阱**:[需要注意的事项]
## 发现的模式
### [模式名称]
- **模式**:[描述]
- **适用于**:[何时使用]
- **示例**:[文件或代码引用]
## 发现的陷阱
### [陷阱名称]
- **问题**:[需要避免什么]
- **触发**:[什么导致它]
- **解决方案**:[如何处理]
## 方法分析
### 成功之处
[成功方法的描述]
### 失败之处(如适用)
[失败方法及原因的描述]
### 尝试的替代方案
[其他尝试方法的列表]
## 未来会话推荐
1. [具体推荐 1]
2. [具体推荐 2]
保存到.claude/context/memory/learnings.md(追加)。
处理边缘案例
空或最小差异
如果差异非常小或为空:
- 如果可以推断,仍提取文件目的
- 注意会话进行了最小更改
- 关注下一步的推荐
失败会话
如果会话失败:
- 关注为什么失败 - 这是最有价值的见解
- 提取从失败中学到的内容
- 推荐应解决下次如何成功
多文件更改
- 优先处理最重要的3-5个文件
- 跳过样板更改(如package-lock.json等)
- 关注功能核心的文件
验证清单
完成洞察提取前:
- [ ] Git差异已分析
- [ ] 关键文件见解已提取
- [ ] 可重用模式已文档化
- [ ] 陷阱已文档化,包括触发和解决方案
- [ ] 方法结果已文档化
- [ ] 推荐具体且可操作
- [ ] 见解已保存到内存文件
常见错误
太模糊
为什么错误: “修复了漏洞”对任何人都没有帮助。
正确做法: “通过添加清理函数修复了useEffect中的竞态条件。模式:始终从异步效果返回清理。”
通用建议
为什么错误: “测试您的代码”不可操作。
正确做法: “更改存储逻辑后运行npm test src/stores - 测试捕获状态管理错误。”
缺少上下文
为什么错误: 未来会话无法理解原因。
正确做法: 包括文件路径、函数名称和具体场景。
与其他技能的集成
此技能适用于:
- session-handoff:在交接文档中使用见解
- summarize-changes:用见解补充更改摘要
- debugging:从调试会话中提取见解
内存协议
开始前:
读取.claude/context/memory/learnings.md
完成后:
- 新模式 ->
.claude/context/memory/learnings.md - 发现的问题 ->
.claude/context/memory/issues.md - 做出的决策 ->
.claude/context/memory/decisions.md
假设中断:如果不在内存中,则未发生。