前言¶
在 DeepSeek Harness(DSH)里开多个会话窗口时,各窗口彼此独立:模型只能看到当前会话的上下文,无法直接询问「另一个窗口在做什么」,也难以把新事实交给对方继续处理。常见做法是人工复制粘贴 session id 和消息,或在外部脚本里再编排一遍,既打断工作流,也容易漏掉回复路径。
下面介绍社区插件 dsh-tool-session-message(维护者 BigBugy,分类:工作流)。它在同一 DSH 宿主进程内注册工具 session_send,把一条 user 消息投递到指定 session id 的目标会话,并在消息信封里附带发送方 Session ID,便于多窗口互相认身份并按同样方式回传。
这是什么¶
dsh-tool-session-message 面向 DeepSeek Harness 的跨会话消息能力:通过 session_send(session_id, message, mode?) 向同一 DSH host 上的任意会话发送用户消息,让对方开始新一轮对话,或在运行中的轮次里插话(steer 模式)。每条投递消息会自动加上身份头,说明来源 session 以及如何用 session_send 回复。
插件基于 Cordis 注入 sessionController 服务,不发布到 npm,需通过 github: 规格或本地 link 安装。当前 package 版本为 0.2.0,许可证 MIT;要求 DSH 0.2.1-rc.5 或兼容版本(依赖 sessionController)。
核心功能¶
session_send 工具¶
- 参数:
session_id(须保留session-前缀)、message、可选mode。 mode:默认"followup",作为目标会话的下一条 user 轮次排队;"steer"则注入到正在执行的轮次中。- 返回值:宿主确认的结构化 JSON,字段包括
ok、from、to、mode、requestId、result。
身份信封¶
接收方看到的文本会自动前缀如下信息(便于知道谁发的、如何回传):
【跨会话消息 · session_send】
from: session-xxxxxxxx-...
reply: session_send(session_id="session-xxxxxxxx-...", message="...")
运行边界¶
- 目标会话必须与发送方处于同一 DSH 宿主进程(例如桌面应用的多窗口场景满足此条件)。
- 工具仅调用宿主的
sessionController.prompt,无网络、无写文件、无 shell;消息会以普通 user 消息形式写入目标会话 transcript。
安装与启用¶
桌面应用(推荐)¶
在 DSH 中打开 Settings → Plugins → Add plugin,粘贴:
github:BigBugy/dsh-tool-session-message
插件管理器支持 npm 包名、GitHub 仓库与本地目录;本包未发布到 npm,请使用上述 github: 规格。
CLI 部署¶
仅 CLI 部署时使用:
dsh plugin --profile <profile> add github:BigBugy/dsh-tool-session-message
桌面版不自带 dsh 命令,桌面用户应通过 Settings → Plugins 安装。
本地开发(手动)¶
- 将包放到
<profile>/node_modules/dsh-tool-session-message(<profile>例如~/.dsh/profiles/desktop)。 - 在 profile 的
package.json中声明依赖与 bundle,例如:
{
"dependencies": { "dsh-tool-session-message": "link:<path-to-this-package>" },
"dsh": { "profile": { "bundles": [ "...", "dsh-tool-session-message" ] } }
}
- 包自带
cordis.patch.yml与dsh.bundle.patch,工具在进程级注入。 - 重启 DSH(宿主插件在启动时加载;代码变更后需重启)。
典型用法¶
让模型调用工具,或直接写出调用形式。README 示例:
session_send(session_id="session-0e8596c3-...", message="What are you working on? Reply briefly.")
接收方根据信封中的 from: 行,用 session_send 回传:
session_send(session_id="<the id in from:>", message="...")
实现上每次调用需生成独立的 requestId(如 crypto.randomUUID()),否则宿主会拒绝 prompt(prompt rejected)。
适用场景与注意¶
适合:在同一 DSH 桌面实例里并行多个会话,需要模型或工作流在窗口之间传递简短指令、状态询问或事实补充,且希望回复路径明确(信封 + 对称的 session_send)。
权限与安全:该工具允许模型向其他会话注入 user 提示,可能触发目标会话的新轮次。应仅在您可控的 profile 中启用,安装前建议阅读源码与 MIT 许可证。社区目录页与 GitHub 仓库由维护者与社区维护,与 DeepSeek / 幻方无官方从属关系。
兼容性:README 标明在 DSH 0.2.1-rc.5 上测试;更早版本是否具备 sessionController 未说明。