Communitygithub.com

br1chen/pstack-trio

在單一 Herdr 或 Rex 工作階段中同時執行三個編碼智能體:主控者負責規劃、簡報、審查與決策;搭檔負責在 pstack 腳本指導下實作、測試與診斷;顧問則以不同類型的智能體提出設計批判、回答設計與發現問題,並在暫用工作目錄中製作原型。

pstack-trio 是什麼?

pstack-trio 技能在單個 Herdr 或 Rex 工作階段內建立一個三智能體協作架構:主控者(master)、搭檔(sidekick)和顧問(consultant)。主控者擁有判斷權,負責規劃、簡報、轉向、審查和所有最終決策,並透過「trio store」(一組以檔案為基礎的通道)與其他智能體溝通。搭檔是主要的執行者,按照 pstack 腳本處理實際的工作目錄、撰寫測試、進行診斷並提供進度報告。顧問提供第二意見——批判設計決策、回答主控者的諮詢問題,以及利用暫用工作目錄製作原型,但從不直接與搭檔互動或寫入共享工作目錄。關鍵優勢在於其內建的制衡機制:實施始於一個計劃,該計劃必須獲得搭檔的同意和顧問的建議;某些轉向在修改設計之前需要強制諮詢;顧問的建議是可推翻的,但所有決策都有記錄。該技能運行於 Herdr 或 Rex 複用器之上,要求至少兩種不同的智能體類型(例如 Claude 搭配 Codex),並提供強健的檔案庫、檢查點、佇列處理和用於三向程式設計的標準化訊息格式。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/br1anchen/open-pstack/tree/HEAD/skills/pstack-trio

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

在遵循此工作流程之前,請先閱讀執行階段適配器。其執行階段對應關係適用於所有被引用的腳本和 playbook。

Pstack 三體

三個智能體,一個 Herdr 或 Rex 工作階段,一個儲存庫。主控者擁有判斷權,搭檔擁有工作目錄,顧問擁有第二意見。它們之間的每一則訊息都是 trio store 中的一個檔案,加上一行命名該檔案的名字。終端機絕非記錄,因為在備用螢幕上的智能體不會留下捲動緩衝區。

此三體是 pstack-pair 加上一個顧問。配對的計劃回合、簡報、簽到、轉向和審查保持不變;顧問參與每個計劃回合,並在發現問題改變設計時回答諮詢。它從不向搭檔發送訊息,也從不寫入共享目錄。

先決條件

  1. 在 Herdr (test "${HERDR_ENV:-}" = 1) 或 Rex (REX_BLOCK 已設定) 內部。如果兩者都不是,請說明並停止。
  2. 載入複用器的技能以控制窗格和智能體:Herdr 的 ~/.agents/skills/herdr/SKILL.md(或當該檔案不存在時的 herdr --skill),或 Rex 的 rex skill show。其安全規則貫穿始終。在 Rex 中,請閱讀在 Rex 中執行。
  3. herdr 或 rex,以及 PATH 上的 Python 3.11 或更高版本 (python3)。scripts/pair.sh help 會列出每個儲存和頻道操作;對於三體,請使用它,而不是手動呼叫 herdr 或 rex。
  4. 在主控者、搭檔和顧問中,至少有兩種不同的智能體類型。pair.sh spawn 會從複用器讀取主控者的類型,並且如果三者相同則退出 8;請告訴人類選擇另一個類型或使用 pstack-pair。搭檔和顧問可以共享同一類型。
  5. 以自動模式啟動主控者。Devin 預設使用 --permission-mode dangerous 繞過權限。其他類型繼承主控者的模式。pair.sh permission 會列印檢測到的主控者模式。--permission <mode> 會覆寫兩個衍生角色;--consultant-permission <mode> 僅覆寫顧問。-- 後的原生權限標誌會覆寫該次呼叫衍生的每個角色的預設值。--permission auto 會選擇 Devin 的智慧模式。沒有對應翻譯的類型會接受 -- 後的原生標誌。spawn 也會跳過每個類型的資料夾信任提示,這會導致未經監管的智能體在未見過的資料夾中掛起:pi 會取得 --approve,Devin 會取得 --respect-workspace-trust false。-- 後的信任標誌會覆寫它。衍生的 Claude 也會在沒有 MCP 伺服器的情況下啟動 (--strict-mcp-config 和空配置),因為每個伺服器都是每個工作階段的一個程序;-- 後的 --mcp-config 會保留您的配置。Claude 和 Codex 會要求信任它們未見過的資料夾;該決定屬於人類,因此 spawn 會拒絕對話並停止,並提供下一步操作:在儲存庫中開啟該智能體一次並信任它。

角色

主控者搭檔顧問
擁有計劃、簡報、諮詢、審查、決策、人類工作目錄、測試、診斷、證據設計批判、二次審查、原型
以 pstack 身分執行poteto-mode 框架、how、architect、審查技能每個簡報命名的 playbook,及其待辦事項清單how、why、architect 替代方案、interrogate 姿態、blast-radius(用於差異)
寫入僅限 trio store簡報範圍內的檔案,以及其進度記錄和報告建議檔案,以及它會移除的暫用工作目錄
讀取目錄始終,唯讀;在暫存區的某個提交點執行檢查始終始終,唯讀
透過...溝通計劃、簡報、轉向、諮詢、審查、常規命令、閘門進度行、報告建議

