🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话直连总线 JexLau/dsh-plugin-session-bus

DeepSeek Harness
JexLau9 天前有提交已提供中文文档扫描:含敏感能力

让多个会话互相发消息、唤醒对方接手任务

29.3/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add JexLau/dsh-plugin-session-bus
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · chat
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 9 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 6 处,展示前 6 条)
  • 写入本地文件
    index.js:608
    mkdirSync(dirname(this.settings.historyPath), { recursive: true })
  • 读取本地文件
    index.js:610
    const fileSize = statSync(this.settings.historyPath).size
  • 读取本地文件
    index.js:611
    const text = readFileSync(this.settings.historyPath, 'utf8')
  • 写入本地文件
    index.js:1199
    mkdirSync(dirname(this.settings.historyPath), { recursive: true })
  • 写入本地文件
    index.js:1200
    appendFileSync(this.settings.historyPath, `${JSON.stringify(record)}\n`, 'utf8')
  • 读取本地文件
    index.js:1357
    return statSync(path) !== undefined
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的会话间直连消息:自动发现对端、智能体主动发起协作、未读消息合并。没有房间,没有群聊。

README

由 DeepSeek 最新模型翻译生成
Session Bus:让 DSH 会话之间直接说话 它解决什么问题 你同时开多个 DSH 会话做不同的事,经常需要它们互相知道对方的情况: - 这个会话要问另一个会话:「你那边 PlayerController 的字段布局定了吗?」 - 一个会话做完了,要通知另一个会话可以接着干。 - 两个会话要并行分工,需要把一部分上下文或任务交接过去。 - 你不想切窗口、复制粘贴,也不想让消息中转经过你。 Session Bus 让任意两个会话直接对话:A 发一条消息给 B,B 空闲会被唤醒处理;B 可以直接回 A。没有房间、没有群、没有广播,一次只发给一个会话。 怎么用 不需要安装、不需要配置,直接在当前会话说: 看看现在有哪些会话可以直呼。 它会列出所有可直呼的会话(名字、描述、状态、所在目录)。 然后让 agent 代发: 问一下 @Decompiler:PlayerController 的字段布局定了吗? 把这条转给 @Auth:认证部分我已经改完,可以接着做联调。 对方会话会被唤醒并开始一轮,用同样的 session_bus_send 回复你。你不用切窗口。 也可以让它主动协作,不必你点名: 这件事你判断需要谁配合就直接找对端会话,不用问我。 改自己的称呼 / 停止接收: 把登记名改成 Auth,描述写“负责认证重构”。 不要再接收直接消息了。
展开完整文档(README 剩余 1 节)
Session Bus:让 DSH 会话之间直接说话

它解决什么问题

你同时开多个 DSH 会话做不同的事,经常需要它们互相知道对方的情况:

- 这个会话要问另一个会话:「你那边 PlayerController 的字段布局定了吗?」
- 一个会话做完了,要通知另一个会话可以接着干。
- 两个会话要并行分工,需要把一部分上下文或任务交接过去。
- 你不想切窗口、复制粘贴,也不想让消息中转经过你。

Session Bus 让任意两个会话直接对话:A 发一条消息给 B,B 空闲会被唤醒处理;B 可以直接回 A。没有房间、没有群、没有广播,一次只发给一个会话。

怎么用

不需要安装、不需要配置,直接在当前会话说:

看看现在有哪些会话可以直呼。

它会列出所有可直呼的会话(名字、描述、状态、所在目录)。

然后让 agent 代发:

问一下 @Decompiler:PlayerController 的字段布局定了吗?

把这条转给 @Auth:认证部分我已经改完,可以接着做联调。

对方会话会被唤醒并开始一轮,用同样的 session_bus_send 回复你。你不用切窗口。

也可以让它主动协作,不必你点名:

这件事你判断需要谁配合就直接找对端会话,不用问我。

改自己的称呼 / 停止接收:

把登记名改成 Auth,描述写“负责认证重构”。
不要再接收直接消息了。

工具

| 工具 | 作用 | 参数 |
| session_bus_peers | 列出可直呼会话(自动发现所有可见普通会话) | 无 |
| session_bus_send | 给一个会话发直接消息;空闲会被唤醒 | to(名字/@名/session id,只能一个)、message、mode(queue 默认 / steer) |
| session_bus_history | 读本会话收发的直接消息 | limit 1–100 |
| session_bus_register | 显式改名 / 写职责描述 | name、description |
| session_bus_unregister | 停止接收直接消息 | 无 |

行为

