跳转到内容
pstack 中文学习站

interrogate

你在看 pstack 0.15.6 时的版本,最新版在这里

给每个配置好的模型开一个评审者,对代码改动做对抗性评审。每个模型拿到同样的提示词和评审标准。对抗性来自模型之间的差异,而不是给它们分配不同的角色。

交付物是一份综合后的 verdict(结论)。不要自动应用任何改动。

根据上下文判断要评审什么:

  • 用户指了具体文件或某个 diff,就评审那些
  • 在 feature 分支上,就运行 git diff main...HEAD(或对应的基础分支),拿到完整的改动
  • 用户的消息提到最近做的工作,就把相关文件找齐

把 diff(或文件内容)打包,再加上评审者理解代码所需的周边上下文文件。

开评审者之前,先把意图明确写出来。依据这些来源:

  • 用户的消息
  • commit 信息
  • PR 描述(如果有)
  • 代码本身

写一段清楚的话。如果拿不准意图,先问用户,再往下走。

用 Task 工具在一条消息里启动全部评审者。用 ~/.cursor/rules/pstack-models.mdc 里的 interrogate reviewers 这一行,每个条目一个评审者,把下面 Reviewer A/B/C 的标签按配置的条目数增减。如果没有这条 rule 或没有这一行,用表里的默认值。

子代理 默认模型
Reviewer A claude-opus-5-5-max
Reviewer B gpt-5.6-sol-max
Reviewer C grok-4.7-xhigh-fast

每个评审者:

  • subagent_type:generalPurpose
  • model:配置的 interrogate reviewers 条目;没有配置这一行时用表里的默认值。条目是 auto 或 inherit-parent 时,省略 model,让这个评审者跑在父模型上。
  • readonly:true

如果 Task 工具拒绝某个配置的条目,这个评审者改用同一模型族在表里的默认值,并说明这件事。模型族按前缀分:claude-*、gpt-*、grok-*。哪个族都对不上时,用 Reviewer A 的默认值。如果连表里的默认值也被拒,就看 Task 工具报错信息里列出的有效 slug,挑最接近的等价模型(优先同一族里推理档位最高的),用它开评审者,另开一个 PR 更新默认值表。不要因为 slug 的问题卡住评审。别名条目绝不当作被拒的 slug,两种回退都不用在它身上。

读 references/reviewer-prompt.md,把模板填上:

  1. 写明的意图
  2. diff 或文件内容
  3. references/rubric.md 里的评审标准
  4. references/code-quality-review.md 里的代码质量视角

所有评审者拿到的是同一份填好的模板,所以每个模型都会用上代码质量视角。

结果陆续回来时,拼出一张完整的图:

  1. 把评审者的所有 finding(评审发现的问题)拆出来
  2. 找出共识。两个或更多模型各自独立提出的 finding,信号最强。
  3. 找出只有一个模型提的 finding。仍然值得读,但权重相应调低。
  4. 去重。不同模型可能用不同说法描述同一个问题。合并它们,并注明是哪些模型提的。
  5. 记下分歧。一个模型指出某个问题,另一个明确说相反的话,这对下 verdict 是有用的背景。

你是主审,是一个务实的资深工程师,不是不偏不倚地汇总意见的人。

完整的判断框架见 references/lead-judgment.md。

把每条 finding 归进下面几类:

  • 要处理。结合真实目标看,确实影响正确性、安全或可维护性的问题。放在真实的 PR 里会挡住合并。
  • 可以考虑。说得有道理,但不确定它值不值得现在就花成本去处理。值得用户看一眼。
  • 记下即可。技术上成立,但没什么可做的。要看具体情况、属于过早优化,或者以目前的阶段影响很小。
  • 驳回。说错了、吹毛求疵,或者缺少上下文。简短说明理由。

每条 finding 都写上:

  • 哪个或哪些模型提的
  • 归在哪一类(要处理 / 可以考虑 / 记下即可 / 驳回)
  • 一行话说明为什么这样归类

按下面的结构给出 verdict:

[第 2 步写明的意图段落]

  • Reviewer [标签]:[模型名],[N 条 finding](每个评审者一条)

[应该处理的 finding。每条写:问题是什么、哪些模型提的、为什么重要。]

[值得想一想的 finding。每条写:问题是什么、哪些模型提的、涉及什么取舍。]

[成立但优先级低。简短列出。]

[被驳回的 finding,附简短理由。]

[模型在哪里一致、在哪里分歧,这种一致和分歧的规律说明了什么?]