前言¶
两台机器各跑一份 DeepSeek Harness 时,模型、会话和工作区往往各自封闭,想让「另一台机器上的 agent」帮忙办事,通常得自己搭中继、传文件或远程登录。官方 liveshare 面向公网协作;若你只需要在同一网段里让两份 DSH 互相看见、经你放行后再投递指令和文件,又不开放远端 shell、不做公网穿透,就需要一套以显式授权为前提的局域网对端通道。
下面介绍社区插件 dsh-cross-agent(维护者 Diomchen,分类:工作流),以及安装、连机与安全上的要点。
这是什么¶
dsh-cross-agent 让同一局域网内两台机器上的 DSH 实例可以:发现对端、单向放行、在 跨端 · <对端名> 会话里投递文字指令、按 SHA-256 回执互传文件,并在对端白名单允许时调用具名工具。不提供远端 shell,不做公网中继;每个 DSH 实例一份身份,只有被你放行过的对端才能与本机会话或收件箱交互。
- 目录页:https://www.skillhub.cn/plugins/Diomchen/dsh-cross-agent
- 源码与文档:https://github.com/Diomchen/dsh-cross-agent
- npm 包名:
dsh-cross-agent(README 标明 MIT 许可证;package.json当前版本 0.2.9) - 运行要求:DSH 0.2.x(README 注明在 0.2.2-rc.1 上做过真机双向联调)、Node.js ≥ 22.12、两台机器在同一网段
架构示意见仓库 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。
两台机器怎么连¶
- 两端安装同一插件,确认同一网段,防火墙放行 45881/udp(发现)与 45883/tcp(RPC 与文件)。macOS 首次监听需允许传入连接;Windows 需对专用网络放行。
- 打开任一端的 Web UI,进入侧栏「跨端 agent」。数秒内对端出现在「对端」列表,状态为已在局域网发现。
- 点「请求连接」→ 对方面板「需要你决定」出现连接请求 → 对方点「放行」。
- 两端应显示相同 8 位指纹;不一致则勿继续。
- 默认「需要审核」。若希望少打扰,可在该侧将权限模式切为「完全开放」并二次确认。
注意: 放行单向。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。