dsh-cat-loop:一個對話裏三套獨立 Agent Team 與強制權限邊界

前言

在 DeepSeek Harness(dsh)裏做多智能體協作時,常見做法是讓一個總控 Agent 通過 subagent 派活。這樣會碰到幾類具體問題:子智能體只是父會話的子對話,成不了 Team Lead,也拉不起自己的隊友;Plan、Build、Review 擠在同一上下文裏,文件與命令權限往往只能靠提示詞「約定」;側邊欄裏也不方便點進某一角色、直接接管那一隊的會話。

下面介紹社區插件 dsh-cat-loop(npm 包名 @marvinlee2011/dsh-cat-loop,倉庫 lee-nihao2333/dsh-cat-loop)。它在一次 cat-loop 工作流裏同時拉起 Plan、Build、Review 三個獨立的 Agent Team 根會話,並在 Host 側用守衛強制執行各隊的讀寫與 shell 邊界,而不是把規則只寫在系統提示裏。

這是什麼

dsh-cat-loop 是 dsh 的工作流類插件:新建 preset 爲 cat-loop 的對話時,該對話即 Plan 團隊(真實 Team Lead,可 spawn_teammate);插件還會在同年工作區裏創建 Build、Review 兩個獨立的 Agent Team 會話。三者在側邊欄呈現爲「一個根對話 + 可展開的 plan / build / review 子行」,點任一行進入對應團隊的真實會話。

維護與源碼歸屬:GitHub 倉庫由 lee-nihao2333 託管;npm 元數據中 author 爲 marvinlee2011。分類上屬於 工作流。插件在 SkillHub 目錄頁 可查;該目錄爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

核心功能

三隊獨立、可見可切換

  • 選 cat-loop preset 進入的對話是 Plan 隊(內部 preset 爲 cat-plan)。
  • Build、Review 爲無父會話的 root 會話,各自安裝 Agent Teams 工具,可再拉隊員。
  • 側邊欄 Plan 行左側 ▸ 展開後可見 plan / build / review;右側「子對話 / Sub-conversations」面板同步三隊狀態。Build、Review 的原生側邊欄行由 Client 半隱藏,以子對話形式掛在 Plan 下,點擊後仍打開獨立團隊會話。

工作流與協作工具

典型流轉(README 原文):

