前言¶
在 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 段长度 |
典型用法思路¶
- 摸清全局:调用
mesh_list_sessions,必要时用工作区、运行态、归档、标题/id 子串过滤,并用nextCursor翻页。 - 派活给空闲会话:
mesh_send_message指向目标 sessionId;空闲会话会被唤醒。在线验证时,目标会话日志里该消息的source应为{"kind":"agent-message","form":"relay","senderSessionId":...}。 - 开新线或整理列表:
mesh_create_session建会话,mesh_rename_session改标题,mesh_archive_session归档已完成项;运行中归档需显式停活动或接受默认拒绝。 - 等对方跑完:用
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_* 工具。