why 是 pstack 中的技能,用途是调查代码背后的动机与意图,回答“为什么这样实现”“为什么选 Y”“设计理由”“回归、事后复盘、有数据支撑的阈值”等“为什么”类问题。它与回答代码做什么、如何工作的 how 技能互补,why 关注是什么力量塑造了代码当前的形态。
主要能力与工作方式:先理解目标与问题,若目标含糊则从对话上下文推测并说明解释;随后建立代码锚点,收集文件路径与行范围、关键符号、最近改动提交、PR 编号与关联票据,可用命令包括 git blame -L <start>,<end> <file>、git log --follow -p -- <file>、git log --oneline -20 -- <file>、git log -1 --format=%B <commit>,以及 gh pr view <number> -R <owner>/<repo> --json title,body,author,createdAt,mergedAt,labels,closingIssuesReferences,comments,reviews。若 gh 不可用或查询失败,应在代码锚点中标记相关 PR 未读取并在来源中说明缺口。
之后按可用 MCP 归入七类证据类别(源码控制、问题/票据跟踪、长文档、实时团队聊天、基础设施可观测性、错误/异常跟踪、产品分析仓库),每类各生成一个并行的调查者,源码控制始终可用。每个生成使用 general-purpose、readonly: false(agent 模式),不要用 readonly/Ask 模式。最后生成一个综合者,按置信度框架输出问题、涉事代码、发现、可合理推断、竞争性假设、未知、来源与置信度汇总。
限制与注意:调查者本身不应写入任何内容。跳过某类调查者需有明确书面理由(环境中无对应 MCP 或该来源可证明无关),并记录在来源中。仅当确认全部七类搜索都冗余时,才可略微内联作答,这种情况应很少见。要避免的新近偏差是以最近提交为权威。参考资料包括 references/epistemics.md、references/investigator-prompt.md、references/source-playbook.md、references/sources/<source>.md、references/synthesizer-prompt.md,以及涉及防御性代码时的 references/sources/incident-postmortem.md。模型解析通过 pstack-harness 技能完成,调查者默认 sonnet,综合者默认 opus。