前言¶
在 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-looppreset 進入的對話是 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)。
典型用法¶
- 新建對話:工作區選項目目錄,preset 選
cat-loop,進入 Plan 團隊後直接描述需求。 - 查看與切換:側邊欄展開 Plan 下的三子對話,或打開右側子對話面板,點進 build / review。
- 協作:Plan 在
.cat-prompt/寫任務 md,用cat_send派發;Build 改源碼,Review 在.cat-test/寫檢查腳本並審查;完成後經cat_send回 Plan。可用cat_status查看三隊會話與狀態。 - 驗證權限(可選):在 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 對照安裝與驗證步驟。