用途:reflect 用于从会话中提取经验教训并持久化到技能文件,解决“记忆归零”问题——纠正一次,之后不再重犯。
何时使用:在出现纠正(如“其实应该用 X”“不,这样做”)、发现(效果良好的模式)、失败(不可行的方法)的会话之后运行。
用法: /reflect # 分析当前会话,建议技能更新 /reflect skill-name # 针对特定技能进行更新
注意:仅支持手动触发,应在带有经验教训的会话结束前运行。
为何仅手动:通过 Stop 钩子自动检测并不可靠,资料列出以下问题:#16227 Stop 钩子输出静默(不展示给用户);#10412 插件 Stop 钩子以退出码 2 失败;#10875 插件 JSON 输出未被捕获;#3656 阻塞功能被部分移除。Stop 钩子会触发但无法回传信息,因此不适合做提醒。其他自我改进技能实现(autoskill、reflect-skill)也因同样原因采用手动触发。
流程:1. 确定对话来源;2. 分析纠正、成功与模式;3. 按高/中/低置信度分类;4. 展示建议的技能更新;5. 等待用户确认后再写入。
数据来源(按顺序尝试,使用第一个可用的):1. ccrecall.db(完整历史),需用户安装 ccrecall 与 mcp-sqlite-tools,示例查询:SELECT timestamp, role, content FROM messages WHERE session_id = (SELECT MAX(session_id) FROM sessions) ORDER BY timestamp DESC LIMIT 100; 2. 上下文内(当前会话),当 ccrecall 不可用时回退,分析当前上下文窗口中可见的对话,限于约 100k token 的近期历史,对单会话经验仍然有效。运行时会标注当前模式:[reflect] Using: ccrecall.db (full history) 或 [reflect] Using: in-context (current session only)。
目标位置逻辑:在含 .claude-plugin/ 的仓库中则就地更新技能;否则提示选择项目 .claude/skills/ 或全局 ~/.claude/skills/。
参考:analysis-patterns.md 提供模式检测规则。
限制:仅手动触发;自动检测不可靠;无 ccrecall 时只能分析当前上下文窗口内约 100k token 的历史;写入前需用户确认。