lesson-miner
将"踩坑→总结→迭代"模式工具化。用户探索新技能、工具或方向时,交互式记录卡点、生成结构化最佳实践文档、持续迭代维护。
核心流程
用户触发(语义匹配)
↓
检测当前位置(专注区/项目区/其他)
↓
识别目标项目(对话提取 + 文件历史 + 用户确认)
↓
交互式录入卡点(现象-根因-方案-检测信号)
↓
更新/创建 PITFALLS.md
↓
生成/更新决策树
触发条件
主要触发词
- "记录踩坑" / "capture lessons"
- "总结最佳实践" / "更新 pitfalls"
- "刚才的坑记一下" / "又踩坑了"
自动触发场景
- 用户多次尝试同一操作失败后主动说"记录一下"
- 探索型任务完成后用户表示"需要总结一下"
位置感知策略
| 当前位置 | 行为 |
|---|---|
| 专注区 | 识别对话中的项目名,匹配或创建 01 你的项目/<项目>/ |
| 项目区 | 默认当前项目,但询问是否切换到对话中提到的其他项目 |
| 其他位置 | 询问目标位置,默认建议 01 你的项目/ |
项目识别逻辑
- 用户明确指定:"记录到做饭智能体的踩坑"
- 近期文件推断:检查最近修改的项目文件
- 对话内容分析:提取技能名/工具名/方向名
- 直接询问:无法推断时列出项目列表供选择
交互录入格式
每个卡点录入四个维度:
| 维度 | 问题 | 示例 |
|---|---|---|
| 现象 | 用户看到了什么? | Python 报错 can't open file 'D:\c\Users\...' |
| 根因 | 为什么会这样? | Windows 下 ~ 展开后被错误解析 |
| 解决方案 | 具体怎么做? | 使用绝对路径或改用 web-access skill |
| 检测信号 | 如何快速识别? | 看到 can't open file + 路径中有 \c |
文档结构标准
生成的 PITFALLS.md 包含:
# [项目名] 踩坑记录
## 快速决策树(自动生成)
## 卡点记录
### 1. [标题]
| 维度 | 内容 |
|------|------|
| **现象** | ... |
| **根因** | ... |
| **解决方案** | ... |
| **检测信号** | ... |
## 最佳实践
### DO
- [ ] ...
### DON'T
- ❌ ...
## 更新日志
决策树生成
从所有卡点的"检测信号"自动构建快速决策树:
看到 can't open file + 路径异常?
├─ 是 → Windows 路径错误,使用绝对路径
└─ 否 → 继续判断...
使用示例
# 用户触发
> 刚才提取微信文章遇到3个卡点,记录一下
[lesson-miner] 检测到你在专注区。根据对话,你正在使用 web-content-extraction。
这个项目属于:
1. web-content-extraction 技能本身(新建项目)
2. 当前探索的课题(新建项目)
3. 其他已有项目
> 1
[lesson-miner] 新项目命名?(建议: web-content-extraction-practice)
> web-content-extraction-practice
[lesson-miner] 录入卡点 1/3:
现象?> Python 脚本路径错误...
根因?> Windows 下 ~ 展开错误...
...
[lesson-miner] 已更新 PITFALLS.md,是否生成决策树?
> y
[lesson-miner] 完成!文档位置:01 你的项目/web-content-extraction-practice/PITFALLS.md
跨项目通用经验
当经验跨项目适用时,询问:
- 写入 MEMORY.md(程序性记忆)
- 创建"通用工具"类项目
- 关联到多个项目的 PITFALLS.md
实现入口
python "C:\Users\HONOR\.claude\skills\lesson-miner\scripts\lesson_miner.py"
或者交互式调用:用户说出触发词后,AI 引导完成整个流程。
核心原则:知识是在反复实践中沉淀的,不是一次设计出来的。