用途
Diagnosing Superpowers 用于在 superpowers 会话出问题后,与人类伙伴一起查明发生了什么,并基于磁盘上的会话记录给出有证据的报告。适用触发场景包括:重复工作、计划被忽略、卡顿、结果不佳、某个技能没有触发等。
核心原则
- 每条发现都必须引用 path:line,没有引用就没有发现。
- 每个数字都来自会话记录或实际运行的命令,绝不来自记忆。
- 该技能只做报告,不做 superpowers 诊断。报告第 7 节只陈述涉及情况即停止,绝不指出技能缺陷或提出修改建议。
- 人类伙伴施压要求修复也不豁免此限制,应指向 issue 步骤并说明可按需提供 bundle。
工作流程
每一步创建一个 todo。第 5–7 步仅在其声明的条件下运行。
-
问题受理:一次只问一个问题,直到能写出问题陈述,明确会话、轮次范围(如已知)、伙伴的预期、实际发生的情况,以及其关心的可观测指标(墙钟时间、token、重复动作、某个具体动作)。"耗时太长"是抱怨,不是问题陈述。记录目标是否为 superpowers bug 报告。
-
定位:使用 references/session-discovery.md 将每个会话解析为已验证的绝对文件系统路径。通过引用首个提示和时间戳确认过往会话,列出所有被拒绝的候选及原因,或写"none"。枚举子代理记录。创建 ~/.superpowers/diagnosing-superpowers/<session-id>/,告知伙伴路径,并按模板的溯源规则填写 templates/case.md。
-
分诊:自己阅读所报告问题附近的区域。然后按维度并行派出分析子代理,每个子代理获得 case 文件路径、prompts/analyst-common.md 以及 prompts/ 中的一个维度文件:skill-timeline.md、plan-adherence.md、repeated-work.md、stumbles.md、quality-evidence.md、request-conflicts.md、cost-and-time.md。记录很长时按轮次范围拆分维度。丢弃任何未带 path:line 的发现。
-
报告:按顺序填写 templates/report.md 的每个部分,写入工作区,展示并给出路径。检查引用内容实际证明了什么,保留支撑性 case;符号链接别名不是冗余副本。
-
GitHub issues:仅当报告第 7 节说 possible 或 likely,或伙伴要求时。按 references/github-issues.md 搜索开放和已关闭 issue 中的症状。展示匹配项并建议将报告添加到最接近的 issue。若无匹配,填写 templates/issue.md,写入工作区,展示确切文本,仅在批准后创建 issue。gh 无法附加文件;若存在 bundle,将路径给伙伴以便在浏览器中附加。
-
导出:仅当伙伴要求 bundle 时;绝不主动构建。若受理目标是 bug 报告,说一次可按需提供已脱敏 bundle,然后等待。询问脱敏级别并说明各自包含内容:skeleton(无工具结果正文)、evidence(仅引用事件的正文)、full。按 templates/bundle-README.md 构建 bundle,派出 prompts/scrub.md,然后 prompts/scrub-audit.md,重复两者直到审计返回 CLEAN。在展示最终脱敏日志、文件列表以及隐私和证据结果之前,完成 bundle 模板的证据检查和核对。仅在批准后归档(zip -r 或 tar -czf)。给出归档路径时,说明其内容,指向脱敏日志查看替换项,并说明脱敏可能遗漏内容:分享前必须审查每个文件。
-
相似会话:仅当被要求时。将已确认发现转为签名,按 mtime 和大小列出候选,找到标记行号,按候选并行派出 prompts/similar-session.md,追加报告第 9 节。
快速参考
七个分析维度始终全部运行。下表说明第 3 步自己先读哪个区域,以及裁决时先呈现哪些发现:
- "耗时太长":先读 cost-and-time、stumbles
- "为什么做了额外工作?":先读 repeated-work、plan-adherence
- "为什么这么贵?":先读 cost-and-time
- "它到底在干什么?"(仍在运行):先读 skill-timeline;在覆盖范围中注明进行中
- "它忽略了计划":先读 plan-adherence,先看压缩行
- "技能 X 从未触发":先读 skill-timeline
硬性规则
- 上下文安全:一行记录可能有一兆字节。每次处理每个会话文件时都遵循 references/context-safety.md。
- 只读:绝不修改、移动或删除会话文件。
- 给子代理精确路径:子代理的"当前会话"是它自己的。传递绝对路径和 id。
- 仅人类提示:钩子输出、系统提醒和工具结果不是伙伴的话。在子代理记录中,"user"是父代理。
- 不做 superpowers 诊断:报告第 7 节陈述涉及情况即停止。绝不指出技能缺陷或提出修改。
- 批准门:伙伴看到脱敏日志和文件列表前不归档。伙伴批准确切文本前不创建 issue 或评论。
- 先受理后分析:伙伴回答前,第 2–7 步都不开始。若其不在,写下问题并停止。为其重构的陈述不是回答。已明确范围的要求——某个具体事件、当前正在运行的内容、或要运行的分析——本身就是陈述:先回答,再提问。整个会话的"为什么"是抱怨。
危险信号
- "问题很明显,跳过受理" → 问题陈述界定一切。要问。
- "他们不在,我来重构陈述" → 你无法重构他们想要什么。写下问题并停止。
- "我现在全面扫描,最后再问" → 无范围的扫描会把预算花在错误问题上。先问。
- "他们想要 bug 报告,所以我现在就构建 bundle" → bundle 是他们的会话数据打包。仅在他们要求时构建。
- "小范围定向编辑,无需重构" → 无论多小都不是你说了算。报告证据;分诊方决定。
- "每 token 价格众所周知" → 未从记录计算的数字是编造的。引用或丢弃。
适用场景与限制
适用于 superpowers 会话的事后复盘与证据收集,尤其是需要向分诊方或 issue 跟踪方提供可核查证据的场景。限制包括:只读操作,不修改任何会话文件;不做根因诊断或修复建议;bundle 导出和 issue 创建均需明确批准;受理前不进行分析。