在 DeepSeek Harness (DSH) 中,会话通常运行在隔离的上下文中。如果需要让一个智能体去触发另一个智能体执行任务,传统的自然语言提示往往不够精确。dsh-peer-bus 插件提供了一个跨会话的消息总线,让独立的会话能够寻址并唤醒彼此。
插件概况¶
- 名称:dsh-peer-bus
- 维护者:ybh1291747665
- 类别:工作流
- 许可证:MIT
- 核心价值:在 DSH 生态中建立跨会话的通信机制,支持会话间的唤醒、询问与回复。
安装与启用¶
安装插件需要使用 DSH 的插件管理命令。
dsh plugin --profile web add dsh-peer-bus
安装完成后,需要重启 DSH 才能生效。如果安装过程中 pnpm 提示缺少依赖,可以忽略,DSH 的运行时环境会提供这些依赖。
典型用法¶
要使用跨会话通信,需要先获取会话的标识符,建立权限,然后通过自然语言指令触发调用。
- 获取会话 ID
在每一个需要参与通信的会话中运行以下命令,复制返回的 ID:
/bus id
-
建立权限
权限默认是拒绝的。你需要显式授权。授权必须在接收方的会话中执行。假设会话 A 想要给会话 B 发消息,你需要在会话 B 中运行:
/bus allow <A's id>
-
发起调用
在会话 A 中,直接用自然语言向模型下达指令。模型会自动选择合适的工具(如bus_ask或bus_send)。- 同步询问:让 B 回答问题并在当前回合返回结果。
Ask
<B's id>what the release version is. - 单向发送:只唤醒 B,不等待回复。
Send
<B's id>a message saying ….
你不需要在提示中输入工具名称,模型会根据上下文自动选择。
- 同步询问:让 B 回答问题并在当前回合返回结果。
核心功能¶
插件为模型提供了以下工具:
bus_send:发送一条消息,目标会话会被唤醒并运行一回合。bus_ask:向目标提问,答案会在当前回合返回。bus_reply:显式地回答一个问题。bus_wait:接收并处理一条传入的消息,而不是让它直接运行一回合。bus_roster:列出当前会话能够访问的其他会话列表。bus_status:查询之前发送消息的状态。/bus:用于授予或撤销权限(此命令仅限用户使用,模型无法执行)。
注意事项¶
- 权限控制:在没有任何授权的情况下,模型无法向其他会话发送消息。必须通过
/bus allow或配置文件授予访问权限。 - 安全风险:传入的消息会被当作用户消息处理,且模型可能会将其视为指令。因此,开放的消息总线可能构成提示注入的路径。建议在不需要时及时撤销权限。
- 跨进程通信:默认情况下,跨进程通信是关闭的。如果需要让不同 DSH 进程中的会话互相通信,需要在两个进程的配置中都设置
crossProcess: true。 - 成本与性能:每一条消息都会唤醒目标会话执行一次完整的回合,这意味着每次调用都会消耗一轮上下文和计算资源。