用途
retro 用于在工作会话结束时复盘,识别用户与 AI 代理之间“卡壳”的摩擦点,追溯每个摩擦的根本原因,并提出具体编辑建议,使后续会话更顺畅。所有改进以仓库文件形式沉淀,因此可版本化并在所有机器间同步。核心原则:反复出现的摩擦 = 缺少一条规则。它把会话中的隐性反馈转化为持久化、可执行的文本,正如一次事后复盘。该技能分析当前对话(已在其上下文中的内容),不解析外部转录文件。
何时使用
- 用户说出“rétro”“bilan de session”“qu'est-ce qui a coincé ?”“retro”,或调用 /retro
- 会话结束,或某个任务经历大量反复来回之后
- 用户想将一时的不满转化为持久的改进
不适用的情况:
- 会话过于简单(仅一个问题、没有任何纠正)→ 回答没有值得沉淀的内容
- 上下文经过大量压缩 → 明确说明:复盘仅覆盖上下文中剩余的内容(见限制)
限制
- 复盘只能看到当前上下文中的对话。如果发生过压缩,开头的摩擦可能已丢失——应明确说明,不要编造。
- 它不做量化测量(此处无 OpenTelemetry 指标):这是对摩擦信号的定性分析。
需要识别的摩擦信号
扫描对话并记录,每项需附带相关轮次:
- 用户纠正:“non”“plutôt”“en fait”“pas comme ça”,或重述指令
- 方向调整:代理走错方向后,用户重新引导
- 错误假设:代理假定了不准确的内容(路径、约定、意图),不得不重来
- 反复澄清:为弄清一个本可一开始就提出的需求,来回多次
- 放弃的方案:事后丢弃/重做的工作
- 手动返工:用户不得不亲自修正代理的产出
- 权限被拒:因未预先授予授权而导致操作被阻止
- 工具链摩擦:因不了解仓库(工具链、路径、约定)而导致命令失败
工作流程
-
分析:重读对话并列出识别到的摩擦点。对每项说明:发生了什么、在何时发生、影响如何(浪费时间、返工、挫败感)。
-
追溯根本原因:对每个摩擦回答:如果一开始就有哪些内容,本可避免它?典型原因:
- 代理本应知道却缺失的规则/约定 → 目标 rules/ 或 CLAUDE.md
- 缺少程序性知识(可复用步骤序列)→ 目标 skills/
- 用户侧指令含糊 → 不是配置编辑,而是关于如何更好表述的备注
- 非反复出现的一次性上下文缺失 → 不做沉淀(过度沉淀会污染) 不要将每个摩擦都转化为规则。一次性摩擦不值得一条规则。优先处理可能再次发生的情况。
-
将每条经验路由到正确位置:
- 可复用知识(步骤序列、工作流)→ .claude/skills/<名称>/SKILL.md(可调用,由其描述触发)
- 针对某主题的规则/需记住的事实 → .claude/rules/<主题>.md(每会话自动加载,已版本化)
- 核心、跨领域、始终生效的约定 → CLAUDE.md(始终在上下文中,全团队可见)
- 仅属于单台机器的事实 → 自动记忆(~/.claude/…)(罕用;应避免,因为不同步) 所有“仓库”目标(rules/skills/CLAUDE.md)都经 Git 版本化 → 在机器间同步并与团队共享。这是默认选择。
-
提议——然后停下:呈现一个提议表格,先不写任何内容,等待用户明确确认。格式:
会话摩擦点:
-
<摩擦>(约第 N 轮) 根本原因:<原因> → 提议:在 <目标文件> 中 <动作> 要添加/修改的确切文本:
<精确内容>
- … 不做沉淀的部分:<被判为一次性摩擦的项,附一句理由>
提议规则:
- 给出要写入的确切文本,绝不写含糊的“改进 X”。
- 指明精确的目标文件。
- 若涉及已有规则,提议修改(合并/更新)而非重复——应用 ADD / MERGE / DELETE 思路,避免 rules/ 和 CLAUDE.md 膨胀。
- 明确列出不沉淀的内容及原因(透明反噪音)。 表格之后询问:“全部 / 部分 / 不应用?”并等待。
-
-
应用:经确认后,只写入被采纳的提议:
- 新事实/规则 → 创建/编辑 .claude/rules/<主题>.md
- 新知识 → 创建 .claude/skills/<名称>/SKILL.md(frontmatter 含 name + description,以本技能的结构为模板)
- 跨领域约定 → 编辑 CLAUDE.md
-
收尾:
- 概述已写入的内容(文件列表)。
- 提醒这些是版本化文件 → 建议提交(不要擅自提交;建议 /commit)。
防护措施
- 未经确认绝不写入(第 4 步必须执行)——与 commit 技能一致。
- 不要过度沉淀:一次健康的会话可能不产生任何规则,这也是有效结果。
- 优先修改已有规则,而非新增一条与其重叠的规则。
- 未经询问不要提交。
- 如果复盘只覆盖被压缩/部分的上下文,应说明,而不是声称覆盖了整个会话。