跳到內容

設定

pi-straw-boss 不需要任何設定就能運作。以下所有項目都是選用的。

設定檔是 <agentDir>/straw-boss/config.json,其中 <agentDir> 是 PI_CODING_AGENT_DIR,否則是 ~/.pi/agent。

{
"towerModel": "provider/model-id",
"headModel": "provider/model-id",
"towerRuns": { "enabled": true, "max": 4 },
"integration": "on",
"stallWatch": { "cpuMinutes": 5, "silentMinutes": 30 },
"link": {
"relay": "https://relay.example",
"trust": { "<device id>": "forward" }
}
}
鍵 預設 做什麼
towerModel pi 的預設模型 塔台 run 的模型。塔台只負責轉送與協調,所以可以用比較輕量的模型。每次塔台啟動時讀取。
headModel towerModel 主塔台執行的模型。
towerRuns.enabled true 塔台服務:塔台是一次因事件而醒來、結束時留下交接筆記的執行。false 則保留常駐的塔台。讀不到或無法解析的檔案也視為開啟,server 會在它的 log 裡說明。
towerRuns.max 4 同時跑的 pi 執行上限。
integration on(在 STRAW_BOSS_DESK=1 下為 off) off 會在這台電腦上關掉合併火車。開啟是 on、true、1 或 yes;關閉是 off、false、0 或 no。任何其他值,以及讀不到的檔案,都會把它關掉並發出通知。
stallWatch.enabled true 停滯監看:pi session 看起來卡死時,sb server 會告訴該工作區的塔台,但絕不停掉那個 session。false 關閉。stallWatch 的每個鍵每分鐘讀一次,改了不必重啟。
stallWatch.cpuPercent 75 占用單一核心多少算是滿載,10 到 100,以 cpuMinutes 內的平均計算。某一分鐘低於它的一半就算平靜,計數重新開始。歷史很長的正常 session 工作時,某一分鐘也可能超過這個值(實測兩個分別是 73 和 83);它和卡死的差別在於還在寫 session 檔,所以調低這個值幫助不大,還可能誤報。
stallWatch.cpuMinutes 5 pi 連續幾分鐘都不平靜、平均達到 cpuPercent 以上,session 檔又沒有寫入,才通報。其中某一分鐘略低於門檻不會讓計數重新開始。0 關閉這個訊號。
stallWatch.silentMinutes 30 pane 顯示工作中,但 session 檔沒有寫入、也沒有進行中的工具呼叫,最多容許連續幾分鐘。session 有了回應並開始工具呼叫,就算恢復。0 關閉這個訊號。
stallWatch.missingMinutes 3 還活著的 pi 最多可以連續幾分鐘不在 pi-intercom 的清單裡;server 重啟後的寬限也是這個數字。0 關閉這個訊號。
stallWatch.remindMinutes 60 事件通報後多久發第一次提醒;之後每次等待加倍,最長 8 小時。訊號消失期間不發提醒。0 不提醒。
link.relay 無 新的 Straw Link 團隊預設使用的 relay。
link.trust 每個裝置都是 reply 這台電腦對每位隊友裝置的信任程度:reply、forward 或 dispatch。

頁面與 /boss link 指令會自己寫入 link 區段的 teams;只有要修復時才手動編輯。在無人值守裝置上,改由 root 擁有的 /etc/straw-link/policy.json 提供團隊與信任,link 區段會被忽略。

專案在 git 根目錄的 .straw-boss/apps.json(第一個不存在時用 .claude/straw-boss/apps.json)描述它的 app。主智慧體依 app 拆分工作時會讀它,合併火車則讀它的 integration 欄位。沒有這個檔案時,只含一個程式碼庫的儲存庫自己就是唯一的 app。

{
"integration": { "skill": "integrate", "maxCars": 4, "maxWaitMin": 60 },
"apps": [
{
"name": "api",
"dir": "apps/api",
"match": ["backend", "rest api"],
"integration": { "base": "develop", "stages": ["merge", "deploy"], "accept": ["e2e"], "targets": { "test-env": "auto" } }
}
]
}

prompts/apps-config.md 說明每個欄位。

在 herdr server 與它啟動的 session 的環境裡設定這些。

變數 做什麼
PI_CODING_AGENT_DIR pi 的 agent 資料夾,狀態資料夾 straw-boss/ 就在裡面。預設 ~/.pi/agent。
STRAW_BOSS_INTEGRATION off 或 on:合併火車的開關。非空值優先於 config.json 裡的 integration。
STRAW_BOSS_DESK 1 表示自己顯示頁面的桌面 shell:GUI 不開瀏覽器,合併火車除非你設為開啟,否則是關的。見桌面模式。
STRAW_BOSS_ASCII 1 讓塔台的常駐 pane 只用 ASCII 繪製。NO_COLOR 與 TERM=dumb 會去掉它的顏色。