dsh-code-pipeline:爲 PTC Code Mode 流水線注入階段子代理工具

前言

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 中註冊工具,並將模型選擇邏輯解耦至運行時讀取設置,從而實現無需重啓會話的動態配置。

核心功能

  1. 動態注入工具:爲組合了 code-pipeline 預設的 ROOT 代理注入三個階段子代理工具。
  2. 動態模型配置:通過 Settings → 代碼流水線 頁面,實時配置各階段的 enabled、provider、model、reasoningEffort 和 maxConcurrency。
  3. 多輪評審複用:利用 pipeline_followup 工具,在多輪評審(plan → impl ↔ review)中複用同一個評審子代理,避免重複傳遞上下文。
  4. 派發消息落盤:主代理調用階段工具時,將完整派發消息(含 diff、plan 等)整體寫入系統臨時文件,避免上下文截斷。
  5. 後臺模式運行:階段工具默認以 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 和多輪評審複用協議,能夠有效管理長任務的上下文傳遞與變更響應。安裝後重啓會話即可使用。

GitHub 倉庫

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