Community编程与开发github.com

harness-retro

对过去 Claude Code 会话进行回顾性分析。挖掘本地会话记录,找出 Claude 遇到困难的地方(用户纠正、挫败感、中断、工具错误、编辑回滚、权限拒绝、自我撤回等),将其归为重复模式,并提出 harness 改进建议(CLAUDE.md 规则、记忆条目、钩子、设置、技能)以防止再次发生。未经用户批准不会应用任何更改。当用户要求回顾或询问时使用。

harness-retro 是什么?

该技能用于对过去 Claude Code 会话进行系统性的回顾与分析。它会挖掘 `~/.claude/projects` 目录下的本地会话记录,识别出 Claude 频繁出错或遇到障碍的模式,如用户反复纠正、工具错误、编辑冲突或权限被拒等。基于这些模式,它会提出相应的配置改进建议,例如更新 `CLAUDE.md` 规则、添加记忆条目、设置钩子或调整权限,以从根本上减少问题重复发生。该技能遵循严格的工作流程:先挖掘记录、识别问题模式、检查现有配置,最后以报告形式呈现给用户,并请求批准后才能应用更改。它支持所有 Claude Code 项目,并强调每个发现都必须有会话记录作为证据,确保改进措施精准有效。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/timini/harness-retro/tree/HEAD/plugin/skills/harness-retro

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Harness retro

找出过去会话中出错的地方,并调整配置,防止同样的问题再次发生。每个发现都必须指向会话记录中的证据。未经用户批准,绝不应用任何更改。

1. 挖掘会话记录

挖掘器是一个仅使用标准库的脚本,位于此文件旁边。使用 -I 参数运行它。将其输出写入会话暂存区,如果没有暂存区则写入临时目录:

python3 -I <此技能的基础目录>/scripts/mine.py [PATH] [--since 30d] --out <scratchpad>/retro.json
  • 不提供 PATH 时,它将挖掘当前工作目录的项目。要挖掘不同项目,请提供其工作目录路径,或使用 --project=<key> 指定 ~/.claude/projects 下的文件夹名称。使用 = 形式,因为键以 - 开头。
  • 如果用户指定了时间窗口,请使用 --since。仅在输出被截断且需要更多数据时,才提高 --max-bytes(默认 40000)。
  • 如果用户询问所有项目,请针对 ~/.claude/projects 下的每个文件夹运行一次,然后查看摩擦最多的项目。

脚本会打印一行摘要。如果扫描到的会话很少或没有,请告知用户。Claude Code 会在 cleanupPeriodDays(默认 30)后删除记录,因此较早的历史可能已丢失。如果用户未来希望进行更深入的回顾,建议提高该设置。

2. 阅读命中结果

JSON 文件列出了按摩擦分数排序的会话。每个命中包含 signal、score、ts、prior_prompt(用户请求)、recent_actions(Claude 在命中前的最后一次工具调用)以及 user_reaction 或 detail。

信号类型(大致按价值排序):

  • user_correction:用户进行了纠正。分数为 5 或更高表示强烈挫败感或重复(“仍然”、“又来了”、“我说过”、咒骂)。
  • edit_revert 和 edit_churn:Claude 在同一文件上来回编辑。
  • tool_error_streak:Claude 不断遇到相同的失败。
  • interrupted:用户中途停止了 Claude。这通常意味着它走错了方向。
  • permission_denied:Claude 尝试了用户或分类器阻止的操作。
  • self_retraction:Claude 承认了错误。此信号噪声较大,仅作为辅助证据。

正则表达式很粗糙。请排除误报,例如正常指令中的“不要”或网络错误后的“重试”。当命中结果有歧义时,请打开相关会话记录。文件位于 ~/.claude/projects/<key>/<session>.jsonl;使用时间戳进行 grep,并读取前后几行。不要阅读整个会话记录。

3. 归类为模式

将真实命中结果归类为重复模式。一个模式是一个根本原因,描述为 Claude 做错了什么。例如:“生成新图像而非使用已批准的资产库”、“编辑当前版本而非创建新版本”、“声称更改可见但未检查构建输出”。对于每个模式,记录:

  • 发生的频率,以及在多少会话中出现。
  • 2 到 3 条来自用户的简短引用,附带会话标题和日期。
  • 根本原因。选择一个:缺少知识、存在但被忽略的规则、不良默认工作流、缺少验证、或工具或权限缺口。

单个事件仅在用户明显生气或成本很高(例如破坏性或丢失工作)时才计入。

4. 检查现有配置

在提出任何建议之前,请阅读现有配置:

  • ~/.claude/CLAUDE.md,以及项目 CLAUDE.md 和任何嵌套的。
  • ~/.claude/settings.json,以及项目的 .claude/settings.json 和 .claude/settings.local.json(钩子、权限)。
  • 项目记忆目录 ~/.claude/projects/<key>/memory/ 及其 MEMORY.md。
  • ~/.claude/skills/ 和项目的 .claude/skills/ 中的技能。

如果某个模式已被 Claude 忽略的规则覆盖,再次添加相同的规则将无济于事。请使规则更具体并将其放置在可见的位置,或改用更强的机制。

5. 选择修复方案

对于每个模式,使用最轻量且能有效工作的机制:

根本原因修复方案
Claude 不知道的项目事实在项目记忆目录中创建一个记忆文件,包含前件 name、description、metadata.type,正文包含 Why: 和 How to apply:,并在 MEMORY.md 中添加一行指针。更新现有记忆而非重复。
此仓库的固定规则项目 CLAUDE.md
适用于所有项目的规则~/.claude/CLAUDE.md
经常被违反且可由脚本检查的规则(格式化、禁止的字符串、提交前必需的命令)在 settings.json 中设置钩子。如果可用,请使用 update-config 技能。
针对安全命令的重复权限提示或拒绝建议添加白名单条目,或如果可用,建议使用 fewer-permission-prompts 技能。不要为破坏性命令放宽权限。
经常出错的多步骤工作流新建或编辑技能(如果可用,使用 skill-creator)。
Claude Code 产品错误在报告中注明。没有配置修复方案。

将规则编写为具体、可检查的指令,并命名具体内容,例如文件、资产路径、命令或版本命名。“小心处理图像”过于模糊,无法执行。

6. 报告并获得批准

按每个模式一个部分呈现,成本最高的优先。每个部分包含:

  1. 模式,一行描述。
  2. 证据:次数、会话,以及 2 到 3 条带日期的简短引用。
  3. 根本原因。
  4. 提议的更改:目标文件以及确切的文本或差异。

然后询问要应用哪些更改。一个带有每个模式一个选项的 multiSelect AskUserQuestion 效果很好。仅应用已批准的更改,然后列出更改的内容和位置。

编写规则

写入 CLAUDE.md、记忆或技能的任何内容都必须遵循用户自己的 CLAUDE.md 文件中的任何编写规则,例如语气、禁用词或署名规则。保持简短和具体。会话记录中的引用可能包含用户粘贴的秘密。挖掘器会编辑常见的密钥格式,但在将文本复制到任何文件之前,请进行检查。

相关技能