dsh-cross-agent:局域网里两台 DSH agent 互相下指令、传文件

前言

两台机器各跑一份 DeepSeek Harness 时,模型、会话和工作区往往各自封闭,想让「另一台机器上的 agent」帮忙办事,通常得自己搭中继、传文件或远程登录。官方 liveshare 面向公网协作;若你只需要在同一网段里让两份 DSH 互相看见、经你放行后再投递指令和文件,又不开放远端 shell、不做公网穿透,就需要一套以显式授权为前提的局域网对端通道。

下面介绍社区插件 dsh-cross-agent(维护者 Diomchen,分类:工作流),以及安装、连机与安全上的要点。

这是什么

dsh-cross-agent 让同一局域网内两台机器上的 DSH 实例可以:发现对端、单向放行、在 跨端 · <对端名> 会话里投递文字指令、按 SHA-256 回执互传文件,并在对端白名单允许时调用具名工具。不提供远端 shell,不做公网中继;每个 DSH 实例一份身份,只有被你放行过的对端才能与本机会话或收件箱交互。

架构示意见仓库 docs/architecture.svg:两台机器、一条受控的跨端通道。

它解决什么问题

插件把「另一台机器上的 agent」变成可用一句话调用的对端,核心行为如下。

消息即命令。 A 让 B 做事,是在 B 的跨端会话里投递一条文字;B 的 agent 自行决定如何执行,本机权限、沙箱与审批仍由 DSH 管。插件不提供远端 shell(见仓库 ADR-0001)。

放行是连接的根。 未放行的对端无法进入会话或收件箱;放行是单向的。默认 confirm 模式下每条指令、每个文件进入「待审核」;切成 open 需二次确认。

跨端工具默认全关。 exposedTools 为空则对端无法通过 peer_tool 调用任何本机工具;名单外调用返回 403 并记审计(ADR-0004)。

连接可核对。 两端用 X25519 + HKDF 派生共享密钥,面板显示同一 8 位十六进制指纹;请求带 HMAC-SHA256 签名、±60 秒时间窗与 nonce 防重放。局域网内 RPC 为明文 HTTP,无 TLS;HMAC 保证完整性与来源,不保密内容。

可观测。 Web 侧栏「跨端 agent」可看在线状态、待办、传输记录与最近 1000 条审计。

核心能力概览

给 agent 的七个工具

工具 作用
peer_list 谁在线、是否已放行、权限模式、指纹
peer_ask 向对端 agent 下指令并等待答复(默认 120 秒,上限 600 秒)
peer_session_create 在对端指定目录新建会话(目录作项目分组)
peer_file_send 推送文件(≤100 MiB,sha256 回执)
peer_file_fetch 从对端共享目录只读拉取
peer_tools 查询对端对外开放的工具列表
peer_tool 调用对端 exposedTools 中的工具(confirm 模式下每次需对方点头)

peer_ask 的延迟取决于对方一次 agent turn,不是同步 RPC;对方 confirm 模式下可能被拒绝或超时,超时可凭 correlationId 再查。

人的 slash 命令

常用命令(完整列表见 README):

/cross-agent status
/cross-agent pending
/cross-agent approve <id>
/cross-agent reject <id>
/cross-agent connect <名字>
/cross-agent allow <名字>
/cross-agent mode <名字> open --yes
/cross-agent mode <名字> confirm
/cross-agent block <名字>
/cross-agent alias <名字> [新别名]
/cross-agent rename <新名字>
/cross-agent probe <IP>

别名只存本机,面板与 peer_ask 等工具的 peer 参数可使用别名,例如「家里的 Windows」。

安装与启用

需要 DSH 0.2.x、Node.js ≥ 22.12,两台机器同网段。安装请在普通终端执行,不要在 agent 会话里装(pnpm store 不在 workspace 沙箱内)。

从 npm 安装(README 推荐):

dsh plugin --profile desktop add dsh-cross-agent

Web profile 将 desktop 换为 web:

dsh plugin --profile web add dsh-cross-agent

从 GitHub Release 的 tgz 安装:

gh release download -R Diomchen/dsh-cross-agent --pattern '*.tgz' --dir .
dsh plugin --profile desktop add "file:$PWD/dsh-cross-agent-<version>.tgz"

从本地源码目录试改:

dsh plugin --profile desktop add "file:/绝对路径/dsh-cross-agent"

装完后重启 DSH,确认宿主侧已起来:

curl -s http://127.0.0.1:<DSH端口>/cross-agent/state | jq '.state.self'

