dsh-lan-relay:局域网内多机 DeepSeek Harness Agent 互通

前言

在 DeepSeek Harness(DSH)里跑 Agent,常见做法是单机会话、本机工具链。若家里或办公室有多台电脑各自开着 DSH,想让一台上的 Agent 给另一台发任务、等回复,往往要自建消息通道、记 IP、写脚本,或依赖外部中间件。DSH 社区插件 dsh-lan-relay(维护者 ready-player-zero)走标准 bundle 路线:一台机器在 DSH 进程内当 hub,其余机器粘贴一行加入码即可加入,跨机器消息带离线队列与收到消息自动唤醒目标会话。下面介绍它的定位、能力与上手步骤。

这是什么

dsh-lan-relay 是分类为「工作流」的标准 DSH 插件(npm 包名 dsh-lan-relay,当前版本 1.1.1,MIT 许可证)。要求 DSH ≥ 0.2.1-rc.2,支持 Windows / macOS / Linux;实现上只用 Node 内置模块,不拉第三方依赖。

一句话:同一可信局域网内,多台 DSH 通过进程内 hub(默认 TCP 8787)与 x-relay-token 鉴权互通 Agent 消息;消息落盘、长轮询补投,到达后可自动唤醒指定会话跑一轮。

插件目录页:https://www.skillhub.cn/plugins/ready-player-zero/dsh-lan-relay(社区独立站点,与 DeepSeek / 幻方无官方从属关系)。源码与说明:https://github.com/ready-player-zero/dsh-lan-relay。

核心功能

标准 bundle,装完即用

一个包包含 Host 半(hub、工具、自动唤醒、管理 API)与 Web 半(设置 → 局域网中继)。在 DSH「插件 → 添加插件」输入包名即可安装,无需额外守护进程;服务端 hub 随 DSH 启停。

加入码配对

服务端生成一行 dshrelay1.…,内含地址、token 与机器名;客户端粘贴即可,不必手抄 IP。加入码为 base64url 编码的明文 token,重新生成 token 后旧码失效。

消息与在线状态

  • 离线队列:消息写入 ~/.dsh/lan-relay/hub/messages.jsonl(最多 5000 条 / 8MB 轮转),接收方上线后补投。
  • 长轮询:lan_relay_wait 最多等待 50 秒,超时返回空数组不报错。
  • 在线 peer:120 秒内有请求即视为在线;lan_relay_peers 可查询。

七个 Agent 工具

工具 说明
lan_relay_send 向 peer 名或 "*" 发消息,可选 to_session、thread
lan_relay_inbox 拉取新消息;from_seq=0 可重读历史
lan_relay_wait 长轮询等消息(≤50 秒)
lan_relay_peers 在线 peer 与 hub 可达性
lan_relay_sessions 本机活跃会话(回复时指定 to_session)
lan_relay_status 角色、连通性、唤醒统计;排障优先调用
lan_relay_configure 对话式改角色、加入码、端口等

插件后台长轮询与手动 inbox / wait 使用独立游标,互不抢消息。

自动唤醒

消息到达后按规则投递:带 to_session 且会话在线则精确投递;会话未打开时默认 push.cold_session=prompt 用 sessionController.prompt() resume 并投递;未指定 to_session 时投给 push.default_session 或最近活跃会话。一次投递可能触发一轮模型调用;不需要自动唤醒可将 push.enabled 设为 false,改用手动拉取。

图形化与对话式配置

设置 → 局域网中继:角色(服务端 / 客户端 / 关闭)、端口、token、加入码、在线 peer、连接测试、Windows 下一键放行防火墙。改动为本地草稿,点「保存」后 hub 与轮询立即按新配置重启,无需重启 DSH。也可让 Agent 调用 lan_relay_configure。

安装与启用

前置:参与互通的机器均安装 DSH ≥ 0.2.1-rc.2,处于同一局域网且能互相 ping 通。

安装插件

图形界面:侧边栏 → 插件 → 添加插件 → 输入 dsh-lan-relay → 安装。

或命令行(资料原文):

dsh plugin --profile desktop add dsh-lan-relay

两台(或多台)需要互通的机器都应执行上述安装。

服务端

  1. 打开 设置 → 局域网中继。
  2. 运行角色 选 服务端 → 保存。
  3. 确认 Hub 状态为运行中,记下端口(默认 8787)、Token、加入码(dshrelay1.…)与本机地址。
  4. 若防火墙开启,点 一键放行防火墙 并在 UAC 中确认;或按 README 用 PowerShell / netsh 放行入站 TCP 8787(Private + 本地子网)。
  5. 复制加入码发给其他机器。

客户端

  1. 设置 → 局域网中继 → 运行角色 选 客户端。
  2. 将加入码粘贴到 加入码 输入框(界面会显示识别预览)。
  3. 保存;顶部应显示 客户端已连接,在线 peer 中出现各机器名称。

配置持久化在 ~/.dsh/lan-relay/config.json;一般通过设置页修改即可。

典型用法

连通性验证

在任意一台机器的会话中,让 Agent 执行 README 中的验证话术,例如:

用 lan_relay_peers 看下在线机器,然后给 pc1 发消息:”ping from pc2”,并等 30 秒看回复。

对端 Agent 应被自动唤醒并回复(peer 名需与设置里的 本机名称 self 一致,默认为主机名)。

主动发消息

Agent 调用 lan_relay_send,指定 to(对端 peer 名)、text,需要精确会话时可加 to_session。广播可用 to: "*"。

排障入口

客户端连不上时:确认服务端 DSH 在运行、加入码 IP 是否正确、防火墙已放行,并在设置页点 连接测试。Agent 侧先调 lan_relay_status;详细日志见 ~/.dsh/lan-relay/state/plugin.log。

更完整的双机步骤见仓库内 docs/TWO-MACHINE-SETUP.md。

适用场景与注意

适合谁:同一办公室或家庭局域网里,多台 DSH 需要 Agent 互发指令、协作任务,又不想单独部署 Redis、MQTT 或常驻 hub 进程的场景;hub 跟着选为「服务端」的那台 DSH 生命周期走,需要 7×24 中继时服务端 DSH 应常驻。

安全与网络:

  • 协议为局域网内明文 HTTP + 定长比较的 x-relay-token;不要把 8787 暴露到公网。跨不可信网络应先用 Tailscale / WireGuard 等隧道,再把隧道地址写入加入码。
  • 管理 API 仅接受回环地址;消息正文明文落盘,勿在消息里传密钥。
  • 同一机器同一端口只能有一个 hub;多个 DSH 实例都选服务端会导致端口占用。

权限与成本:插件以当前 DSH 进程权限运行;安装前建议阅读源码与 MIT 许可证。自动唤醒会 resume 会话并可能消耗模型 token;审批策略为 ask 且 GUI 未打开时,需审批的操作可能 fail-closed。

限制摘要:服务端 DSH 关闭后其他机器无法发送新消息(已入队不丢);单条消息正文上限 32000 字符;Node ≥ 18。

结尾

dsh-lan-relay 把「多机 Agent 对话」收成标准 DSH 插件:一次安装、加入码配对、七个 lan_relay_* 工具与设置页即可在局域网内完成跨机器消息、离线补投与会话唤醒。需要条目说明与 issue 时,见社区目录页与 GitHub 仓库。

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

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

Xiaoye