前言¶
在 DSH 里跑智能体,常见做法是模型、会话日志和凭证都集中在主电脑上。一旦要把构建、批量改文件或长时间 Agent 循环放到另一台机器,往往会遇到两类麻烦:要么把整份工作区同步回主机,要么主机关机或断网后副机上的任务也跟着不可控。
下面介绍社区插件 dsh-remote-agent(维护者 zbzbhs,分类:工作流)。它在主机与副机之间划清边界:副机拥有独立的 DSH 与 Agent 循环,任务在副机本地持久运行;主机只接收 handoff 结果卡与产物清单,需要成品时再显式拉取。
这是什么¶
dsh-remote-agent 是 DeepSeek Harness 的远程执行与工作流插件。当前包版本为 0.9.11(MIT 许可证,GitHub 约 3 stars;SkillHub 目录页 可安装)。
架构上,主电脑作为 hub 保留模型、会话与凭证,插件提供 19 个 remote_* 工具与 Web 面板(侧栏「远程同事」);副电脑作为 worker 主动拨入(direct 直连或 relay 中继),在配置的 roots 工作区内跑任务,中间产物留在副机。
README 标明:主机与副机端到端可用,exec 与 agent 双链路已在真机验证;依赖 零外部 npm 包,仅使用 node: 内置模块;Node 要求为 ^22.19.0 || >=24.0.0;在 DSH 桌面版 / CLI 0.2.0-rc.2 上验证。平台方面 Windows 全量验证,Linux / macOS 有 CI 覆盖。
核心功能¶
任务派发与调度¶
插件支持两种任务模式:
| 模式 | 说明 |
|---|---|
exec |
在副机工作区直接执行命令(如 npm run build、git pull) |
agent |
在副机启动独立 Agent 会话,自行规划、调工具、写文件 |
exec 默认 两阶段审批(approval: 'manual'),避免误派危险命令。派发前可用 dry-run 预览路由节点、模型、目录与预期产物。副机会上报 roots 下的 git 仓库信息,便于 remote_task({ repo: 'my-project' }) 做仓库感知调度;未指定节点时可按 CPU/内存负载选择。超时默认区分模式:exec 10 分钟,agent 1 小时;副机 maxConcurrent 默认 4,超出则排队。
结果回传与产物拉取¶
任务结束后回传 handoff 结果卡:结果摘要、工作区变更、成品清单、退出码,不会把整个目录传回主机。工作区文件按 final / intermediate / other 分类,仅 final 可通过 remote_pull 拉取(支持 glob、断点续传)。面板提供任务前后变更 diff。
只读浏览副机文件¶
remote_ls、remote_read、remote_grep、remote_tree 走独立的 fs/req↔fs/res 帧,不进任务队列、不占并发槽;路径限制在节点 roots 内,denyPaths 与符号链接策略按 README 说明生效。
连接、安全与诊断¶
- 0.9.3 起插件自开监听,默认端口 19387,副机拨插件端口,不再依赖 DSH
webserver,也无需在cordis.patch.yml里填 host。监听地址自动选择:listenHost(若配置)> Tailscale IP > 局域网 IP > 回环;0.0.0.0会被拒绝(新版 DSH 硬拒通配地址)。 - 断连不终止副机任务;重连后
task/sync对账,已完成的不重跑。relay模式下业务帧 X25519 + AES-256-GCM;副机验证主机 ed25519 身份,配对码携带指纹。 - 凭证不离开副机:协议不传模型 key,副机用本地模型配置跑自己的循环。
- 面板提供环境体检、连接尝试记录、错误翻译、外部工具检测(Tailscale / PowerShell / git / Node.js 等);写副机文件类操作需
confirm: "yes"。SMB「工作区共享」可映射盘符用本地 IDE 打开,但会绕过roots边界,默认只读且需二次确认。
包内 cordis patch 默认 role: auto(未配 hubUrl 即主机),装好后重启 DSH 即可生效。
安装与启用¶
SkillHub 社区目录(与 DeepSeek / 幻方无官方从属关系)提供该插件条目,版本与 GitHub 对齐为 v0.9.11。在 DSH 中完成插件安装后,插件通常位于用户目录下的 DSH 插件路径,例如 Windows:
%USERPROFILE%\.dsh\dsh_orb\dsh-plugin\dsh-remote-agent\
两台机器都需安装插件并重启 DSH。之后任选一条配对路线(零终端 / 向导 / 手动),终点相同。
推荐在插件的 bin/ 目录执行配置向导(会生成 nodeToken、配对码与 YAML,并处理副机必需的 inject: []):
node bin/dsh-remote-setup.js
Windows 若不想开终端,可双击同目录下的 setup.cmd,全程回车;主机也可在 Web 面板「副机接入」一键生成并复制配对码(含防火墙放行说明)。
向导要点:
- 主机:选「1=主机」,获得
dshra1://…配对码与完整配置。 - 副机:选「2=副机」,粘贴配对码;向导会先探活主机端口。副机也可只写一行
pair: '<配对码>',或显式hubUrl:覆盖。 - 两台重启 DSH 后,在主机对话中询问「副机上有哪些节点在线?」——在线即通。
非交互示例(资料原文):
node bin/dsh-remote-setup.js --role worker --hub-url 192.168.1.10:19387 --token nt_xxx --roots D:\work --node-id slave-pc
出问题时对配置文件做体检:
node bin/dsh-remote-setup.js --doctor 你的配置.yml
典型用法¶
确认节点在线:安装并配对后,用自然语言或 remote_* 工具查看副机节点与负载(面板显示 CPU/内存徽章)。
派发 exec 任务:在面板或通过工具提交命令,默认需人工审批后再执行;先用 dry-run 确认路由与目录。
派发 agent 任务:让副机在指定 roots 下跑独立 Agent;主机可在面板「模型」栏指定副机模型(留空则用副机默认)。
按仓库调度:副机上报 git 仓库后,使用 remote_task 的 repo 参数指向仓库名。
取回成品:任务结束后查看 handoff 卡与 final 清单,再用 remote_pull 按需拉取;长任务运行中仍可用只读文件工具查看副机目录。
跨 NAT:同一局域网或 Tailscale 用 direct;双方都在 NAT 后时可部署 dsh-remote-relay(包内提供 bin/dsh-remote-relay.js)。
适用场景与注意¶
适合:主电脑集中对话与凭证,但希望编译、爬虫、长时 Agent 在台式机/旧笔记本上跑;多机按负载或仓库选 worker;只要摘要与成品、不想同步整个 node_modules 与日志的场景。
注意:
- 插件以当前 DSH 进程权限运行,安装前请阅读 源码 与 MIT 许可证,并理解
exec/ 写文件 / SMB 共享的风险面。 - 副机必须正确配置
inject: [](向导会填写),否则可能静默不上线。 - 主机监听勿绑
0.0.0.0;若仅绑回环,副机无法连入,面板会给出可达性警告。 - 一键修复会改 DSH 的
cordis.patch.yml托管块,流程为预览 → 带confirm: "yes"确认,并自动备份。
结尾¶
dsh-remote-agent 把「远程算力」收成 DSH 工作流:副机本地持久跑任务与 Agent,主机只握 handoff 与产物清单,需要时再拉文件。社区目录与仓库如下:
- 目录页:https://www.skillhub.cn/plugins/zbzbhs/dsh-remote-agent
- GitHub:https://github.com/zbzbhs/dsh-remote-agent