前言¶
在 DSH 里做多智能体协作,常见做法是开多个会话、各自粘贴人设,或在外部脚本里串行调用模型。这类做法很难统一「谁该说话」、也很难把事实、共识和工具调用留在同一条可核对链路上。下面介绍维护者 wangshouyong 的工作流类插件 dsh-roundtable(侧栏显示为「专家团队」):把多个带人设、岗位和工具白名单的角色拉进同一群聊或私聊,模型与调用走宿主 ctx.llm 或原生 session,插件不直连网关、不保存密钥。
这是什么¶
dsh-roundtable 是 DeepSeek Harness(DSH)插件,在侧栏提供「专家团队」面板:新建角色、建群、私聊、@ 点名、查看任务板。仓库与品牌名为 dsh-roundtable;npm 包名为 @dabuliu_wsy/dsh-im,插件 id 与数据目录仍为 dsh-im(.dsh-im/、DSH_IM_* 环境变量),以兼容已有数据与配置。
当前版本 0.2.0,要求 Node ≥ 20,许可证 MIT,README 标明项目开发中(数据格式与接口仍可能变化)。GitHub 仓库:wangshouyong/dsh-roundtable;社区目录页:skillhub.cn 插件页。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
群聊、私聊与界面¶
三栏 IM:左会话列表,中聊天流(按日期分组,用户消息靠右),右栏 Tab 切换成员、任务板、候选、执行。支持建群、邀请、关联工作区、DM、@ 点名;附件支持图片 ≤8MB、文件 ≤20MB(可粘贴/拖拽)。私聊单窗右侧展示角色资料(人设、职责、模型、可用工具等)。角色编辑可选 DSH 已配置模型、内置能力与宿主来源组/单工具授权、预设或本地上传头像。深色模式跟随 DSH 有效主题(读宿主投影)。插件 CSS 作用域为 .dsh-im-root,不污染宿主样式。
发言权仲裁¶
角色发言需过仲裁,而非多开对话框各自抢话。优先级为:点名独占 > 回复对象 > 职责命中 > 活跃度补位;wait 只停本轮、不插话。默认串行地板(并发发言关闭)。
上下文、记忆、事实与共识¶
上下文分层:摘要(L1 旧消息压缩 + L2 不可压缩事实)、窗口预算按模型 contextWindow 分配(群级按最小成员窗口统一压)、角色状态快照(承诺/待办/决定/立场)。可寻址记忆层含消息索引投影、claim 弱状态、memory_search / memory_expand 两个记忆工具(默认 shadow,需显式开启才注入 prompt)。事实与共识经规则 + LLM 双路抽取,带哈希幂等与 supersede/retract;共识只注入仍有效条目;任务板归档不复活。
工具与原生 session¶
内置五能力:read / search / write / check / memory(无 shell)。宿主第三方工具(浏览器、MCP 等)按来源组 + 单工具显式授权,默认不授予;run_check 仅跑本仓 vitest/tsc,白名单参数、不经 shell、60s 超时。默认开启原生 session:每个「角色 × 群」一个 DSH 原生会话,角色可真实调工具;空闲 30 分钟释放;授权或工具可见性变化时重建。若宿主缺 ctx.agents 或 tools.register / tools.guard 任一能力,整体回退 ctx.llm。
可观测与稳定性¶
执行轨迹、两阶段回执(intent/outcome + 规范化 hash + basedOnSeq)、metrics.jsonl、失败 turn 可导出复现包、黄金回放测试。模型调用 120s 超时;Origin 同源校验;请求体 2MB 上限;坏 state.json 清洗;加载/保存失败明确报错。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,自行评估工具授权与数据落盘范围。README 注明目前主要在 Windows 上的 DSH Desktop 实测通过,其它平台未验证。
方式一:从源码接入(README 推荐)¶
git clone https://github.com/wangshouyong/dsh-roundtable.git
cd dsh-roundtable
npm install
npm run build
dsh plugin --profile desktop add ./
dsh --profile desktop
重启后侧栏出现「专家团队」。新建角色时选择 DSH 设置里已配好的模型(与输入框旁选择器同一份目录)。
方式二:从 Release 包安装¶
在 Releases 下载含 dist/、lib/client.js、cordis.patch.yml、dsh-plugin.json 的构建包,解压后:
dsh plugin --profile desktop add <解压后的目录>
方式三:git 地址安装(需配置 allowBuilds)¶
dsh plugin --profile desktop add git+https://github.com/wangshouyong/dsh-roundtable.git
首次可能报 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED,需将报错中的 key 原样写入 profile 的 pnpm-workspace.yaml(例如 ~/.dsh/profiles/desktop/pnpm-workspace.yaml)后重跑。若不想改 pnpm 配置,用方式一或方式二。
方式四:npm(尚未发布)¶
dsh plugin --profile desktop add @dabuliu_wsy/dsh-im
README 写明 尚未发布到 npm;发布前可用方式一、二、三。
开发调试(仓库内):
npm run dev # 开发预览,内置内存假模型,默认 5173 端口
npm test
npm run gate # typecheck + 测试 + build + 打包内容校验
配置要点¶
- 模型:全部来自 DSH 已配置的 provider/model;解析不到则报错需重选。
- 工具授权:角色编辑器按「内置能力 → 宿主来源组 → 单工具」勾选,默认全不授予;契约见仓库
docs/TOOL-GRANTS.md。 - 数据根:面板标题旁「工作区」下拉可切换/注册;数据按 DSH 工作区存放在
<工作区>/.dsh-im/。
常用可选环境变量(节选):
| 变量 | 默认 | 作用 |
|---|---|---|
DSH_IM_NATIVE_SESSION |
开 | 设 0 关闭原生 session,退回 ctx.llm |
DSH_IM_NATIVE_TTL_MS |
30 分钟 | 原生会话空闲释放时间 |
DSH_IM_TURN_BUDGET_MS |
240000 | 单轮工具循环总时长预算 |
DSH_IM_MAX_TOOL_ROUNDS |
50 | 单轮工具循环硬顶 |
浏览器控制台实验开关(刷新生效):localStorage['dsh-im:retrieval'](off / shadow / on)控制按需检索是否进 prompt;localStorage['dsh-im:memory'] 控制记忆层句柄是否注入;默认均为 shadow。
典型用法¶
1、安装并启动 DSH Desktop(dsh --profile desktop),在侧栏打开「专家团队」。
2、新建角色:填写人设与岗位,选择 DSH 已配置模型,按需勾选工具授权(默认不授予第三方工具)。
3、建群或发起私聊,在输入框发送消息或使用 @ 点名;在右栏查看成员、任务板、候选与执行轨迹。
4、切换「工作区」下拉,使不同 DSH 工作区使用各自的 .dsh-im/ 数据目录。
群级数据目录结构(README 摘录):
.dsh-im/
├ state.json
├ calibration-samples.jsonl
└ groups/<threadId>/
├ events.jsonl
├ facts.json
├ receipts.jsonl
├ metrics.jsonl
└ attachments/
角色只能读写自己群的 groups/<threadId>/;.dsh-im 其余内容对角色禁读。群消息会进入该角色模型上下文;若授权 MCP/浏览器等工具,相关内容会交给对应工具,合规性需自行评估。
适用场景与注意¶
适合:需要在同一 DSH 工作区内组织多角色讨论、任务板与事实/共识分层、且希望工具调用可审计、可回放的 workflow 场景。
注意:项目开发中,原生 session 依赖宿主能力,升级 DSH 后可能需要跟进插件版本;实验特性(检索、记忆注入、token 校准)默认只观测不写进行为;无遥测/崩溃上报,排查依赖本机 metrics.jsonl、receipts.jsonl 与宿主日志。插件不收集遥测、不直连模型网关。
架构与设计约束见仓库 docs/DESIGN.md。
结尾¶
dsh-roundtable 把多角色协作从「多窗口复制粘贴」收拢到侧栏 IM:发言权仲裁、分层上下文、事实共识与显式工具授权在同一条链路上可核对。若要安装或读完整说明,见 GitHub 仓库 README 与 SkillHub 目录页。