用戶需求 → Plan 寫 .cat-prompt/*.md 任務文檔
        → cat_send 派發給 Build + Review
        → Build 實現;Review 同時在 .cat-test/ 寫檢查代碼
        → Build 完成 → cat_send(code-ready) → Review 跑檢查 + 審查
        → cat_send(report) 回 Plan → 通過則下一個任務,不通過則寫修復 brief 再來一輪

各隊除插件提供的 cat_send、cat_status 外,仍可使用 Agent Teams 自帶工具(spawn_teammate、send_message、team_task_* 等);隊員掛在各自團隊對話下,繼承隊長 preset 與權限邊界。

權限由 Host 強制執行

邊界由 lib/guard.js 實現,兩層機制:fs/write-intent、fs/edit-intent 按真實路徑判定;ctx.tools.guard() 限制 shell 類工具。

團隊 preset 文件邊界 shell
Plan cat-plan 只可寫 .cat-prompt/,其他只讀 無 shell 工具
Build cat-build 可讀寫任意文件,除 .cat-test/ 有;命令不得出現 .cat-test
Review cat-review 只可寫 .cat-test/,其他只讀 有;命令路徑須在 .cat-test/ 內

默認目錄名可通過配置改:promptDir 默認 .cat-prompt,testDir 默認 .cat-test。

架構要點(便於排查)

  • Host:ctx.catLoop(會話快照、團隊管理、cat_send / cat_status)、權限守衛、只讀本機路由 GET /api/cat-loop/peek?session=、/api/cat-loop/state?session=;狀態文件默認 $DSH_HOME/cat-loop/state.json。
  • Client:子對話展開面板、隱藏 Build/Review 原生行、對話頭部子對話按鈕與右側面板。
  • 三隊 cwd 均爲項目根,不額外創建工作區;可選 structure: folder 把三隊放進獨立 workspace 文件夾(舊佈局)。

安裝與啓用

環境要求(來自 package.json engines):

  • Node:^22.19.0 || >=24.0.0
  • dsh:>=0.2.1-rc.2 <0.3.0

方式一:插件管理器(推薦)

在 dsh Web 的「插件」頁安裝 @marvinlee2011/dsh-cat-loop(bundle),或在 profile 的 $DSH_HOME/profiles/<profile>/package.json 中加入:

{
  "dependencies": { "@marvinlee2011/dsh-cat-loop": "^1.0.0" },
  "dsh": { "profile": { "bundles": ["@marvinlee2011/dsh-cat-loop"] } }
}

然後重啓 dsh(Host 半改動需重啓;Client 半刷新頁面即可)。

方式二:本地開發(link)

{
  "dependencies": { "@marvinlee2011/dsh-cat-loop": "link:/path/to/dsh-cat-loop" },
  "dsh": { "profile": { "bundles": ["@marvinlee2011/dsh-cat-loop"] } }
}

npm 包:https://www.npmjs.com/package/@marvinlee2011/dsh-cat-loop。許可證:MIT(當前資料中版本爲 1.0.0)。

典型用法

  1. 新建對話:工作區選項目目錄,preset 選 cat-loop,進入 Plan 團隊後直接描述需求。
  2. 查看與切換:側邊欄展開 Plan 下的三子對話,或打開右側子對話面板,點進 build / review。
  3. 協作:Plan 在 .cat-prompt/ 寫任務 md,用 cat_send 派發;Build 改源碼,Review 在 .cat-test/ 寫檢查腳本並審查;完成後經 cat_send 回 Plan。可用 cat_status 查看三隊會話與狀態。
  4. 驗證權限(可選):在 plan 裏試 bash 應無工具;Plan 寫 src/ 應拒絕、寫 .cat-prompt/test.md 應成功;build 寫 .cat-test/ 應拒絕;review 寫 .cat-test/check.mjs 應成功、執行帶項目根路徑的命令應拒絕。README 稱上述行爲在 test/policy.test.mjs、test/plugin.test.mjs 中有自動化用例。

配置項(Host,cordis.patch.yml 中 id: cat-loop)

配置項 默認 說明
promptDir .cat-prompt Plan 任務文檔目錄
testDir .cat-test Review 檢查代碼目錄
presets root/plan/build/review 映射 角色到 preset id
structure nested nested 或 folder
hiddenPresets [cat-root, cat-build, cat-review] 選擇器隱藏項
stateFile $DSH_HOME/cat-loop/state.json 插件狀態文件

適用場景與注意

適合誰:希望在 dsh 裏用 Plan–Build–Review 分工、且需要可點擊切換的三套真實 Agent Team、並依賴 Host 守衛而非純提示詞約束權限的團隊。

務必注意:

  • 插件與 dsh 進程同源權限運行;安裝前建議閱讀倉庫源碼與 MIT 許可證,確認邊界符合你的安全要求。
  • 不要指望用 Plan 隊直接改業務源碼或跑 shell;實現與檢查應分別在 Build、Review 會話中進行。
  • dsh 版本需落在 >=0.2.1-rc.2 <0.3.0 區間,否則可能不兼容。

結尾

dsh-cat-loop 把「一個對話裏協調三套 Team」和「文件 / shell 權限硬邊界」綁在一起:Plan 只寫 .cat-prompt/ 且無 shell,Build 避開 .cat-test/,Review 專攻 .cat-test/ 與受限命令。若你正在 dsh 上試驗多 Agent 工作流,可從目錄頁或 GitHub README 對照安裝與驗證步驟。

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

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

小夜