Session Messenger 会话信使:同一工作区父会话之间的消息转交

前言

在 DeepSeek Harness(DSH)里并行开多个顶层会话时,工作上下文往往散落在不同 session 里:A 会话里刚写完方案,B 会话要继续实现,只能靠人工复制粘贴标题、摘要和待办。子 agent 有各自的边界,但父会话之间并没有内置的「交接」通道。

Session Messenger(会话信使)是社区维护的 DSH 插件,在同一 workspace 的顶层父会话之间投递纯文本消息,或由 agent 新建父会话并带上初始交接内容。它不替代 DSH 自带的会话管理,只是在现有 session controller 上以 queue 模式做单向投递。

这是什么

插件全名 dsh-session-messenger-plugin,维护者为 ALNLAqooq,在 SkillHub 目录中归类为工作流。当前 npm 包版本为 0.1.0,许可证 MIT。项目自述为社区项目,与 DeepSeek AI 无隶属或背书关系。

结构上分为两半:

  • Host:向 agent 暴露 list_sessions、send_session_message、create_session 三个工具。
  • Client:在 composer 工具行左侧提供「转交 / Hand off」按钮,含会话选择器与消息框。

两条路径最终都通过 session controller 以纯文本信封写入对方会话日志;发送方在消息被接受后即可返回,不会阻塞等待对方回复。

核心功能

列举可投递的 sibling 会话

list_sessions 返回与调用方处于同一 workspace 的顶层会话(不含调用方自身、子 agent、其他 workspace)。可按标题子串或 session id 前缀过滤,默认最多 20 条,按最近活动时间排序。已归档会话不会出现在 UI 列表中。

向已有会话投递消息

send_session_message 将 1–20000 字符的纯文本投递到指定顶层会话。投递使用 sessionController.prompt 且 mode: "queue":目标空闲则开启新 turn,正在运行则在当前 turn 结束后再出现,不会打断对方。

新建父会话并交接

create_session 在当前 workspace 创建新的顶层父会话,沿用当前 agent preset 与 cwd,并可附带标题(最多 120 字符)与初始消息。

UI 转交

转交对话框支持按标题或 session id 搜索、选择同 workspace 其他顶层会话、填写纯文本,以及可选勾选「需要对方回复 / Ask for a reply」。默认不请求回复;仅当用户或工具显式设置 replyRequested: true 时,信封头才会标注「请求回复」。

消息信封格式

Host 工具会把正文包在可见的纯文本信封里,例如:

[跨会话消息 · 来自「<sender title>」 <sender session id> · 无需回复]

<message body>

信封是普通用户可见文本,不引入自定义事件类型,任何模型与任意会话日志均可直接阅读。

安装与启用

环境要求:带插件支持与 Web UI 的 DSH 桌面构建、dsh CLI 的 dsh plugin 子命令(本地开发可用 agent 侧的 plugin_manager)。插件为纯 ESM 加浏览器模块,无构建步骤。

推荐从 npm 安装。将 web 换成你实际使用的 DSH profile 名称:

dsh plugin --profile web add dsh-session-messenger-plugin

也可从 GitHub 源安装:

dsh plugin --profile web add github:ALNLAqooq/dsh-session-messenger-plugin

安装后刷新 Web UI;若 Client 半未热更新,可重启 DSH。插件以当前 DSH 进程权限运行,安装前建议在 GitHub 查阅源码与 MIT 许可证。

典型用法

通过 agent 工具交接

在源会话中可以让 agent 概括当前工作并送到指定标题的会话。README 给出的流程是:

  1. 调用 list_sessions({ "query": "Test session 1" }) 解析精确 sessionId。
  2. 调用 send_session_message({ "sessionId": "session-…", "message": "…" })。

新建会话并交接时,可让 agent 调用:

{
  "title": "Handoff: auth refactor",
  "message": "…",
  "replyRequested": false
}

对应工具为 create_session。

通过转交按钮

在 composer 左侧打开转交对话框,选定目标顶层会话并填写消息即可。需要对方有意识回复时再勾选「需要对方回复」;否则收件方仅收到标注「无需回复」的信息性消息。

回复语义说明

replyRequested 只改变信封措辞,不建立 inbox,也不做请求/响应关联。若对方回复,只是向发送方 session 再发一条普通 send_session_message,发送方不会同步等待。

适用场景与限制

适合:同一项目 workspace 内多父会话并行时的任务摘要转交、开新会话承接重构或专项、让人工通过 UI 快速投递上下文而不离开 composer。

不适合或做不到:

  • 跨 workspace、跨机器消息。
  • 向子 agent 会话投递或列出子 agent。
  • 附件、图片等非纯文本内容。
  • 一次广播多个目标;每次调用仅一个目标。
  • 20,000 字符消息上限(信封额外占用)。

插件自述无自有遥测与额外网络请求;消息写入双方正常会话日志,并按你当前 DSH profile 所用 provider 参与模型上下文。UI 使用 DSH 主题 token,不加载远程资源。

结尾

Session Messenger 把「父会话之间的纯文本交接」做成工具与按钮两套入口,语义简单:queue 投递、fire-and-forget。若你已在同一 workspace 开多个顶层 session,可把重复的复制粘贴换成可检索的会话列表与统一信封格式。

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

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

Xiaoye