- 自动发现:peers / send 会列出 Host 里所有可见普通会话,对端不需要提前登记;名字默认取会话标题。
- 点对点:一次只发给一个会话;要通知两个就发两次,没有广播。
- 投递与唤醒:
- 目标 Agent 活着:直接投递;空闲时 followup 唤醒它开始一轮。
- 目标 Agent 已释放的普通会话:先 sessionController.resolveAgent() 恢复,再投递。
- 队友/子会话在两次 turn 之间不可达(属于 Agent Teams 生命周期)。
- 未读合流:多条发往同一会话的消息在约 100ms 内合并成一次唤醒,一次最多带 20 条;超出会提示用 history 补读。
- 不重复唤醒:目标正在运行、或已经有一条消息在等它启动时,新消息只注入到下一步,不再额外开一轮。
- 回执真实:session_bus_send 返回的 delivered 是实际投递结果;失败会报错,不写「已送达」。
- 记录:本会话的收发记录落盘 $DSH_HOME/session-bus/messages.jsonl;history 只看得到本会话参与的消息。
- 防刷屏:每会话每分钟 30 条、同消息 3 秒去重、每小时最多主动发起 12 个新对话(回复不计)。

主动协作

system prompt 明确授权 agent 在判断需要时自己发起会话对话,不需要人类先 @:

- 触发:需要只有另一个会话才有的上下文或产出、把独立工作交给更合适的会话、通知里程碑或阻塞。
- 做法:先 peers 找最相关且在线的一个会话,一条消息写清:你是谁、需要什么、期望输出、是否阻塞你、何时需要回复。
- 不刷屏:不群发、不进展刷屏、不空回执、不重复追问;对方没回就等或问人类。
- 预算:每小时 12 个新对话,超出会被工具拒绝;回复对方最近消息不计入。
- 花钱、删数据、对外发布仍然先问人类。

开发文档

实现细节、投递状态机、验证记录与限制见 docs/implementation.md。

给面板 / 其他插件读取(只读)

其他 Host 插件可以读同一份 peers 快照,不需要安装或触发发送:

const snapshot = await ctx.get('sessionBus')?.snapshot()
// { generatedAt, peers: [{ sessionId, name, description, status, kind, cwd, lastSeen, registeredAt, source }] }

- ctx.get('sessionBus') 是 Host 服务;snapshot() 只读,不发送、不唤醒。
- Web Client 同源请求走 POST /session-bus/snapshot(Connection RPC 信封,method: "snapshot"),需要浏览器会话认证;返回 {ok:true, value:{generatedAt, peers}}。
- source 为 registered(显式/首次登记)或 discovered(自动发现);kind 为 root/child,面板一般只展示 root。

配置

cordis.patch.yml 里给 session-bus 行传 config:

| 字段 | 默认 | 说明 |
| enabled | true | 关掉插件 |
| language | zh | 唤醒消息和 system prompt 语言,可选 zh、en |
| autoJoin | true | 首次工具调用自动登记本会话;false 时必须先 session_bus_register |
| autoDiscover | true | 自动发现 Host 里所有可见普通会话;false 时只显示主动登记过的会话 |
| promptSection | true | 是否注入 system prompt 使用说明 |
| historyPath | $DSH_HOME/session-bus/messages.jsonl | 直接消息记录路径 |
| maxMessageChars | 8000 | 单条消息上限 |
| maxInitiatedPerHour | 12 | 每小时主动发起的新对话上限;回复不计;0 不限 |
| coalesceMs | 100 | 同一目标的消息合并窗口(毫秒) |
| unreadCap | 20 | 一次唤醒最多携带的未读消息数 |
| wakePendingTtlMs | 60000 | 已安排唤醒但目标迟迟未启动时,多久后允许再次 followup |
| rateLimitPerMinute | 30 | 每会话每分钟发送上限 |
| dedupeWindowMs | 3000 | 相同消息去重窗口 |

边界

- 一次一个 peer。这是刻意的,和“直接对话”一致。
- 只对可见的普通会话;队友/子会话不会出现在 peers 里,也不能在轮次之间被唤醒。
- 给冷会话发消息会恢复它并跑一轮,有 token 成本。
- 归档会话没有投递前预检:消息进 inbox,但归档的 pre-step 会被拒绝,不产生回复。
- 名字是内存态:Harness 重启后清空,会话下次调用工具时按标题重新发现;消息记录保留。
- 没有 UI 面板;可视化面板还在另一会话的设计阶段。
预览分享卡片长什么样 ↓JexLau/dsh-plugin-session-bus
分享 · DeepSeek Harness Hub
JexLau/dsh-plugin-session-bus

让多个会话互相发消息、唤醒对方接手任务

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部