前言¶
在 DeepSeek Harness(DSH)里跑 agent,常见做法是单机会话:任务在一台机器上完成。当你有多台开发机、测试机或家里的 NAS 时,往往要在每台机器上分别开 DSH、复制命令,或在 SSH 与本地会话之间来回切换。DuckFleet 是社区插件 dsh-duck-fleet(仓库 new-sailfish/duck-fleet),维护者为 new-sailfish,在 SkillHub 上归类为工作流。它只在主控机安装一次,把多台机器登记进同一「鸭群」,每台机器自动对应一个派活工具,之后你可以用自然语言指定「某一台 / 某几台 / 全部」去执行任务,主控侧并发下发并汇总结果。
这是什么¶
DuckFleet 的定位可以概括为 README 里的一句话:一群机器,一声令下。它是 DSH 插件,不是在被控机上再装一套编排服务:被控机只需 sshd、已安装的 dsh,以及一个 acp profile;主控机通过 SSH 拉起远端 ACP 会话并注册每台机器的工具名(由 label 派生,例如 Home Server → pc_home_server)。机器清单集中在 $DSH_HOME/fleet.json,也可在 设置 → 鸭群 里可视化编辑;增删改 host 等字段后不必重启 DSH 即可重注册 provider 与派活工具(面板 UI 在首次安装或升级插件后需重启 DSH 才会刷新,见下文安装说明)。
npm 包名 dsh-duck-fleet,当前资料中版本为 0.4.0,许可证 MIT。Node 引擎要求为 ^22.19.0 || >=24。
核心功能¶
机器清单与即时注册¶
- 清单文件:
$DSH_HOME/fleet.json;共享默认值在defaults,单台字段含label、host、user、port、toolName、remoteCommand、platform等(详见 README「机器字段」)。 - 添加机器后立即注册该机的 ACP provider 与派活工具,无需重启进程(服务端工具已生效;客户端「鸭群」设置页需重启 DSH 后才会加载新 bundle)。
加机与验证¶
- 设置 → 鸭群:自动获取配置(推荐)—— 生成提示词送到被控机,被控端 agent 自查环境并回报,主控自动写入并验证;或 手动填写 / JSON 视图,保存后 测试(SSH + ACP 握手)。
- 提示词可通过 复制粘贴,或 局域网链接(形如
http://192.168.1.10:<port>/abcd,临时、约 1 分钟、仅取走提示词的那台 host 可访问)。 - Agent 侧工具:
fleet_list、fleet_add、fleet_remove、fleet_test、fleet_setup、fleet_defaults、fleet_version等;模型可先fleet_list再在同轮并发调用各机器工具。
派活方式¶
多台机器并发执行。示例(来自 README):
你:让所有机器汇报当前的 CPU 和内存占用
DuckFleet:→ 并发派给 3 台机器 → 逐台汇总结果回来
自然语言示例:
| 意图 | 说法示例 |
|---|---|
| 单台 | 让 desktop-01 汇报一下磁盘占用 |
| 多台 | 让 laptop-01 和 desktop-01 都检查一下 Node 版本 |
| 全部 | 所有机器都把日志目录打包发我 |
长任务可在调用时使用 run_in_background: true,之后用 job_output 收结果。每次派活会自动附加与该机器 platform 相关的环境与工作规范,写任务时不必重复这些内容。
会话清理(实验性,Windows)¶
针对 Windows 被控机上 ACP 派活会话堆积在「未分组」的问题,提供 fleet_prune(及面板入口)。macOS / Linux 未实现,调用会直接拒绝。清理过程会短暂停被控机 DSH,约 30 秒,期间派活会中断。
安装与启用¶
插件只装在主控机。从 npm 安装(资料原文命令):
dsh plugin --profile desktop add dsh-duck-fleet
安装完成后 需要重启一次 DSH,客户端「鸭群」设置页才会出现;若 fleet_* 工具已可用,说明服务端 half 已加载,仅面板仍为旧版时需重启。
等价做法是在 profile 的 package.json 里声明 dependencies 与 dsh.profile.bundles 包含 dsh-duck-fleet;资料中也提到可从本地路径 dsh plugin --profile desktop add /path/to/duck-fleet(需自行 clone 仓库,本文不展开 clone 步骤)。
典型用法¶
1. 主控机安装并打开鸭群页¶
安装并重启后,打开 设置 → 鸭群。插件会向系统提示注册用法说明,并暴露 fleet_list / fleet_add 等管理工具。
2. 被控机准备¶
被控机需:sshd、dsh、acp profile(README 强调 profile 不能省,否则 SSH 无人值守会话里沙箱可能导致子进程无法执行)、主控公钥写入被控机。上述步骤可由 自动获取配置 生成的提示词交给被控机 agent 自行完成。
3. 添加一台机器¶
在面板选 自动获取配置,复制提示词或改用局域网链接;或对话中说:
用
fleet_add加一台机器:名称laptop-01,主机192.168.1.10,用户dev
非 Windows 被控机应在配置里显式设置 platform(默认可假设为 windows)。remoteCommand 通常需填被控机上 dsh 的绝对路径(非交互 SSH 的 PATH 里往往没有 dsh)。
4. 派活¶
确认 fleet_test 或实际执行一次命令验证能干活(握手成功不等于能执行命令)。然后在主控会话中用自然语言点名机器或「所有机器」即可。
适用场景与注意¶
适合谁:同一可信内网里、你自己控制的多台已装 DSH 的机器;希望从一台主控 DSH 用对话并发派活,而不是逐台 SSH 手工操作。
能力边界(设计如此,非缺陷):
- 面向内网,局域网链接无 TLS、无账号体系;不要反向代理到公网。
- 信任建立在 SSH 私钥上;被控端 ACP 默认
permission: allow,任务以 SSH 用户权限运行,主控侧要对命令负责。 fleet.json明文存主机、用户、私钥路径等。- 不做任务队列、重试、跨机文件代理;不传文件时在任务里让远端 agent 自行处理。
安装前:插件随当前 dsh 进程运行,安装前宜自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全与合规要求。DSH 生态是「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
DuckFleet 把多机 DSH 收成一份 fleet.json 和一组派活工具:主控装一次,加机即注册,用自然语言驱动单台、多台或全群并发执行。若要试用,可从 npm 包 dsh-duck-fleet 安装,或查阅官方文档与 issue:
- 目录页:https://www.skillhub.cn/plugins/new-sailfish/duck-fleet
- GitHub:https://github.com/new-sailfish/duck-fleet