dsh-roundtable: Multi-role Collaborative IM Panel in the DSH Sidebar

前言

在 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 目录页。

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

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

Xiaoye