進入你的角色。主控者:references/master.md。搭檔:references/sidekick.md。顧問:references/consultant.md。

Trio store

${XDG_STATE_HOME:-$HOME/.local/state}/pstack/trio/<slug>/,由 pair.sh init 建立。每個檔案一個寫入者。

路徑寫入者內容
pair.json主控者透過 pair.sh智能體名稱、窗格 ID、類型、當前工作目錄、git 根目錄、開啟的暫存區列表、搭檔的備用和故障轉移、窗格佈局(分割或標籤)
standing-orders.md主控者按路徑貼入每個簡報的編號約束
plans/NNN-<slug>.md主控者一個計劃回合,來自計劃範本
briefs/NNN-<slug>.md主控者一個單元,來自簡報範本
progress/NNN-<slug>.md搭檔透過 pair.sh progress每個完成的步驟或方法變更一個時間戳記行
steers/NNN-<slug>-s<k>.md主控者針對單元 NNN 的中間簡報方向 k,來自轉向範本
consults/NNN-<slug>-c<k>.md主控者關於單元 NNN 向顧問提出的問題 k,來自諮詢範本,帶有 kind: 為 design、finding、objection 或 review
reports/NNN-<slug>-s<k>.md搭檔對轉向 k 的反對,來自轉向回應範本
reports/NNN-<slug>.md搭檔簡報 NNN 的證據,來自報告範本,或對計劃 NNN 的同意/反對回應,來自計劃回應範本
advice/NNN-<slug>.md顧問對計劃 NNN 的設計批判,來自計劃建議範本
advice/NNN-<slug>-c<k>.md顧問對諮詢 k 的回答,來自建議範本
scratch/<id>顧問或主控者透過 pair.sh scratch指向一個用於一次諮詢 (NNN-<slug>-c<k>) 或審查 (NNN-<slug>-review) 的暫用工作目錄的連結,位於某個提交點或即時狀態,保留在 repo 之外 ${XDG_STATE_HOME:-~/.local/state}/pstack/scratch/(PSTACK_SCRATCH_ROOT 可移動它),Claude 和 Codex 必須在每個主機上信任一次(kitchen.py doctor 會檢查);完成後移除
reviews/NNN-<slug>.md主控者對單元 NNN 的裁決,來自審查範本;列出其所依據的建議以及任何推翻
gates.md主控者向人類提出的開放性問題
decisions.tsv主控者透過 pair.sh log展示你工作的軌跡
status.mdpair.sh status衍生表格;切勿手動編輯
queue主控者透過 pair.sh queue 和 dispatch下一個簡報的路徑,一個插槽
steps/NNN-<slug>.tsv搭檔透過 pair.sh step每個已提交步驟一行:編號、提交、時間、所解決的筆記、摘要
notes/NNN-<slug>-n<k>.md主控者透過 pair.sh new-note 和 note透過步驟 k 對單元步驟的審查,來自筆記範本:阻塞項目和後續行動
followups.md主控者透過 pair.sh note來自每個筆記的後續行動,用於稍後的簡報或問題
session-handoff.md主控者精簡的恢復和下一個任務上下文,在引導時讀取
sessions/pair.sh spawn / rotate先前的準備就緒報告;保留的工作階段匯出和計時證據
events.tsv每個 pair.sh 命令每個訊息、報告、喚醒和記錄條目一行,由 pair.sh metrics 讀取

NNN 是一個由計劃或簡報、報告、建議和審查共享的零填充序列,因此一個單元的檔案會一起排序。

訊息

提示文字方向發送者的輔助工具接收者的動作
bootstrap (命名技能、角色和 store)主控者到搭檔和顧問pair.sh spawn引導步驟,reports/000-ready.md 或 advice/000-ready.md,回覆 READY
pstack-trio PLAN <plan-path>主控者同時發送給搭檔和顧問pair.sh discuss搭檔將計劃在程式碼中落地;顧問批判設計;各自寫入同意或反對,結束該輪
pstack-trio BRIEF <brief-path>主控者發送給搭檔pair.sh dispatch執行簡報,撰寫其報告,執行 pair.sh finish,然後以 REPORT 行結束該輪
pstack-trio BRIEF <brief-path>,已排隊主控者發送給工作中的搭檔pair.sh queue主控者在新工作階段後分發它;pair.sh next 拒絕
pstack-trio STEER <steer-path>主控者發送給工作中的搭檔,或一個因反對而暫停的搭檔pair.sh steer在工具呼叫之間讀取它;同意並繼續,或以證據反對並結束該輪
pstack-trio CONSULT <consult-path>主控者發送給顧問pair.sh consult讀取命名檔案,如果需要則在暫存區中製作原型,寫入建議,結束該輪
pstack-trio REPORT <report-path>搭檔發送給主控者pair.sh finish (或 notify)讀取報告,審查
pstack-trio ADVICE <advice-path>顧問發送給主控者pair.sh notify讀取建議,決定
pstack-trio STOP <store>主控者發送給搭檔和顧問pair.sh stop安全暫停,寫入停止報告或建議