该端点仅接受回环地址。升级用同一 add 命令装新版本;回滚则装回旧包。Windows 详细步骤与常见坑见仓库 WINDOWS.md。

两台机器怎么连

  1. 两端安装同一插件,确认同一网段,防火墙放行 45881/udp(发现)与 45883/tcp(RPC 与文件)。macOS 首次监听需允许传入连接;Windows 需对专用网络放行。
  2. 打开任一端的 Web UI,进入侧栏「跨端 agent」。数秒内对端出现在「对端」列表,状态为已在局域网发现。
  3. 点「请求连接」→ 对方面板「需要你决定」出现连接请求 → 对方点「放行」。
  4. 两端应显示相同 8 位指纹;不一致则勿继续。
  5. 默认「需要审核」。若希望少打扰,可在该侧将权限模式切为「完全开放」并二次确认。

注意: 放行单向。A 放行 B 表示允许 B 指挥 A 的 agent;若 A 也要指挥 B,B 须同样放行 A。双向放行后,两端各有一个 跨端 · 对方名字 会话。

企业 Wi-Fi 常挡 UDP 广播时,可用 /cross-agent probe <对端IP> 单播唤醒,或在配置里写 peerAddresses。同一台机器上两个 profile 或两个 DSH_HOME 时,插件还使用本机注册表 $DSH_HOME/dsh-cross-agent/instances/*.json;完全独立的两个 DSH_HOME 需手动指定 registryDir。公网 / NAT 穿透不做,需要时请用 DSH 官方 liveshare。

典型用法

README 中的示例(文字指令 + 文件):

你:让家里的 Windows 把 D:\work\report 里的最新 PDF 发过来
agent:调用 peer_list → peer_ask("家里的 Windows", "把 report 目录里最新的 PDF 发给我")
       对方 agent 执行后调用 peer_file_send,文件落到本机 .cross-agent/inbox/家里的 Windows/

流程要点:先用 peer_list 确认对端在线与放行状态,再用 peer_ask 投递自然语言任务;对端在本机权限下执行,必要时通过 peer_file_send 把文件推到请求方 inboxDir。

配置要点

在 profile 插件配置或 cordis.yml 中可改(节选):

键 默认 说明
discoveryPort 45881 UDP 发现,同网段须一致
port 45883 RPC 与文件传输
displayName 主机名 局域网显示名
inboxDir <工作目录>/.cross-agent/inbox 收件目录
shareDir <工作目录>/.cross-agent/share 允许对端拉取的共享目录
shareRoots [] 共享根白名单
peerAddresses [] 广播受阻时的静态对端地址
exposedTools [] 允许对端 peer_tool 调用的工具名;空则全关

peer_session_create 相关:sessionPermissionRules、sessionPermissionDefault(默认 workspace-write)、allowRemotePermissionRaise(默认 false)、allowRemoteSessions(默认 true)。远端只能把权限往紧里调,不能自行放宽超过接收方目录规则上限。

环境变量:DSH_CROSS_AGENT_HOME、DSH_CROSS_AGENT_DISCOVERY_PORT、DSH_CROSS_AGENT_PORT。身份与审计等落在 $DSH_HOME/dsh-cross-agent/ 下(identity.json、peers.json、audit.json 等),目录权限 0700、文件 0600。

适用场景与注意

适合谁: 家里与办公室各一台开发机、同一工作室多台 DSH,需要在可信局域网内让 agent 跨机协作(传报告、拉共享目录、按白名单调只读类工具),且愿意用面板或 /cross-agent 做显式放行与审核。

不适合: 不可信网络默认开 open;需要公网穿透或远端 shell 的场景(插件明确不做)。

安全习惯(README 原意): 这是给可信局域网用的工具。不要把 bash、write 等能改本机状态的工具放进 exposedTools,除非确实允许对端改你的机器。开放 read_file 即开放其能访问的路径范围,不区分参数。收件箱限制约 1 GiB / 500 件,单文件 ≤100 MiB。

插件以当前 DSH 进程权限运行;安装前可在 GitHub 阅读源码、LICENSE 与 ADR。社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,DSH 生态本身是「一切皆插件」的扩展方式。

排错与限制(摘要)

  • 对端不出现:检查同网段、UDP/TCP 端口、防火墙;试 probe 或 peerAddresses。
  • 指纹不一致:可能存在中间篡改,停止连接。
  • 兼容:需 DSH 0.2.x、Node ≥ 22.12;详细限制与开发说明见 README「兼容性与限制」「排错」。

更多命令、数据目录树与 English 文档见 https://github.com/Diomchen/dsh-cross-agent。

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

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

Xiaoye