前言¶
在 DeepSeek Harness(DSH)里,每个会话都是独立上下文。要把「实施」会话里的活交给侧边栏里长期维护的「审查」会话,常见做法只有人手复制粘贴、开一次性 subagent,或接入实验性的 Agent Teams(Lead + 队员 + 共享任务板)。这些路径要么要人工搬运,要么是父子或团队层级,并不是两个普通会话之间的直接协作。
下面介绍维护者 yinying8761 在 GitHub 发布的 dsh-session-mailbox(会话信箱):装上之后,在全局工具层注册三个工具,任意两个普通会话可以互相列出、读取、投递消息,无需改 agent preset,也不需要 Lead/teammate 结构。
这是什么¶
dsh-session-mailbox 是面向 DSH Web 或 Desktop profile 的 Host 插件 bundle,当前版本 1.1.0,许可证 MIT。它依赖 Host 侧的 sessionController 与 sessionQuery,在 DSH 0.2.2-rc.1 上开发与验证。
一句话定位:让一个会话里的 AI 把消息或任务交给另一个会话,并读回对方结果;双方是对等关系,不是 subagent 父子,也不是 Agent Teams。
项目地址:GitHub - yinying8761/dsh-session-mailbox
社区目录:SkillHub 插件页
核心功能¶
安装后无需额外配置(可选目标策略见后文),所有会话自动拥有下列工具。
| 工具 | 作用 | 是否会唤醒目标会话 |
|---|---|---|
session_list |
列出会话:标题、最近活动、是否在跑、会话 id;可按标题片段过滤 | 否 |
session_read |
读取某会话最近的 user / assistant 消息 | 否 |
session_send |
向某会话投递消息或任务 | 是 |
session_send 的 target 可填会话 id、完整标题,或唯一的标题片段。mode 可选 queue(默认,作为下一回合输入,适合交办)或 steer(对方正在跑时插入最近一步,适合催办或纠偏)。
与同类社区实现相比,README 明确:本插件唯一独有的能力是目标策略(defaultAllow / allow / deny)。投递不走文件信箱,直接按 id/标题入箱;bundle 零依赖、无构建步骤。
安装与启用¶
需要 DSH 的 Web 或 Desktop profile。从 GitHub 安装指定标签:
plugin_manager install_bundle git+https://github.com/yinying8761/dsh-session-mailbox.git#v1.1.0
本地开发时可用目录绝对路径:
plugin_manager install_bundle <本包目录的绝对路径>
安装后三个工具挂在全局工具层。若修改了插件内的 index.js,需要重启 Harness 才会加载新的 JS 模块。
安装前建议自行查看仓库源码与 MIT 许可证。插件在当前 profile 的 DSH 进程权限下运行:session_send 会唤醒目标会话并在其工作目录(来自目标会话自己的 header.cwd,而非发信人)里执行;profile 若为 danger-full-access,跨工作区投递等价于允许一个会话驱动另一个会话全权执行,插件本身不做工作区隔离。
典型用法¶
下列表述是你对当前会话说的自然语言,模型会自行调用工具,无需背诵 API。
交办任务(A → B)
用
session_send把「跑一遍后端测试并修复失败项」交给「二号实施者」。写成完整指令,它看不到我们这个对话。
只读进度(不打扰)
用
session_read读「需求等文档撰写者」最后 3 条消息,总结它完成了什么。
要求回信(B → A)
结论用
session_send回给发信人。
催正在跑的会话
用
session_send以 steer 模式告诉「审查者」:先别管风格问题,只报阻塞项。
标题片段匹配到多个会话时会报错并列出候选,此时改用会话 id,例如:
用
session_send发给session-06ed43db-3976-4537-814a-66113d90509d。
目标会话收到的是带前缀的普通用户消息,内含来源与会话 id,并提示对方用 session_send 回信,形成双向交付。只想看进度用 session_read,不要用 session_send,因为投递即唤醒。
可选:目标策略¶
默认所有会话互相可见、可投递。要在 profile 收紧边界时,在 cordis.patch.yml 里为该 bundle 增加 config:
- id: session-mailbox
name: dsh-session-mailbox
config:
defaultAllow: true # 默认是否允许(默认 true)
allow: [] # 非空时,只有名单内的目标可投递、可读
deny: [] # 永远拒绝,优先级最高
匹配规则为精确匹配(完整 session id 或完整标题,大小写不敏感),不做片段匹配。优先级:deny > allow > defaultAllow。策略同时作用于 session_send 与 session_read;session_list 仍列出全部会话,被拒目标标注 blocked by policy。改配置后需重启 Harness。1.1.0 为配置式,尚无会话级图形开关。
示例:仅允许两个会话互通:
config:
defaultAllow: false
allow: ["审查者", "需求等文档撰写者"]
适用场景与限制¶
适合:你在侧边栏长期维护多个职责分明的普通会话(撰写、实施、审查等),需要对等交接任务、读进度、回信,又不想上 Agent Teams 或临时 subagent。
限制(以 README 为准):
- 只能投递给普通会话;subagent 子会话会被拒绝(那种场景用内置
send_message)。 - 不能投给调用方自己。
- 尚未有过一轮的空会话不在列表里,也无法按 id 投递。
- 不做去重:模型重试同一
session_send会投递两次。 - 投递正文截断 4000 字符;读回单条消息截断 1500 字符。
- 列表为 profile 级,跨工作区可见;普通会话超过列表上限时需用标题片段过滤。
与其它做法的对照:内置 subagent 适合一次性子任务;@ 引用会话是单向只读拉上下文;schedule 是定时投递;本插件强调任意两个普通会话对等收发。
结尾¶
dsh-session-mailbox 用三个全局工具补上了 DSH 多会话协作里「对等互发」这一形态:列表、只读、投递与唤醒分工清晰,并可用 allow/deny 收紧谁能被唤醒。生态上 DSH 奉行「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。
- 目录页:https://www.skillhub.cn/plugins/yinying8761/dsh-session-mailbox
- 仓库:https://github.com/yinying8761/dsh-session-mailbox