diagnosing-superpowers · v1.0.0 · 2026-09-26 · sha256 6af901dddfcc91dc
diagnosing-superpowers v1.0.0A
Immutable. This exact content never changes and is served at /api/v1/blob/6af901dddfcc91dc.
---
name: diagnosing-superpowers
description: 当一次 superpowers 会话出了问题、你的人类伙伴想知道原因时使用——重复劳动、无视计划、磕磕绊绊、结果质量差、某个技能没触发、"太慢了"、"为什么这么贵"、"它到底在干什么"——或者想给 superpowers 维护者整理一份 bug 报告;适用于当前会话,或按 id / 路径指定的过往会话,任何工具均可
version: "1.0.0"
license: MIT
metadata:
hermes:
tags: [debugging, diagnosis]
---
# 诊断 Superpowers
## 概述
和你的人类伙伴一起明确一次会话到底哪里出了问题,读取磁盘上的会话记录(transcript),
用证据报告发生了什么。你负责报告,不负责诊断 superpowers。superpowers 要不要改,
由分诊这份打包材料或这条 issue 的人决定。
**核心原则:** 每条发现都要引用 `path:line`。没有引用,就不算发现。每个数字都来自
会话记录或你亲自跑过的命令,绝不凭记忆。
## 工作流
每一步建一个待办。第 5–7 步只在各自注明的条件下执行。
1. **问题受理。** 一次只问一个问题,直到你能写出一段陈述:点名是哪个(些)会话、
已知的话给出轮次范围、你的伙伴期望什么、实际发生了什么、他们关心的可观测量
(耗时、token、重复动作、某一个具体动作)。"太慢了"是抱怨,不是问题陈述。
记下目标是否是一份 superpowers bug 报告。
2. **定位。** 按 `references/session-discovery.md` 把每个会话解析成经过核实的
绝对文件系统路径。确认过往会话时,引用它的第一条提示词和时间戳,并列出你排除的
每个候选及理由,没有就写"none"。枚举子智能体的会话记录。创建
`~/.superpowers/diagnosing-superpowers/<session-id>/`,把路径告诉你的伙伴,
在其中填写 `templates/case.md`,环境与技能观察遵循其中的来源标注规则。
3. **分诊。** 先亲自读报告问题附近的那一段。然后为每个维度并行派发一个分析员子智能体,
每个都给它:案例文件路径、`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`,一律丢弃。
4. **报告。** 按顺序填写 `templates/report.md` 的每一节,写入工作区,展示出来,
并给出路径。核对被引用的内容实际能证明什么,并保留支撑它的案例;符号链接别名
不算冗余副本。
5. **GitHub issue** —— 当报告 §7 写的是 possible 或 likely,或你的伙伴要求时。
按 `references/github-issues.md` 在已开放和已关闭的 issue 中搜索这些症状。
展示匹配结果,建议把报告补充到最接近的那条。如果都不匹配,填写
`templates/issue.md`,写入工作区,展示确切文本,获得批准后才创建 issue。
`gh` 不能附加文件;如果有打包材料,把路径给你的伙伴,让他们在浏览器里附上。
6. **导出** —— 只在你的伙伴要求打包时进行;绝不主动打包。如果受理时的目标是 bug
报告,说一次"可以按需提供脱敏后的打包材料",然后等待。询问脱敏级别,并说明每一级
包含什么:skeleton(不含工具结果正文)、evidence(只含被引用事件的正文)、full。
按 `templates/bundle-README.md` 构建打包材料,派发 `prompts/scrub.md`,再派发
`prompts/scrub-audit.md`,两者反复执行,直到审计返回 CLEAN。
先完成打包模板里的证据核对与对账,再展示最终的脱敏日志、文件清单,以及隐私与
证据两方面的结论。获得批准后才归档(`zip -r` 或 `tar -czf`)。给出归档路径时,
说明其中包含什么,指向脱敏日志查看替换情况,并说明脱敏可能有遗漏:他们必须在
分享前逐个审阅每个文件。
7. **相似会话** —— 被要求时进行。把已确认的发现转成一个特征签名,按修改时间和大小
列出候选,找到标记所在的行号,对每个候选并行派发 `prompts/similar-session.md`,
然后追加到报告 §9。
## 速查
七个分析员始终全部运行。这张表说明第 3 步里你自己先读哪一段,以及结论中先讲哪些发现。
| 抱怨 | 先读、先讲 |
|---|---|
| "太慢了" | cost-and-time、stumbles |
| "它为什么做了额外的活?" | repeated-work、plan-adherence |
| "为什么这么贵?" | cost-and-time |
| "它到底在干什么?"(仍在运行) | skill-timeline;在覆盖说明中注明仍在进行 |
| "它无视了计划" | plan-adherence,先看压缩(compaction)所在行 |
| "技能 X 从没触发" | skill-timeline |
## 硬性规则
- **上下文安全。** 一行会话记录就可能有一兆字节。每个会话文件、每一次,都要遵循
`references/context-safety.md`。
- **只读。** 绝不修改、移动或删除会话文件。
- **给子智能体确切路径。** 子智能体的"当前会话"是它自己的会话。传绝对路径和 id。
- **只认人类提示词。** hook 输出、system reminder 和工具结果都不是你伙伴说的话。
在子智能体的会话记录里,"user" 是父智能体。
- **不诊断 superpowers。** 报告 §7 只陈述是否涉及,到此为止。绝不指出某个技能的缺陷,
也不提议修改。你的伙伴催着要修复,也不能豁免这一条;指向 issue 那一步,并提一句
可以按需提供打包材料。也不要给你的伙伴提建议。
- **批准关卡。** 你的伙伴看过脱敏日志和文件清单之前,不归档。他们批准确切文本之前,
不发 issue 或评论。
- **先受理,后分析。** 你的伙伴答复之前,第 2–7 步一律不开始。如果他们不在,写下问题
然后停下。你替他们重构出来的陈述不算答复。一个范围已经明确的请求——某个具体事件、
现在正在运行什么、或者要跑哪项分析——本身就是陈述:先回答它,再提问。
针对整个会话的"为什么"是抱怨。
## 危险信号
| 想法 | 现实 |
|---------|---------|
| "问题很明显,跳过受理" | 问题陈述决定了一切的范围。去问。 |
| "他们不在,那我来重构陈述" | 你无法重构他们想要什么。写下问题,然后停下。 |
| "我先全部扫一遍,最后再问" | 无范围的扫描会把他们的预算花在错误的问题上。先问。 |
| "他们要 bug 报告,那我现在就打包" | 打包材料就是他们打包起来的会话数据。只在他们要求时才构建。 |
| "只是个小的定点修改,不用重构" | 再小也不归你决定。报告证据;由分诊的人决定。 |
| "每个 token 的价格众所周知" | 不是从会话记录里算出来的数字就是编造的。要么引用,要么删掉。 |