discuss 會在兩個智能體都安定後返回,並帶有每個角色的一個回應路徑和狀態。忙於某個單元的搭檔不會阻礙回合進行:顧問會立即收到計劃,搭檔的那一半是 deferred(退出碼 4),並且在搭檔報告後再次執行 discuss 只會發送那一半。consult 會在顧問安定到 idle、done 或 blocked 時返回。dispatch 和 wait 會在搭檔的回覆到達、報告在訊息後寫入,或當它處於 blocked 時返回;僅來自複用器的安定狀態是不可信的:Devin 搭檔在提示到達時和步驟之間顯示為空閒,並且在狹窄的窗格中可以顯示為整個執行完成,因此會根據窗格的「esc to interrupt」行檢查安定狀態,對於在 1 分鐘內沒有報告且保持安定狀態的窗格,wait 會以 report: missing 結束。dispatch 和 wait 也會在簽到間隔返回摘要。wait 也會在已分發的簡報的報告落地時立即返回,即使搭檔已經接受了排隊的簡報;running: 隨後會命名它所處的簡報。notify 僅在主控者空閒時提示主控者。壓縮後您收到的訊息仍會命名此技能和要讀取的檔案,因此請重新載入技能並從該檔案繼續。

先計劃

實施僅從搭檔同意且顧問已提供建議的計劃開始。主控者起草 plans/NNN-<slug>.md,包含所選設計、它所權衡的替代方案及其優缺點,然後透過 pair.sh discuss 發送,該訊息會同時到達兩個智能體。搭檔會根據程式碼檢查每個步驟,並以證據回答同意或反對。顧問批判設計本身:資料形狀、邊界、替代方案表遺漏的內容,並回答同意或反對。主控者將兩者合併到下一輪或一個帶有裁決 agreed 的審查中。

顧問是諮詢性的。來自顧問的 object 不會阻止 agreed;主控者可以在審查的「已推翻」部分下以理由和一條決定行推翻它。然而,一個計劃回合的建議檔案必須存在:pair.sh dispatch 會拒絕一個 feature、bug-fix、refactoring、perf-issue 或 pstack-tdd 簡報,如果其計劃沒有存檔的顧問建議或沒有 agreed 的審查。唯讀和取證簡報不需要計劃;錯誤的診斷簡報在其計劃之前執行。三個回合未能達成協議將成為一個給人類的閘門,所有立場都記錄在 gates.md 中。

諮詢

諮詢是主控者在計劃回合之外向顧問提出的問題。pair.sh new-consult <store> <NNN> --kind <kind> 會為單元 NNN 建立檔案;pair.sh consult 會發送它並等待建議。

類型時機顧問回答
design主控者在計劃或轉向之前權衡方向哪條路以及為什麼,附帶權衡取捨
finding簽到摘要、報告或差異顯示出意外情況它是否如所見,以及它改變了什麼
objection搭檔反對轉向根據證據誰是對的,以及替代方案
review裁決被質疑或單元處於第二次修訂接受、修訂或拒絕,附帶發現
glance簽到顯示第一個提交或一個較大差異,針對一個修訂成本最高的單元五分鐘內:審查是否會說修訂,以及為什麼,或 none

在以下情況下必須進行諮詢:偏離商定設計的轉向、在搭檔反對之後的後續轉向,以及對單元第二次嘗試的 revise 裁決。在其他情況下是可選的,並且不會為著陸單元發送任何諮詢:每個討論和審查都在著陸前結束。每個單元三次諮詢;new-consult 會在沒有 --force 的情況下拒絕第四次,因為第四次意味著設計有問題,應該屬於一個計劃回合。glance 不在此上限之內,每個單元一次,並且絕非強制性的:顧問的配額是稀缺資源,因此請將其花費在後期修訂成本最高的地方。

每個諮詢隨時可以執行,無論搭檔是否在工作。consult 會在檔案上蓋上搭檔的狀態和 HEAD 戳記;顧問會讀取該 HEAD 上的已提交工作,以及任何未提交的工作(僅透過 pair.sh scratch 快照,絕非在其下移動的目錄)。每個諮詢都帶有一個時間盒,預設為 15 分鐘,glance 為 5 分鐘;超過時間盒,顧問會撰寫 partial 建議並結束該輪。

簽到與轉向

與 pstack-pair 相同:搭檔附加進度行,dispatch 和 wait 在間隔返回簽到摘要,並且轉向是可能到達工作中的搭檔的唯一訊息。每個簡報兩個新的轉向,每個轉向兩輪。顧問增加了一個步驟:當摘要或反對顯示改變設計的發現時,主控者在轉向之前進行諮詢,並且轉向的「方向」會引用建議路徑。

每種智能體的任務工作階段

任何類型的搭檔(Claude、Codex、Devin、pi、Prime、Muse)都使用一個新的對話...

[因翻譯而截斷]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能