跨工作区信使 dsh-cross-workspace:DSH 多工作区会话互通

前言

在 DeepSeek Harness(DSH)里开多个工作区时,会话通常各自独立:A 区里的 agent 不知道 B 区刚讨论的结论,也很难把本地文件或结构化 JSON 稳妥地交给另一个会话处理。靠复制粘贴或人工切换窗口,成本低但不可编排,也无法让 agent 在合适时机「等回信」或群发协作。

下面介绍社区插件 dsh-cross-workspace(维护者 dream-office,分类:工作流)。它在本机同一个 DSH Host 进程内充当跨工作区信使:不同工作区的会话可以互发消息、传文件与 JSON,支持手动群组、收件箱与管理面板,并提供可视化交流图。消息与附件落在本机信箱,插件不做出站网络请求。该插件为非官方实现,与 DeepSeek / DSH 官方无隶属关系。


这是什么

一句话:让不同工作区里的 DSH 会话互相发消息、传文件、传 JSON;可手动拉群群发,也可在 Web 面板里像收邮件一样管理未读与历史。

三条运行时规则(理解投递结果时很重要):

  1. 消息先写入本机信箱,再决定只投信箱还是唤醒目标会话。
  2. 唤醒是「尽力而为 + 确认」:目标运行中会等待,超时则排队;归档、冷却或启动失败会降级,不谎报已成功唤醒。
  3. 跨工作区来信对收件 agent 属于外部输入,会标明并非当前用户或系统指令,不能用来绕过用户规则。

核心功能

寻址与投递

收件方通过 to 指定,支持工作区绝对路径或标题、会话 id、session:<id>、群组名、group:<名> 等写法;解析失败会返回可读错误与候选列表(如 ambiguous)。

mail_send 的 delivery.requested 表示请求模式,delivery.mode 表示实际生效模式。例如请求 wake 时,可能实际为 wake(已确认进入目标会话日志)、queued(目标忙,排队到下一轮)、mailbox(降级信箱)或 none(例如工作区无可唤醒会话)。工具调用成功不等于对方已读;需结合 delivery.mode 与后续回复判断。

群组

在面板左栏维护群组:跨工作区勾选会话、改名与增删成员;删除群组不删历史消息。Agent 工具只能向已有群组发信,不能自建群组。群发默认 mailbox;显式 wake=true 才尝试唤醒成员。可指定 memberSessionIds 只发给部分成员。

附件与 JSON

消息可带任意 JSON data 与本地 files 路径列表。附件复制到 $DSH_HOME/cross-workspace/attachments/<messageId>/,默认仅允许发送方工作区内的文件(realpath 校验);可在设置中开启 allowExternalAttachments(会放宽边界,需谨慎)。

面板与交流图

侧栏「跨工作区信使」提供收件箱、发信、群组管理;「交流图」展示 Agent 网络卡片图与跨 Agent 协作时间线(图与时间线条数有上限,侧重近期协作)。未读角标直到已读或「全部已读」才清除。

Agent 工具(节选)

安装验证通过后可使用 workspace_list、mail_send、mail_wait、mail_reply、mail_inbox、mail_read 等;完整参数见仓库 docs/API.md。


安装与启用

前置条件:DSH Desktop(带 Plugin Manager;README 实测 DSH 0.2.2-rc.1),Node.js >=22.13.0。插件无 npm 依赖、无构建步骤;engines.dsh 声明 >=0.2.2-rc.1。

本地目录安装(将路径换成你本机已存在的项目目录):

plugin_manager install_bundle target="<本项目绝对目录>"

期望:application: "applied",enabled: true(安装的是本地 link:,非复制)。

从 GitHub 获取源码后安装:仓库地址 https://github.com/dream-office/dsh-cross-workspace。按 README 将克隆后的目录作为 target 执行 plugin_manager install_bundle;升级时在仓库内更新后重新安装或重载。2026-11-07 起项目不再以 npm 作为分发渠道。

若插件已在列表但被禁用:在 Plugin Manager 中打开 include:cross-workspace。

卸载(历史消息保留在 $DSH_HOME/cross-workspace,卸载不删):

plugin_manager remove_bundle target=dsh-cross-workspace

验证安装:

  1. workspace_list 工具可用,或侧栏出现「跨工作区信使」图标。
  2. 设置页出现「跨工作区信使」。
  3. 侧栏 sidebar.panellist、main、settings.section 三个槽位为 active。

升级前建议备份 $DSH_HOME/cross-workspace;数据迁移说明见仓库 docs/UPGRADING.md。


典型用法

面板快速上手

  1. 刷新 DSH 页面,打开左侧「跨工作区信使」。
  2. 左栏选工作区或会话,中间查看收件箱。
  3. 「新消息」里选收件方(工作区 / 会话 / 群组),填写主题与正文,可选 JSON 与附件路径;需立即处理则勾选「唤醒」,否则只投信箱。
  4. 对方 agent 用工具回信,或在面板直接回复。
  5. 在「交流图」查看近期协作关系与时间线。

Agent 发信与等待(示例)

路径与会话 id 须以 workspace_list 返回值为准,勿照抄示例路径:

workspace_list
mail_send to="D:\\work\\项目A" subject="接口确认" body="..." wake=true
mail_send to="group:前端组" body="..."
mail_send to="group:前端组" memberSessionIds=["session-..."] body="..."
mail_wait timeoutSeconds=120
mail_reply id="m-..." body="收到"

发信后务必查看返回的 delivery.mode,再决定是否 mail_wait 或继续对话。


设置要点

在 设置 → 跨工作区信使 中可调整默认值与边界,例如:

设置 默认 作用(摘要)
defaultDelivery wake 未传 wake 时的默认投递方式
allowWake true 关闭后所有唤醒降级信箱
allowWorkspaceBroadcast false 工作区广播,默认关闭
promptContext true 是否在系统提示注入未读摘要
retentionDays 30 过期清理(0 表示不按天清理)
maxHops 6 回复链深度上限,防唤醒循环
allowExternalAttachments false 是否允许工作区外附件

更多上限(正文大小、附件数量等)见 lib/store.js 的 DEFAULT_SETTINGS;运行期以 store.json 为准。


适用场景与注意

适合:同一台机器上多个 DSH 工作区需要编排式通信——例如后端工作区把接口约定 JSON 发给前端工作区会话、多 agent 拉群同步状态、某会话 mail_wait 等另一边的结论再继续。

安全与权限:数据仅存本机 $DSH_HOME/cross-workspace;管理 API 需 POST 与约定请求头,在 Host 已认证页面上下文中使用。插件按单机单 Owner 设计,不是多租户隔离。安装与启用前,应按惯例自行审阅源码与 MIT 许可证;插件以当前 DSH 进程权限访问本机文件与会话。

会话过滤(DSH 0.2.4+):已归档、空白「新会话」、失效会话不会出现在可选列表;仍可用显式 session:<id> 投递,但唤醒归档目标会诚实报告未唤醒。

仓库文档(AGENTS.md、docs/API.md、docs/ARCHITECTURE.md)供开发与验收对照;README 记载测试为 191 tests / 57 suites(以当前仓库为准)。


结尾

dsh-cross-workspace 把多工作区之间的消息、文件与 JSON 交换收拢到本机信箱与一套明确投递语义里,并配上收件箱、群组与交流图,便于人或 agent 协同。如需安装说明与最新版本,以 GitHub README 为准;社区索引见 SkillHub 目录页 与 dream-office/dsh-cross-workspace。

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

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

小夜