DeepSeek Harness (DSH) 允许在同一个进程中创建多个智能体会话。在多进程场景下,这些会话之间通常是隔离的。dsh-intercom 插件解决了这个问题,它为在同一台机器上运行的不同 DSH 进程提供了会话发现、1:1 消息传递以及请求/回复的能力。
插件概况¶
dsh-intercom 是一个用于 DeepSeek Harness (DSH) 的插件。它主要功能是实现同一台机器上独立 DSH 会话间的通信与协调。该插件由 Sqhao-O 维护,采用 MIT 许可证,并从 pi-intercom 移植而来。
核心功能¶
该插件提供了一套工具,让不同会话能够相互发现和交互:
- 跨会话消息传递:支持发送(Fire-and-forget)、询问(阻塞请求)和回复。
- 会话发现:列出所有在线会话或特定目录下的会话。
- 会话别名:通过
name动作给会话设置别名,便于其他会话通过名称引用。 - 入站消息中继:接收来自其他会话的消息,并根据状态决定是否触发新轮次。
- 协调技能集成:安装后会自动注册
dsh-intercom技能到 DSH 技能库。 - Web UI 面板:在
web配置文件中,Settings 面板里提供了一个 Intercom 页面,用于查看在线列表和发送消息。
安装与启用¶
使用官方命令将插件安装到指定 profile(例如 web):
dsh plugin --profile web add github:Sqhao-O/dsh-intercom
安装完成后,会自动在 DSH 进程中注册对应的工具和技能。
典型用法¶
每个会话都拥有 intercom 工具,通过调用该工具并传入不同的 action 参数来执行操作。
基础操作¶
// 命名当前会话,方便其他会话识别
intercom({ action: 'name', alias: 'worker' })
// 在另一个会话中查看所有在线会话
intercom({ action: 'list' })
// 向名为 'worker' 的会话发送消息
intercom({ action: 'send', to: 'worker', message: 'hello from planner' })
请求与回复¶
// 向 'planner' 发送询问,并阻塞直到收到回复
intercom({ action: 'ask', to: 'planner', message: 'what is the status?' })
// 回复刚才的询问
intercom({ action: 'reply', message: 'all good' })
状态检查¶
// 检查插件/传输状态
intercom({ action: 'status' })
配置与运行机制¶
- 本地代理:插件会在
$DSH_HOME/intercom目录下运行一个本地代理进程(使用 Unix 套接字或 Windows 命名管道)。所有会话通过该代理进行通信。 - 配置文件:可选的配置文件位于
$DSH_HOME/intercom/config。如果该文件存在,其中的配置项会被读取(例如控制入站消息是否触发新轮次、自定义状态后缀等)。 - Web 面板权限:Web UI 面板信任本地机器,任何本地进程都可以读取名单并作为该进程下的会话发送消息。
适用场景¶
- 需要在同一台机器上运行多个 DSH 进程并协调它们。
- 需要一个简单的机制让不同会话之间传递上下文或控制指令。
注意事项¶
- 插件以当前 DSH 进程的权限运行,涉及本地通信。
- 使用前建议检查源代码和许可证(MIT)。
- 不确定的事实(如 Star 数)未在本文中列出。