dsh-lan-peers:局域网内 DSH 节点发现、配对与加密互通

前言

在 DeepSeek Harness(DSH)上跑 agent 时,往往有多台机器都在同一办公室或家里网段。要把一段文本或协作上下文送到另一台 DSH,常见做法是手动记 IP、搭中转或依赖云端——对「就在隔壁机器」的场景偏重。dsh-lan-peers 是维护者 Myco-Lee 发布的工作流类插件:在局域网内用 UDP 自动发现对端,经一次性配对建立加密信道,再通过 agent 工具收发消息;实现上只依赖 Node.js 内置的 node:dgram、node:http、node:crypto,不接入外部服务。跨互联网场景文档建议使用姊妹插件 dsh-wan-peers,两者可并存、互不影响。

下面介绍插件定位、能力与安装用法,事实以 GitHub 仓库 README 为准;社区目录见 SkillHub 条目。

这是什么

dsh-lan-peers(npm 包名同名,当前资料版本 0.3.0)面向「同一广播域内多台 DSH」:每装一份插件的实例会周期性广播自身、维护对端表,并为 agent 注册 5 个工具(列对端、配对、发送、收件箱、主动探测)。默认 secure: true:发现层仍开放(他人可见节点名等元数据),但未配对对端不能发消息,旧版明文 HTTP 端点在安全模式下返回 426。

许可证:MIT。Node 引擎要求 >=18。

核心功能

发现与投递

  1. 发现:默认 UDP 端口 48901,约每 7 秒向各网卡广播地址及 255.255.255.255 发送 JSON announce;陌生对端会回 announce 做双向确认;约 30 秒无消息视为离线。
  2. 投递:本机另起 HTTP 服务监听 0.0.0.0:48902(因 DSH 自带 webServer 多仅绑 127.0.0.1,局域网不可达)。v2 路径包括 GET /lan/v2/hello、POST /lan/v2/pair/start、POST /lan/v2/message 等;secure: false 时才启用 v1 明文路径。

配对与加密(0.3.0)

未配对对端不能走加密消息接口。配对流程要点:

  • 一侧 lan_pair action=show 得到 6 位一次性码(默认 10 分钟有效,只存哈希,单次使用,每来源 IP 每分钟最多 5 次试错)。
  • 另一侧 lan_pair action=import peer=… code=…(peer 可为节点名、id 或局域网 IP)。
  • 握手使用 X25519 ECDH 协商共享密钥(密钥不在线传输);之后消息 AES-256-GCM 加密,并带 HMAC-SHA256 签名(时间戳 ±60 秒与 nonce 防重放)。

配对信息落在 ~/.dsh/lan-peers/peers.d/<peerId>.json(权限 0600),重启后仍有效;对端换 IP 时发现会更新地址,密钥按节点 id 绑定。

Agent 工具

工具 作用
lan_peers 列出局域网对端(在线/离线、名字、IP:端口、是否已配对)
lan_pair show / import / list / forget / reset
lan_send 向已配对对端发加密文本
lan_inbox 拉收件箱(limit、mark_read)
lan_ping 立即广播并探测对端(读 /lan/v2/hello,不入对方收件箱)

状态目录

默认 ~/.dsh/lan-peers,可用环境变量 DSH_LAN_PEERS_HOME 覆盖。其中含 identity.json、peers.json、peers.d/*.json、inbox.jsonl、status.json、boot.log、lan-peers.log 等。

安装与启用

官方 README 给出的安装方式如下(以 desktop profile 为例):

dsh plugin --profile desktop add github:Myco-Lee/dsh-lan-peers

安装后需重启一次 DSH。可用下列方式粗查是否就绪(示例为 PowerShell):

Get-NetTCPConnection -State Listen -LocalPort 48902
Get-Content ~\.dsh\lan-peers\boot.log -Tail 5
Get-Content ~\.dsh\lan-peers\status.json

期望看到 0.0.0.0:48902 在监听,status.json 中 "secure": true 且 tools 已注册。

README 还提到本地 link 目录、npm pack 后 file: 安装等方式,适合改插件源码时热重载;日常从 GitHub 安装用上式即可。

典型用法

配对后发消息

  1. 在机器 B 的会话里让 agent 执行(或直接调工具):
lan_pair action=show

示例输出形态:pairing code 481920 (valid until …)。

  1. 在机器 A 上导入:
lan_pair action=import peer=LMM code=481920

成功后可用 lan_send peer=B text=... 走加密信道。

  1. 管理配对:lan_pair action=list 查看已配对;action=forget peer=X 删单个;action=reset 清空全部(需重新配对)。

跨机器只读探测(无需配对)

(Invoke-WebRequest http://<B的IP>:48902/lan/v2/hello -UseBasicParsing).Content

返回含 "ok":true 与 "secure":true 等字段时,说明 HTTP 通道可达。若 Windows 防火墙曾有名为 DeepSeek Harness 的入站阻止规则,可能挡掉 48902;README 给出禁用相关 Block 规则并为 TCP 48902、UDP 48901 新建 Allow 规则的 PowerShell 示例,排障时可对照执行。

可选配置

在 profile 补丁层为插件 id dsh-lan-peers 写 config:,例如:

- id: dsh-lan-peers
  name: dsh-lan-peers
  config:
    discoveryPort: 48901
    httpPort: 48902
    intervalMs: 7000
    ttlMs: 30000
    name: LMM-1
    maxTextChars: 8000
    maxInbox: 500
    secure: true
    pairingCodeLength: 6
    pairingCodeTtlMs: 600000
    maxPairAttemptsPerMinute: 5
    clockSkewMs: 60000

仅在完全可信内网且需与 0.2.x 行为对齐时,可设 secure: false;0.2.x 与 0.3.0 默认安全模式不互通,升级时需两台同时对齐版本或同时对齐 secure 配置。

适用场景与注意

适合谁:同一 Wi‑Fi/有线网段、多台 DSH desktop(或同类 profile)、希望 agent 能「看见邻居、配对一次、之后互发文本」的团队或个人;不想为局域网互通单独部署消息中间件。

安全边界(README 明示):

  • 发现是开放的:同广播域内可见节点名、端口、是否展示配对码等。
  • 传输中加密与请求认证有配对与签名机制保护;本机 inbox.jsonl 存的是解密后明文;勿把 ~/.dsh/lan-peers 同步到不可信位置;勿将 48902 暴露到公网。
  • 插件随当前 DSH 进程权限运行;安装前宜自行审阅源码与 MIT 许可证,确认与内网合规要求一致。

兼容性:资料记载已在 DSH 0.2.2-rc.1(cordis 4.1.0)与 0.2.1-rc.5(cordis 4.0.5)上验证。

结尾

经过上面的步骤,dsh-lan-peers 把局域网内的 DSH 实例收成一张可发现、可配对、可加密互发消息的对端表,并把操作收敛到少量 agent 工具。需要目录浏览与 issue 跟踪时,可打开 SkillHub 插件页 与 GitHub:Myco-Lee/dsh-lan-peers。

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

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

Xiaoye