dsh-session-mesh:跨工作区会话网格 Host 插件

前言

在 DeepSeek Harness(dsh)里做多会话协作时,常见做法是开多个工作区、各自维护会话,再通过复制粘贴或人工切换窗口沟通。宿主本身并不提供「列出全部工作区会话、向任意会话投递 agent 消息、统一建会话/改名/归档」的一体化能力;社区里也有若干只覆盖列表+发消息,或只覆盖建会话/改名的互补插件,但没有单一薄层同时做完这些事且不依赖任务板或 experimental-agent-team。

下面介绍维护者 kx2398 发布的 dsh-session-mesh(分类:工作流)。它是一个 Host 插件:把每个工作区里的根会话都当作 peer,通过 7 个 mesh_* 工具完成发现、发消息、生命周期管理与变更等待;状态全部复用宿主 sessionController / workspaceRegistry,不新增会话事件类型、无任务板。

这是什么

dsh-session-mesh 的定位是:让 dsh 里所有工作区的普通会话互相发现、互相发消息、互相建会话/改标题/归档。

  • 维护者:kx2398
  • 许可证:MIT
  • 当前版本(资料):0.2.1
  • 运行要求:DSH >=0.2.1-rc.3 <0.3.0(engines.dsh);需 desktop / web-app 等包含标准 Host 服务的 profile
  • 分发:GitHub tag / Release tarball,不发布到 npm;零运行时依赖、纯 ESM、无构建步骤

目录页:https://www.skillhub.cn/plugins/kx2398/dsh-session-mesh
源码:https://github.com/kx2398/dsh-session-mesh

核心功能

插件向模型暴露 7 个工具,并注入两段模型可见文本(协作 policy 与当前会话 identity)。

工具 能力概要
mesh_list_sessions 列出所有工作区会话(id、标题、工作区、cwd、运行/归档态、agent 可用性、是否 subagent 等);支持过滤与 nextCursor 分页
mesh_send_message 向任意会话发一条自包含消息,以真实 agent-message/relay 投递(senderSessionId 标明来源);运行中目标默认 queue,可选 steer(默认配置禁用);含速率限制与重复抑制
mesh_create_session 新建根会话,可指定工作区、标题、初始 prompt、agent preset;未指定工作区时用调用方所在工作区
mesh_rename_session 修改任意会话标题(pin,避免被自动标题覆盖)
mesh_archive_session 归档或取消归档;运行中默认拒绝,可 stop_activity: true 先停再归档
mesh_cancel_session 停止目标会话当前回合(保留 inbox),用于止损
mesh_wait_for_change 等待下一次会话状态/活动/新建/移除(1s–1h),替代轮询

模型可见配置:

  • session-mesh:policy:协作纪律(peer 消息是另一 agent 的请求、只回决策/结果、不回执、不乒乓、不共享历史、勿给自己发消息);长度由 policy: full|short|off 控制。
  • session-mesh:identity:当前根会话在工作区中的身份句;非根会话不注入,失败时降级为一行,不阻断 prompt。

README 中说明:投递成功只表示消息进入目标 inbox,不等于对端已处理;需要结果时应让对方向你的 sessionId 回消息,或 mesh_wait_for_change 后再 mesh_list_sessions 复查。

安装与启用

安装命令须使用 Plugin Manager 的 install_bundle,示例来自官方 README:

# 从 GitHub 按 tag 安装
plugin_manager install_bundle  target = github:kx2398/dsh-session-mesh#v0.2.1

# 或下载 Release 里的 tgz 后本地安装
plugin_manager install_bundle  target = file:C:/.../dsh-session-mesh-0.2.1.tgz

改插件目录内 cordis.patch.yml 的 config 后,在 Plugin Manager 里 disable → enable,或重启 DSH。卸载:

plugin_manager remove_bundle  target = dsh-session-mesh

常用配置项(节选,默认值见 README):

字段 默认 含义
defaultMode queue 发消息默认投递模式
allowSteer false 是否允许 steer(可能打断人类正在跑的回合)
maxSendsPerMinute 30 每发送方每分钟上限
allowedPeers / blockedPeers [] 按 sessionId 精确白/黑名单
policy short system prompt 段长度

典型用法思路

  1. 摸清全局:调用 mesh_list_sessions,必要时用工作区、运行态、归档、标题/id 子串过滤,并用 nextCursor 翻页。
  2. 派活给空闲会话:mesh_send_message 指向目标 sessionId;空闲会话会被唤醒。在线验证时,目标会话日志里该消息的 source 应为 {"kind":"agent-message","form":"relay","senderSessionId":...}。
  3. 开新线或整理列表:mesh_create_session 建会话,mesh_rename_session 改标题,mesh_archive_session 归档已完成项;运行中归档需显式停活动或接受默认拒绝。
  4. 等对方跑完:用 mesh_wait_for_change 等事件,再列表或收对端回发的 [mesh] 消息。

安全相关默认:allowSteer: false、同目标同内容 60s 重复抑制、发送写审计日志。归档会话默认不可发消息(allowArchivedSend: false),且宿主 ArchivedSessionGate 会阻止归档会话被唤醒,需先 unarchive。

适用场景与注意

适合:在同一 dsh 进程内、多个工作区之间做 agent 协作——例如协调器会话向各工作区的专门会话下发任务、统一归档、改标题,而不引入任务板或 subagent 实验特性。

务必注意:

  • 插件以当前 dsh 进程权限运行;安装前请阅读源码与 MIT 许可证,并按组织策略审查 mesh_send_message 等能力。
  • 无 Web UI,仅工具面;消息不进入发送方日志,发送方主要靠对端回复或 wait/list 观察。
  • 不同工作区会话可能共享同一文件系统路径,写冲突需自行协调。
  • mesh_send_message 走 Host 内部 agent.followup/steer,绕过 sessionController.prompt 的入站准入;图片/附件不走此路径。
  • 改代码后重载:README 建议先 npm test,再在 Plugin Manager 关开 session-mesh;重载可能中断进行中回合。

社区插件目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件是工作流向的 Host 扩展之一。

结尾

dsh-session-mesh 用薄层 Host 插件把「全工作区列会话、任意会话 agent 消息、建/改名/归档/取消/等待变更」收在一处,且不依赖任务板或新增会话事件类型。若你的协作模型是多个根会话 peer 互调,可按 tag 安装后在模型侧使用上述 mesh_* 工具。

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

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

Xiaoye