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

跨会话消息总线 ybh1291747665/dsh-peer-bus

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

让两个 DSH 会话互相对话。

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ybh1291747665/dsh-peer-bus
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · tool
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-peer-bus(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/17 12:42:10

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 25 处,展示前 25 条)
  • 写入本地文件
    src/xproc/claims.js:85
    await mkdir(this.dir, { recursive: true, mode: DIR_MODE });
  • 写入本地文件
    src/xproc/claims.js:86
    await chmod(this.dir, DIR_MODE).catch(() => {});
  • 写入本地文件
    src/xproc/claims.js:101
    await chmod(file, FILE_MODE).catch(() => {});
  • 删除本地文件
    src/xproc/claims.js:119
    await rm(file, { force: true }).catch(() => {});
  • 读取本地文件
    src/xproc/claims.js:132
    const parsed = JSON.parse(await readFile(file, 'utf8'));
  • 删除本地文件
    src/xproc/claims.js:165
    await rm(file, { force: true }).catch(() => {});
  • 删除本地文件
    src/xproc/endpoint.js:120
    await rm(this.socket, { force: true }).catch(() => {});
  • 写入本地文件
    src/xproc/endpoint.js:135
    await chmod(this.socket, SOCKET_MODE).catch(() => {});
  • 发起网络请求
    src/xproc/endpoint.js:328
    const frame = bare ? { ...request(id, op, payload), token } : request(id, op, payload);
  • 删除本地文件
    src/xproc/endpoint.js:419
    await rm(this.socket, { force: true }).catch(() => {});
  • 写入本地文件
    src/xproc/registry.js:66
    await mkdir(dir, { recursive: true, mode: DIR_MODE });
  • 写入本地文件
    src/xproc/registry.js:70
    await chmod(dir, DIR_MODE).catch(() => {});
  • 读取本地文件
    src/xproc/registry.js:74
    const info = await lstat(dir);
  • 写入本地文件
    src/xproc/registry.js:100
    await writeFile(temporary, contents, { mode: FILE_MODE });
  • 写入本地文件
    src/xproc/registry.js:101
    await chmod(temporary, FILE_MODE).catch(() => {});
  • 写入本地文件
    src/xproc/registry.js:102
    await rename(temporary, file);
  • 删除本地文件
    src/xproc/registry.js:171
    await rm(this.entryFile, { force: true }).catch(() => {});
  • 删除本地文件
    src/xproc/registry.js:172
    await rm(this.tokenFile, { force: true }).catch(() => {});
  • 读取本地文件
    src/xproc/registry.js:184
    const names = await readdir(this.dir).catch(() => []);
  • 读取本地文件
    src/xproc/registry.js:191
    const parsed = JSON.parse(await readFile(join(this.dir, name), 'utf8'));
  • 读取本地文件
    src/xproc/registry.js:212
    return (await readFile(join(this.dir, `${endpointId}.token`), 'utf8')).trim();
  • 删除本地文件
    src/xproc/registry.js:231
    await rm(join(this.dir, `${entry.endpointId}.json`), { force: true }).catch(() => {});
  • 删除本地文件
    src/xproc/registry.js:232
    await rm(join(this.dir, `${entry.endpointId}.token`), { force: true }).catch(() => {});
  • 删除本地文件
    src/xproc/registry.js:244
    await rm(join(this.dir, `${endpointId}.json`), { force: true }).catch(() => {});
  • 删除本地文件
    src/xproc/registry.js:245
    await rm(join(this.dir, `${endpointId}.token`), { force: true }).catch(() => {});
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-query@deepseek-ai/dsh-tools@deepseek-ai/dsh-home-paths
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 跨会话互相寻址
  • 跨会话互相唤醒

DeepSeek Harness 的跨会话消息总线:让互不相干的会话互相寻址、互相唤醒。

README

由 DeepSeek 最新模型翻译生成
dsh-peer-bus English · 简体中文 让两个 DSH 会话互相对话。 session A ──bus_send──▶ session B (B 被唤醒,跑一个 turn) 安装 dsh plugin --profile web add dsh-peer-bus 重启 DSH。如果 pnpm 提示缺少 peer,忽略即可 —— 那些包由 DSH 运行时提供。 使用 你需要两个会话。在每一个里执行 /bus id,把打印出来的 id 复制下来。 让它们能对话。 一条授权表示"这个会话可以给我发消息",所以要在接收方会话里做: 在会话 B 里 —— 从现在起 A 可以给 B 发消息 /bus allow 然后直接用大白话跟会话 A 的模型说: 问一下 当前发布版本是多少。 它会调用 bus_ask,B 被唤醒、作答,答复在同一轮里返回。只想单向发消息就说"给 发条消息说……"。工具名你永远不用自己敲 —— 模型会挑。 想让反方向也能发,就在会话 A 里执行 /bus allow 。
展开完整文档(README 剩余 1 节)
dsh-peer-bus

English · 简体中文

让两个 DSH 会话互相对话。

session A ──bus_send──▶ session B (B 被唤醒,跑一个 turn)

安装

dsh plugin --profile web add dsh-peer-bus

重启 DSH。如果 pnpm 提示缺少 peer,忽略即可 —— 那些包由 DSH 运行时提供。

使用

你需要两个会话。在每一个里执行 /bus id,把打印出来的 id 复制下来。

让它们能对话。 一条授权表示"这个会话可以给我发消息",所以要在接收方会话里做:

在会话 B 里 —— 从现在起 A 可以给 B 发消息 /bus allow

然后直接用大白话跟会话 A 的模型说:

问一下 当前发布版本是多少。

它会调用 bus_ask,B 被唤醒、作答,答复在同一轮里返回。只想单向发消息就说"给 发条消息说……"。工具名你永远不用自己敲 —— 模型会挑。

想让反方向也能发,就在会话 A 里执行 /bus allow 。

模型能用什么

| bus_send | 发一条消息,目标被唤醒并跑一个 turn |
| bus_ask | 提问,并在同一轮里拿回答复 |
| bus_reply | 显式作答 |
| bus_wait | 主动取走来信,而不是让它跑成一轮 |
| bus_roster | 列出本会话能触达的会话 |
| bus_status | 查询你发出的消息后来怎样了 |
| /bus | 你用来授权与撤销 —— 任何模型都做不到 |

每条消息都会唤醒一个完整 turn,所以每次都要付一遍上下文的代价。一次说几件事用 texts,纠正目标尚未开始的指令用 supersede,并注意 steer 会整批合并而 followup 不会 —— 见少花 turn。

权限

不给授权就什么都不许。两种方式:

- /bus allow <id> —— 单个会话、单个方向、不用重启,且持久有效。
- 工作区规则 —— 一个项目里的所有会话,写在 profile 的 cordis.patch.yml 里:

- id: peer-bus
config:
allow:
- sameWorkspace: true

总线消息是以 user 消息投递的,而模型会把 user 消息当指令 —— 所以一个敞开的总线就是 prompt injection 通道。因此默认拒绝。

两个进程之间

默认关闭。要触达由另一个 DSH 进程持有的会话,在两个进程里都设置:

- id: peer-bus
config:
crossProcess: true

裁决方依然是接收进程,所以在某个进程里做的授权只管那个进程的会话。

更多

- USAGE.md(英文) —— 每个工具的细节、全部配置键、错误码、故障排查
- verification/ —— 测试了什么,以及测试证明不了什么

MIT —— 见 LICENSE。
预览分享卡片长什么样 ↓ybh1291747665/dsh-peer-bus
分享 · DeepSeek Harness Hub
ybh1291747665/dsh-peer-bus

让两个 DSH 会话互相对话。

回到顶部