前言¶
DSH bundle 插件 dsh-code-pipeline 旨在爲 code-pipeline 預設(PTC Code Mode 流水線)動態注入階段子代理工具,並允許在設置頁配置各階段子代理使用的模型。
原本的 code-pipeline 預設將 3 個 dsh-tool-subagent 行(subagent_plan / subagent_impl / subagent_review)以及每個階段的 provider/model/persona/toolFilter 靜態釘死在 agent.cordis.yml 裏。若要修改模型,必須修改 YAML 並重啓會話。本插件通過監聽 agent/created 事件,在 agent.ctx 中註冊工具,並將模型選擇邏輯解耦至運行時讀取設置,從而實現無需重啓會話的動態配置。
核心功能¶
- 動態注入工具:爲組合了
code-pipeline預設的 ROOT 代理注入三個階段子代理工具。 - 動態模型配置:通過 Settings → 代碼流水線 頁面,實時配置各階段的
enabled、provider、model、reasoningEffort和maxConcurrency。 - 多輪評審複用:利用
pipeline_followup工具,在多輪評審(plan → impl ↔ review)中複用同一個評審子代理,避免重複傳遞上下文。 - 派發消息落盤:主代理調用階段工具時,將完整派發消息(含 diff、plan 等)整體寫入系統臨時文件,避免上下文截斷。
- 後臺模式運行:階段工具默認以
run_in_background模式運行,立即返回子代理 ID,子代理獨立會話繼續執行。
安裝與啓用¶
推薦使用一行命令從 GitHub 分發安裝。
dsh plugin --profile web add github:ErrorLst/dsh-code-pipeline
- 該命令在 web profile 下執行
pnpm add github:ErrorLst/dsh-code-pipeline,並自動將@dsh-external/dsh-code-pipeline追加進dsh.profile.bundles。 - 安裝成功後,重啓
dsh web即可掛載生效。 - 首次啓動自動安裝預設:插件會檢測
$DSH_HOME/.agent-presets/code-pipeline,若缺失則自動從包內preset/code-pipeline/拷貝(冪等,已存在則跳過,絕不覆蓋)。
本地開發安裝方式:
dsh plugin --profile web add link:<本倉庫絕對路徑>
卸載方式:
dsh plugin --profile web remove @dsh-external/dsh-code-pipeline
配置與使用¶
設置頁配置¶
在瀏覽器設置頁進入「代碼流水線」配置:
* Provider/Model:列表來自 GET /dsh-code-pipeline/options,不可用時相應字段禁用,不允許手輸。
* 運行狀態:每階段卡片顯示「當前運行 N / 上限 M」,數據來自 GET /dsh-code-pipeline/status(每 5 秒輪詢)。
* 子代理消息投遞:支持「固定插入」(默認)和「固定排隊」兩種投遞方式。固定插入利用 steer 語義,運行中子代理在下一模型步驟即可收到消息;固定排隊則走原生 human-queue 通道。
pipeline_followup 工具¶
當階段子代理已派發並開始運行時,用戶改需求需使用 pipeline_followup 工具:
* 參數 child:支持 latest、階段鍵(plan / impl / review)或完整 subagentId。
* 參數 message:需求變更文本,需自包含(子代理無本對話上下文)。
* 行爲:調用宿主原生 subagents.sendMessage。若子代理空閒或已結束,會喚醒新回合;若正在運行,則插入到下一個模型步驟。
人工閘門¶
Plan 階段結束後,主代理將完整計劃以 Markdown 回覆直接呈現在對話中,結束回合等待用戶輸入。
* 批准(如 approve、同意、ok):進入實現階段。
* 其他內容:視爲修訂反饋,併入計劃重新呈現(最多兩輪)。
多輪評審複用協議¶
基於 prompt 協議,第一輪評審後的輪次複用同一個評審子代理:
1. 第 1 輪:使用 subagent_review,返回 subagentId。
2. 第 2 輪起:使用 pipeline_followup,child 傳該 subagentId,message 包含完整的新 diff、編號問題處理說明及回覆契約(APPROVED / CHANGES REQUIRED:)。
3. 注意:第 2 輪起不再傳遞計劃與歷輪 diff,依靠子代理會話內的前綴緩存。
限制與要求¶
- 子代理輸入框:子代理自己的輸入框仍會排隊(宿主
subagents.prompt硬編碼mode: 'continuable',且輸入欄對子代理會話關閉了 steering)。改需求請走主對話 → 代理調用pipeline_followup。 - 評審物料落盤:評審物料只允許寫系統臨時目錄(
$env:TEMP)。主代理不得在項目根目錄或子目錄創建*.diff、.review_*等文件。 - 預設維護:
preset/code-pipeline目錄隨項目維護。插件升級後若行爲對不上,請檢查該目錄是否落後於倉庫版本。 - 引擎要求:
node >= 22.19.0,dsh >= 0.1.6-alpha.1。 - 許可證:MIT。
總結¶
dsh-code-pipeline 插件通過解耦工具註冊與模型選擇,提供了靈活的流水線配置能力。配合 pipeline_followup 和多輪評審複用協議,能夠有效管理長任務的上下文傳遞與變更響應。安裝後重啓會話即可使用。