关于 setup-pstack
用于为当前运行时配置 pstack 按角色划分的模型覆盖表。它引导检测模型、确认分配、校验设置,并按运行时规则加载配置。
主要功能
- 01检测可用模型
- 02检查现有覆盖项
- 03确认角色分配
- 04校验模型与推理级别
- 05写入运行时专属设置
适用场景
- 01按可用模型调整 pstack 角色
- 02更新模型分配
- 03配置会话钩子行为
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ michael-denyer/ pstack-claude --skill setup-pstack安装后在 Claude Code 中输入/setup-pstack确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
copilot.mdscripts/check-sheet.awkcheck-sheet.shread-sheet.shsheet.awk详细介绍
设置 pstack
在 Codex 上,按照此技能操作前,请阅读平台映射,包括其中针对各项技能的说明。
在 GitHub Copilot 上,按照此技能操作前,请阅读平台映射,包括其中针对各项技能的说明。
在 Muse 上,按照此技能操作前,请阅读平台映射,包括其中针对各项技能的说明。
在 GitHub Copilot 上,请按照 Copilot 设置操作,以此替代步骤 1、3、4、7 以及步骤 6 的标题。
在其他运行时上,请阅读下文的其他运行时,了解配置表的位置及其加载方式;步骤相同。
使用其他运行时中的路径,编写当前运行时针对各角色的模型覆盖配置表。每项 pstack 技能都会在行内注明默认模型;覆盖配置表会根据你实际可用的模型调整这些默认值。
Claude Code 没有类似 Cursor 的 .mdc 那样自动应用“规则”的机制。Claude Code 的配置目录在设置了 $CLAUDE_CONFIG_DIR 变量时为该变量的值,否则为 ~/.claude。此技能将其称为 <config>。需显式包含配置:用户在 <config>/CLAUDE.md(或项目的 CLAUDE.md)中添加一行,例如:
@<config>/pstack-models.md
其中 <config> 应写成解析后的路径,这样该文件就会作为上下文加载到每个会话中。
Codex 主目录在设置了 $CODEX_HOME 变量时为该变量的值,否则为 ~/.codex。此技能将其称为 <codex-home>。
步骤
1. 检测可用模型
列出本次会话中 Agent 工具的 model 参数接受的模型名称。这是可靠的信息来源。在 Claude Code 上,可用名称是下文模型中列出的系列名称,每个名称都会运行该系列的当前模型;完整模型 ID 会被拒绝。默认面板也列在此处。选择该面板是为了涵盖不同模型系列。请用户确认,或粘贴他们希望添加的其他 slug。切勿写入未经确认可用的真实 slug。别名 inherit-parent 和 auto 始终有效,即使它们不是检测到的 slug。二者都表示该角色使用父会话的模型,这可通过调用 Agent 时省略 model 来实现。
2. 加载当前状态
默认的角色到模型映射采用下文“编写覆盖配置表”步骤中展示的规则格式。如果当前运行时的配置表已存在,请读取并将其中的值视为当前选择;否则,从这些默认值开始。角色不在该格式中的行(例如 how critics)来自已弃用的角色,应删除。较旧的配置表可能会列出以 claude- 开头的完整模型 ID,而 Agent 工具不接受这类 ID。请将每个 ID 替换为对应的系列名称,即 claude- 后面的单词。
3. 映射并确认
显示每个角色及其当前模型,并将检测到的集合中不存在的真实 slug 标记为需要选择。还要列出步骤 2 中删除或改写的每一行。询问用户是接受当前设置还是更改特定角色,并提供检测到的模型以及 inherit-parent 和 auto 作为选项。优先使用 AskUserQuestion,而不是自由文本。对于面板角色(竞技场运行者、架构师运行者、审问审阅者),其值是一个列表,每个条目都会运行一个子 Agent,包括别名条目,因此列表长度决定数量。arena cross-judge pool 也是一个列表,但 Arena 会从中选择一个模型系列尽可能与父级不同的值。swarm workers 是每个工作者的默认模型,除非竞赛或比较为每个分组指定了其他模型。
然后询问默认推理力度,即 default effort 行。它可以是 session,表示沿用父会话的力度,也可以是 模型 中的某个级别。从该处列出的默认级别开始。每个不带后缀的角色值都会以该级别运行。然后询问是否有任何角色应以其他级别运行。在 Claude Code 中,角色值可以在其 slug 后附带级别,例如 <slug> @xhigh;面板条目则各自指定级别,例如 <slug> @xhigh, <slug> @max。每个级别都会作为派发的力度传入,因此无需更改会话即可保持该选择。若使用默认力度,则省略后缀。
4. 选择会话钩子是否路由任务
在 Claude Code 和 Codex 中,插件的 SessionStart 钩子会在启动、恢复、清除和压缩时注入 poteto-mode 指令。Codex 会在运行钩子前通过 /hooks 询问用户是否信任插件钩子。在 Pi 中,pstack 扩展会在每次 Agent 启动时将相同指令添加到系统提示词中。在 Muse 中,原生插件的 SessionStart 钩子会在用户通过 muse plugins approve pstack 批准插件钩子后注入指令。询问用户是否保留钩子。默认开启。答案是当前运行时配置表中的 session hook 行:on 或 off。如果没有配置表或没有该行,钩子会执行注入。该行在其他运行时中不起作用。
5. 验证
写入的每个真实 slug 都必须属于检测到的集合。inherit-parent 和 auto 始终有效。验证 slug 时去掉任何 @<level> 后缀,并根据 模型 中的力度级别验证级别。default effort 的值必须是这些级别之一或 session。在 Codex 中,级别应使用 Codex 模型所接受的 reasoning_effort 值。如果所选真实 slug 或级别不可用,请停止并再次询问。
6. 写入覆盖配置表
按照以下格式写入当前运行时的配置表。覆盖整个文件,以确保重复运行具有幂等性。
# pstack model configuration
Per-role model overrides for pstack skills. Each pstack SKILL.md names its defaults in a Models section; the values here override those defaults. Delete a line to fall back to the skill default. A value of `inherit-parent` or `auto` runs that role on the parent session's model (the `Agent` call omits `model`); an alias entry in a panel list still counts toward that panel's fan-out. A model may carry a reasoning effort, as in `opus @xhigh` (levels: low, medium, high, xhigh, max); the role's subagent then runs at that level, each entry of a panel list on its own. `default effort` sets the level for a value without one; `session` keeps the parent session's effort. `session hook: off` stops the Claude Code, Codex, or Muse SessionStart hook, or the pstack Pi extension, from injecting the poteto-mode mandate; any other value, or no line, leaves it on.
feature, refactoring: sonnet
bug-fix: opus
perf-issue: opus
hillclimb: opus
judgment and prose: opus
strongest judgment: fable
how explorer: opus
how explainer: opus
why investigators: opus
why synthesizer: opus
reflect tooling: opus
reflect judgment, divergent, synthesizer: opus
arena runners: opus, fable, sonnet, haiku
arena cross-judge pool: opus, fable, sonnet, haiku
swarm workers: opus
architect runners: opus, fable, sonnet, haiku
interrogate reviewers: opus, fable, sonnet, haiku
default effort: session
session hook: on
7. 接入配置
在 Claude Code 中,如果 <config>/CLAUDE.md 尚未包含 <config>/pstack-models.md,则追加一行 @,写明配置表解析后的路径,例如 @~/.claude/pstack-models.md,以便每个会话都加载模型行。如果用户倾向于项目级配置,则改为在项目的 CLAUDE.md 中添加引用。
在 Codex 中,将模型行和 default effort 行粘贴到 <codex-home>/AGENTS.md 中;Codex 不支持 @ 引用。不要将 session hook 行粘贴到那里:插件钩子会直接从 <codex-home>/pstack-models.md 读取该行。
在 Muse 中,无需添加引用行:插件钩子会直接读取配置表,并在会话开始时注入角色行。只有在用户批准插件钩子后,它才会运行;如果钩子尚未运行,请告知用户执行 muse plugins approve pstack。
8. 确认
告知用户覆盖配置写入的位置、模型行的加载方式,以及插件钩子是否已开启。再次运行此技能会更新覆盖配置表。
9. 提供验证技能(可选)
检查项目是否有办法驱动真实应用来验证效果(项目的 verify 或 verify-* 技能,或现有的测试框架)。如果没有,只询问一次:“想要一个项目本地的验证技能,让 Agent 能像用户一样驱动应用,并证明更改有效吗?我可以用 /create-verification-skill 生成一个。”如果用户同意,调用 /create-verification-skill。如果用户不同意,就继续,不要强推。
10. 提供形式化验证技能(可选)
检查项目是否已有形式化验证技能(针对代码运行模型检查器、证明或其他验证器的项目技能)。如果没有,只询问一次:“想要一个形式化验证技能,让 Agent 能证明代码的某个关键属性在范围内的所有情况下都成立,而不仅是测试覆盖到的情况吗?我可以用 /create-formal-verification-skill 生成一个。”如果用户同意,调用 /create-formal-verification-skill。如果用户不同意,就继续,不要强推。
其他运行时
各处的角色行都相同。不同之处在于配置表的路径、运行时的加载方式,以及模型列表的获取方式。使用运行时自带的工具检测模型,绝不要填写尚未在列表中见过的 slug。即使某个运行时的子 Agent 调用没有模型参数,也仍然要提供配置表,作为用户选择的记录,并在可能的情况下应用该选择。session hook 行适用于 Claude Code、Codex 和 GitHub Copilot 插件,以及 pstack Pi 扩展。
| 运行时 | 配置表 | 加载方式 | 模型列表 | 状态 |
|---|---|---|---|---|
| Claude Code | <config>/pstack-models.md | 在 <config>/CLAUDE.md 中使用 @<config>/pstack-models.md | Agent 工具的 model 参数 | 已通过实时验证 |
| Codex | <codex-home>/pstack-models.md | 模型行:粘贴到 <codex-home>/AGENTS.md;hook 设置:由插件读取 | 已配置的 Codex 模型,参见 codex-tools.md | hook 合约已测试;发现方式已验证 |
| Pi | Pi Agent 目录中的 pstack-models.md,即 $PI_CODING_AGENT_DIR 或 ~/.pi/agent | 由 pstack Pi 扩展读取,模型行和 hook 设置均由其读取;无需 include 行 | pi --list-models,参见 pi-tools.md 及其中的 setup-pstack 说明 | 扩展合约已离线测试;实时结果见仓库的 docs/pi-equivalence.md |
| GitHub Copilot(CLI 和应用) | ${COPILOT_HOME:-~/.copilot}/pstack-models.md | 插件 hook 检查该文件,并在会话开始时注入角色行;仅安装技能时则使用 view 读取 | task 工具的 model 枚举,参见 copilot-tools.md | hook 合约已测试;CLI 安装已通过冒烟测试 |
| Muse | ${XDG_CONFIG_HOME:-~/.config}/muse/pstack-models.md | hook 获批后,插件 hook 会读取该文件,并在会话开始时注入角色行;无需 include 行 | 模型目录(muse model-profile show <model> 会列出每个模型的名称),参见 muse-tools.md | hook 合约已测试;插件安装已验证 |
| opencode | ~/.config/opencode/pstack-models.md | 将路径添加到 opencode.json 的 instructions 数组中 | 会话中的 models 斜杠命令 | 根据已发布的文档,无实时会话 |
| Gemini CLI | ~/.gemini/pstack-models.md | 在 ~/.gemini/GEMINI.md 中使用 @~/.gemini/pstack-models.md | 会话中的 model 斜杠命令 | 根据已发布的文档,无实时会话 |
| Prime Agent | 没有文档记录的配置表路径;由 Prime 的配置选择模型 | 无实时会话 |
模型
从 plugins/pstack/models.json 生成(在此处编辑,然后重新运行 tools/generate.mjs)。
- 可用的 Claude 模型:
opus、fable、sonnet、haiku - 默认面板:
opus、fable、sonnet、haiku - 推理强度级别:
low、medium、high、xhigh、max - 默认推理强度:
session - 单角色默认模型:
opus