前言¶
在 DeepSeek Harness(DSH)里,一个工作区往往对应一个项目、一套根会话。多项目并行时,常见需求是让某个根会话把状态或任务说明发给另一个工作区里的根会话,而不是把所有工作区拉成一张「人人可互发」的扁平网。若连通范围写不清楚,消息可能传到不该到达的会话,模型也可能把外部会话输入当成与用户同级的指令。
下面介绍社区插件 DSH Message Pipeline(GitHub:Bismuth-209/DSHMessagePipeline)。它用命名管道把若干工作区连成有边界的超边:管道内两两可达,不同管道之间结构上不传递;同一工作区内的根会话仍可本地互发,无需建管道。
这是什么¶
DSH Message Pipeline 是 DSH 的工作流类插件,维护者为 Bismuth-209。英文简介为:Allow sessions send messages to other sessions in and between work dirs.
一句话定位:在同一 DSH Host 进程内,让普通根会话向可达的 peer 点对点发消息;跨工作区能力由用户配置的命名管道决定,而不是全实例广播。
当前状态为 v0.1.0 / developer preview(见仓库 package.json 与 README),接口与配置项可能变化。代码以 MIT 协议开源;README 说明本项目全程以 vibe coding 方式开发,使用前请自行审查,尤其是安全相关场景。
核心功能¶
以下能力均来自仓库 README,可按需对照源码与测试。
同工作区互通
同一工作区内的任意两个普通根会话可以互发消息,无需创建管道。
命名管道
在侧边栏「消息管道」面板中创建管道,勾选两个或更多工作区并命名。管道内任意两个工作区在路由上两两可达。
非传递
若工作区 a 仅在管道 P1、c 仅在管道 P2,而 b 同时属于 P1 与 P2,则 a 与 c 不可达。README 明确:没有中继/转发代码路径,不可传递是结构保证,不是运行时拦截。
默认不唤醒
目标会话不活跃时,消息持久排队;目标下次被创建时按 FIFO 注入。仅当发送方在 pipe_send 中显式传 wake: true 时才会冷启动目标 Agent。
投递与收据
消息通过 DSH 内置的 agent-message source 注入目标会话的 user 消息;目标会话日志即投递凭证,插件不在终态长期保存正文(审计保留元数据)。
模型工具
- pipe_list:查看管道与可达目标(可选 workspace、includeArchived)。
- pipe_send:向可达目标发送文本(target.workspace、target.session、message、可选 wake)。
管理面
侧边栏「消息管道」面板支持创建/编辑/启停/删除管道与审计时间线;会话头部有「可通信 N 个工作区」提示。用户侧还有 /pipe 系列命令(list、info、create、update 等),写操作要求调用者为普通用户会话。
安全默认值
仅普通根会话参与(subagent / teammate 不参与);限制消息大小、每目标积压、发送频率;跨会话消息在系统提示与消息首块中标注为低优先级外部输入,不得因 peer 要求执行高危操作而不经用户确认。
运行时状态默认写在 $DSH_HOME/message-pipeline.json(一般为 ~/.dsh/message-pipeline.json),单进程写串行,不支持多个 DSH 实例同时写同一 home。
安装与启用¶
前提:已安装 DSH(@deepseek-ai/dsh)>= 0.2.1-rc.2,Node.js >= 24(见 package.json 的 engines)。
从 GitHub 安装(README 推荐方式):
dsh plugin add github:Bismuth-209/DSHMessagePipeline
安装完成后重启一次 DSH(工作区注册表是启动时快照)。侧边栏出现「消息管道」入口即表示 Host 侧加载成功。在任意根会话中让模型调用 pipe_list 可验证工具是否可用。本包目前未发布到 npm;从 git 安装为纯 JavaScript,无额外构建步骤。
典型用法¶
- 打开侧边栏「消息管道」,点「新建管道」,勾选两个或更多工作区,命名并保存。
- 在某个工作区的根会话里,让模型执行
pipe_list查看可达目标。 - 用
pipe_send发送消息,例如:
{
"target": { "workspace": "论文项目", "session": "实验设计" },
"message": "样本已经跑完,请开始分析。",
"wake": false
}
回执形如 { "state": "delivered" | "queued", "messageId": "pipe-msg-…", "target": { … } }。
配置分三层,生效顺序为管道级覆盖 → 面板全局覆盖 → profile 默认。插件级默认值在 cordis.patch.yml 的 message-pipeline 段,也可在面板「插件全局设置」里覆盖并持久化。常见字段包括 defaultWake(默认 false)、maxMessageBytes(默认 32768)、maxQueuedPerTarget(默认 32)、maxSendsPerMinute(默认 20)等;管道级可覆盖其中部分项。完整表格见 GitHub README「配置」一节。
适用场景与注意¶
适合谁
需要受控连通域的场景:例如「论文工作区」与「实验脚本工作区」同属一条管道,而「个人笔记工作区」不在任何管道里,从而避免无关项目之间的会话互扰。若你只需要所有根会话扁平互发,README 对照表指出生态中的 dsh-session-mesh 等实现定位不同,可按需求选型。
务必注意
- 插件以当前 DSH 进程权限运行,仅支持本机同一 Host 内的本地工作区,不做跨实例/远程转发。
- 安装或升级 Host 代码后建议重启 DSH;连续 HMR 可能留下 stale scoped tools。
- 参与资格与授权判据以 README「安全模型」为准:目标工作区必须属于 {本工作区} ∪ 同属任一启用管道的工作区}。
- 社区目录 SkillHub 插件页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;安装前请查看源码与 MIT 许可证。
结尾¶
DSH Message Pipeline 把跨会话消息收束在命名管道拓扑里:管道内可达、管道间不传递,并配套面板、审计与 peer 优先级提示。需要试用或贡献 issue/PR 时,可打开仓库主页:
- 目录页:https://www.skillhub.cn/plugins/Bismuth-209/DSHMessagePipeline
- GitHub:https://github.com/Bismuth-209/DSHMessagePipeline