跳到主內容

Theme / 0.9.130

Pstack

用可驗證的工作流程協作,從單一入口學會工程技能

基礎觀念

v0.9.130:Kimi、Grok、OMP 與 OpenCode 2 原生支援

整理 pstack-claude v0.9.130 的變更:新增 Kimi Code CLI、Grok Build、OMP、OpenCode 2 四個原生平台安裝方式,各平台的安裝指令、routing 機制差異與實測範圍,加上 setup-pstack 模型行為修正與 deslop diff 基準變更。含升級檢查清單。

v0.9.130:Kimi、Grok、OMP 與 OpenCode 2 原生支援

pstack-claude 於 2026-11-05 12:36 UTC 發布 v0.9.130,主軸是官方原文的這句:Kimi Code CLI、Grok Build、OMP、OpenCode 2 四個平台加入原生支援(#394、#398、#396、#397,@donbeave 貢獻)。本站逐項教學基準仍是 0.9.126,這一篇記錄 0.9.130 的差異,每項主張都對應 release notes 原文,上游沒寫的這裡不補。

Kimi Code CLI:plugin manifest 首度隨版發布

官方原文:「pstack now installs as a native Kimi Code CLI plugin. The root kimi.plugin.json points Kimi at the shared skills tree and adds the routing instruction in kimi-instructions.md to the system prompt while the plugin is enabled.」——根層級的 kimi.plugin.json 指向共用 skills 樹,plugin 啟用時把 kimi-instructions.md 的 routing 指令加進 system prompt。這是第一個攜帶該 manifest 的 release,也就是 README 的 Kimi 安裝說明一直在等的版本。

安裝與呼叫:在 fresh session 跑 /plugins install https://github.com/michael-denyer/pstack-claude 與 /reload,之後以 /skill:pstack:poteto-mode 呼叫 skill。新的 kimi-tools.md 把 Claude 工具對應到 Kimi 的工具,含 Agent 與其內建的 coder、explore、plan agents,以及做一次性 wake-up 的 CronCreate。

關閉方式:官方原文「Kimi reads no session hook line, so /plugins disable pstack is how to turn routing off」——Kimi 不讀 session hook 行,關閉 routing 只能用 /plugins disable pstack;setup-pstack 也不會在該處寫 effort 或 hook 行。

實測範圍:官方在 Kimi Code CLI 2.4.1 for macOS 確認安裝與 routing/skill 內容送達 synthetic provider;model compliance 未測(untested)。

Grok Build:routing hint 走 skill description,不是 hook

官方原文:「pstack now loads as a native Grok Build plugin from a local checkout, with grok plugin install "$PWD/plugins/pstack" --trust and grok plugin enable pstack.」——從本地 checkout 安裝後啟用。.grok-plugin/plugin.json 列出共用 skills 與一個 Grok 專屬的 pstack-routing skill。

routing 機制與其他平台不同:官方原文「Grok discards SessionStart hook output, so that skill’s description carries the poteto-mode hint instead」——Grok 會丟棄 SessionStart hook 輸出,改由該 skill 的 description 攜帶 poteto-mode hint。官方同時提醒:「The model may not follow it, and session hook: off does not turn it off; disabling the plugin does」——模型可能不遵循這個 hint,且 session hook: off 關不掉,唯有停用 plugin 才能關閉 routing。

新的 grok.md 把 Claude 工具對應到 Grok 的工具,Agent 對應 spawn_subagent。更新要注意:官方原文「grok plugin update does not refresh a local install, so the README gives the update steps」——本地安裝不會被 grok plugin update 刷新,更新步驟在 README。

實測範圍:Grok Build 1.0.70 for macOS 上以 tests/grok-smoke.py 確認 synthetic provider 收到 routing skill description 與明確 skill 內容。

OMP:marketplace 安裝,setup-pstack 只寫關閉行

官方原文:「pstack now installs as a native OMP plugin through the marketplace, with omp plugin marketplace add michael-denyer/pstack-claude and omp plugin install --scope user pstack@pstack-claude.」

新的 plugins/pstack/package.json 在 omp/index.mjs 宣告 extension:它在每個 main-agent turn 前加 poteto-mode mandate,並把 main 與 subagent turns 指向新的 omp-tools.md。skill 來源有刻意設計:官方原文「It has the agent read each pstack:<name> skill from the installed plugin’s files, so the agent never picks a same-named skill from another source」——agent 從已安裝 plugin 的檔案讀 skill,不會誤取其他來源的同名 skill。

關閉方式:在 ~/.omp/pstack-models.md 設 session hook: off,對每個 OMP profile 都關閉 routing;setup-pstack 在 OMP 只寫這一行,models 留給 OMP 自己的 modelRoles。

限制:官方原文「OMP 18.16.0 shares one plugin cache across scopes, so an upgrade or removal can affect other installations」——跨 scope 共用同一個 plugin cache,升級或移除可能影響其他安裝(上游 OMP issue 16827)。

實測範圍:OMP 18.16.0 確認本地 marketplace 安裝、skill 存取與 routing 開關;model compliance 未測。

OpenCode 2:原生 plugin 取代 ~/.agents/skills 安裝

官方原文:「OpenCode 2 now has a native plugin in place of the ~/.agents/skills install.」兩種安裝方式:把 checkout 的 plugins/pstack/opencode 目錄加進 ~/.config/opencode/opencode.jsonc 的 plugins 陣列,或安裝 Git 套件——官方原文給的指令是 opencode plugin add 'github:michael-denyer/pstack-claude#main';根層級 package.json 現在以 ./server 匯出 plugin。

opencode/index.js 把每個 skill 註冊為 pstack-<name>,並在 root sessions 的每個 model step(含 compaction 之後)加 session-start-opencode.md 的 routing 指令。當 pstack- skill ID 解析到其他安裝時會略過 routing。關閉方式:在 ${XDG_CONFIG_HOME:-~/.config}/opencode/pstack-models.md 設 session hook: off。

遷移提醒:官方原文「If you linked pstack skills into ~/.agents/skills before, remove the links that point at your pstack checkout first」——先前把 pstack skills link 進 ~/.agents/skills 的使用者,要先移除指向 checkout 的那些 links。OpenCode 1 不支援(unsupported)。新的 opencode-tools.md 把 Claude 工具對應到 OpenCode 的工具。

實測範圍:OpenCode 2.2.5 以 synthetic loopback provider 實測明確啟用與 routing;CLI delegation 更早在 2.0.30 驗證;此 plugin 的真實模型行為未測。

四個平台一併進 RUNTIMES 與測試

官方原文:「Kimi, Grok, OMP, and OpenCode join RUNTIMES in tools/runtimes.mjs, so the generator stamps their manifest versions and the Model names section of each mapping, and checks each manifest.」——generator 會標記四者的 manifest 版本與各 mapping 的 Model names 區段並檢查每個 manifest;poteto-mode 的 Platform Adaptation 與 setup-pstack 的 runtime 表都列上四者。tests/kimi.test.mjs、tests/grok.test.mjs、tests/omp.test.mjs、tests/opencode.test.mjs 檢查各 mapping 覆蓋 skills 用到的 Claude 術語。

setup-pstack 的模型行為修正

Kimi(#407,@donbeave 貢獻):官方原文「setup-pstack now says in steps 1 and 6 and in the sheet header that inherit-parent and auto omit model」——inherit-parent 與 auto 會省略 model,而 Kimi 此時在設了 [secondary_model] 預設時以該預設跑 subagent、否則用 parent 的 model,所以這兩個別名不再必然等於 parent 的 model。當 Agent 工具沒有 model 參數時,setup 只提供這兩個別名;Kimi 2.5.1 只在模型池有兩個以上模型時才顯示該參數。步驟 2 保留 model ID 原樣(含 claude- 開頭者),不改寫成 family 名稱;kimi-tools.md 說法一致,無 sheet 時 agent 省略 model。

Grok(#408,@donbeave 貢獻):官方原文指出 setup-pstack 原本「read models from the Agent tool and the session model selector, but Grok dispatches through spawn_subagent, whose description lists the models a subagent can use」——步驟 1 現改提供 spawn_subagent description 列出的那些模型。當 subagent model inheritance 隱藏 model 引數時,setup 只提供 inherit-parent 與 auto,並註明設定的 subagent overrides 仍然生效。步驟 2 保留工具列出的完整 claude- model ID,不改寫成 family 名稱。

其他修正:Antigravity 空輸出、MiniMax 更新、worktree-audit

Antigravity(#405,@donbeave 貢獻):官方原文——「With session hook: off, the Antigravity SessionStart hook now prints {} where it printed nothing」——因為 Antigravity 的 hooks 文件說 hook 以 JSON 在 stdout 回傳輸出;{} 不帶 injectSteps,故不載入 mandate,tests/session-hook.test.mjs 的 agy off 案例改以 JSON 解析輸出。

MiniMax Code(#401,@donbeave 貢獻):官方原文——「The README’s MiniMax Code update steps no longer delete the installed copy」——更新改為:記錄 plugin 啟用狀態、結束每個 mcode process、把 plugins/pstack 搬到 plugins/ 之外的未用路徑(官方說明:「since MiniMax loads every directory under plugins/」),再跑 git pull 與 cp 行,最後還原啟用狀態。首次安裝會檢查 plugins/pstack 不存在。參考表新增記錄:MiniMax Code 0.7.4 上,synthetic-provider sessions 在 plugin 啟用時送達 routing 與明確的 pstack:poteto-mode skill、停用時省略;agent dispatch 與真實模型 compliance 仍未驗證(unverified)。

worktree-audit(#406,@donbeave 貢獻):官方原文——「worktree-audit.mjs no longer stalls under Bun on macOS」——原以 realpathSync 以名稱比對 sibling symlink,而 Bun 會開啟 link 目標取其名稱;macOS 27.2 guest 中對 autofs 的 /home link 做該動作會卡死測試。Bun on macOS 下改只以 stat identity 比對 links;在 Node(腳本 shebang 所指定)與其他平台維持名稱比對。

deslop 基準、how 提示、session-pickup 與 codex-tools(#400)

這批變更由 @wattanartongtipsukon-create 貢獻,官方原文:

  • deslop diff 基準:「deslop diffs against the branch’s base, where it diffed against main.」base 依序取 PR 的 base branch、否則分支切出的來源分支、否則預設分支,未提交變更也計入。編輯後 deslop 重跑驗證該變更的 checks,檢查失敗的編輯會被還原(revert)。
  • how 的 simple path:explainer prompt 改告知孤身 explainer「no explorers ran, so it traces the code itself」——需自行追蹤程式碼;舊 prompt 謊稱 explorers 已完成該工作。
  • session-pickup playbook:現在先驗證 inherited claims 再路由剩餘工作——原本步驟 4 路由後即結束 playbook,步驟 5 的驗證落在結束之後。
  • codex-tools.md:對映 ${CODEX_HOME:-~/.codex}/sessions/ 與 archived_sessions/ 下的 Codex rollouts,含以 zstd -dc 讀取的 zstd 壓縮 .jsonl.zst,只保留 cwd 為 workspace 或其 worktree 的 rollouts;recall 與 show-me-your-work 改把 Codex 導向該對映、讀 Codex 歷史而非 Claude Code 的 projects 目錄,show-me-your-work 在 CODEX_THREAD_ID 未設定時回報審計無法執行。
  • policy forks:tools/forks.json 將 deslop 與 explainer-prompt 編輯自 0.9.130 起宣告為 policy forks。

升級檢查清單

從 0.9.129 升到 0.9.130 時,逐項確認:

  • 不用這四個新平台的使用者:可只確認既有限制項——Antigravity 的 hook 關閉輸出改印 {}、MiniMax Code 的更新步驟改寫;既有平台安裝方式不變。
  • 要裝 Kimi Code CLI:跑 /plugins install https://github.com/michael-denyer/pstack-claude 與 /reload;關閉 routing 用 /plugins disable pstack(Kimi 不讀 session hook 行)。
  • 要裝 Grok Build:以 grok plugin install "$PWD/plugins/pstack" --trust 安裝、grok plugin enable pstack 啟用;更新不能靠 grok plugin update,依 README 步驟;關閉 routing 只能停用 plugin。
  • 要裝 OMP:omp plugin marketplace add michael-denyer/pstack-claude 之後 omp plugin install --scope user pstack@pstack-claude;注意 OMP 18.16.0 的 plugin cache 跨 scope 共用,升級/移除可能影響其他安裝。
  • 要裝 OpenCode 2:優先移除 ~/.agents/skills 裡指向 pstack checkout 的舊 links,再以 opencode plugin add 'github:michael-denyer/pstack-claude#main' 安裝;OpenCode 1 不支援。
  • Kimi 上用 setup-pstack:理解 inherit-parent/auto 會省略 model、不一定等於 parent 的 model;Kimi 2.5.1 只在模型池兩個以上模型時顯示 model 參數。
  • Grok 上用 setup-pstack:模型清單來自 spawn_subagent 的 description,不再是 Agent 工具。
  • 常用 deslop 的使用者:diff 基準從 main 改為 branch 的 base;編輯後會重跑 checks 並還原失敗編輯。
  • 用 session-pickup 的使用者:playbook 會先驗證 inherited claims 再路由剩餘工作。
  • 用 recall/show-me-your-work 讀 Codex 歷史:改由 codex-tools.md 對映讀 Codex rollouts;CODEX_THREAD_ID 未設定時 show-me-your-work 會回報審計無法執行。

對本站教學的影響

  • 逐項教學(67 篇)內容基準仍是 0.9.126,本篇與 v0.9.129 差異記錄、v0.9.127~0.9.128 差異記錄都是其後的版本記錄。
  • 平台清單未因此改寫:這四個平台屬於移植版新增的原生支援,各平台安裝與關閉方式差異大(Kimi 用 /plugins disable、Grok 停用 plugin、OMP 與 OpenCode 用 session hook: off),完整細節以本篇與上游 release notes 為準。