前言¶
在 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 对照安装与验证步骤。