dsh-agent-foreman(包工头):父智能体派单,承包商各自选模型

前言

DeepSeek Harness(DSH)内置的 Agent Team 可以给每个队友起名、写提示词,但不能为每个成员单独指定模型。实际任务里,有的步骤需要大模型深度推理,有的只是一两行改动;若所有子智能体都继承父会话的模型,往往又慢又贵。

dsh-agent-foreman(界面显示名「包工头」)把「拆任务、派活、验收」和「具体执行」分开:父智能体只负责拆单与签收,中间环节在隔离的子会话里完成,每个承包商可以绑定自己的 provider、模型、思考等级与并发上限,产物汇总到一块共享看板。维护者为 Dclef,在 SkillHub 社区目录中归类为工作流插件;DSH 生态主张「一切皆插件」,SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

一句话:父智能体把工作拆成 Orders(工单),交给你在设置里配置的 Contractors(承包商) 执行,父智能体再逐单验收,不合格可打回返工;不预设角色脚本,由你决定谁干、用什么模型。

与内置 Agent Team、以及 README 中对比表里的 swarm-orchestrator 相比,包工头的差异在于:支持按成员指定模型、无固定四类角色、带设置页名册与实时模型目录,并支持带反馈的返工循环。

核心功能

承包商与工单

  • Contractors:在 Settings → 包工头 中维护名册,可按工种命名(README 示例:力工做业务活、可选安全员做审查)。包工头(父智能体)本身不在名册里,只拆单与签收。可为同一工种配置多个实例(例如「力工 · frontend」「力工 · render」),各自有模型、👁 按钮后的专属 prompt(会 prepend 到该承包商收到的每一单)、以及并发上限(默认 1,同一实例不会同时接两单;可调为 2 等)。最小配置只需一个力工。
  • Orders:父智能体拆出的工作单元,含任务与验收标准;可指定承包商,或省略后按名册轮换。

执行发生在隔离的子会话中;团队模式下,承包商会作为 Agent Teams 的真实成员出现在会话头栏原生按钮里(详见下文「团队模式」)。

运行时工具与技能

输入 /foreman 后接工作描述即可触发(运行时通过 ctx.skills.register() 注册)。分号或换行可拆成多单。技能正文会引导父智能体:名册 → 拆单 → 派单 → 验收,无需长期系统提示。

工具 作用
foreman_roster 列出承包商的路由、prompt 长度、并发上限与当前策略
foreman_dispatch 派一批工单,等待全部完成,返回看板
foreman_review 逐单通过/不通过;不通过会带反馈重新派单
foreman_status 重读看板;省略 runId 时取本会话最新一轮

派单时注意:orders[].task 必须自洽(子智能体看不到父上下文);orders[].contractor 省略则轮换;未知名字会明确失败;orders[].dependsOn 仅引用同批工单,依赖项串行执行;waitSeconds 限制整批等待,超时未完成的工单会被中止而非静默标记完成;批级 concurrency 默认 4,上限 8。

派单策略(Policy)

设置页在「派单策略」下折叠,字段默认值与含义如下(以 README 为准):

字段 默认 含义
concurrency 4 同时干活的承包商数(1–8);单实例上限在名册里
timeoutSeconds 900 每单墙钟超时
maxRework 1 每单最多打回次数
maxDepth 1 子智能体是否还能再派子单
provider spawn 子智能体 provider(spawn / fork / cursor)

名册里每条承包商包含:名称、可选 prompt、provider、model、effort、并发上限。provider 选「跟随当前会话」时,子会话使用父会话正在用的模型;若要换模型,先选 provider,模型下拉仅列出该 provider 的模型。

数据与安全

  • Windows:%LOCALAPPDATA%/dsh-agent-foreman/
  • 其他:<baseDir>/data/dsh-agent-foreman/

存 roster.json(名册 + 策略)与 runs.jsonl(每轮派单一行)。名册损坏不会阻塞启动,会当作空名册并写日志。

HTTP 路由仅接受同源与 loopback,跨站 403;名册只存 provider/model/effort 名称,不存凭据;承包商在独立子会话中运行,继承 DSH 当前有效沙箱。

团队模式(实验性)

默认关闭。在 Settings → 包工头 → 派单策略 勾选 团队模式 后,承包商通过 agentTeams.spawnTeammate 等宿主能力接入 Agent Team;任一步失败会回退到普通激活路径,看板 teamMode 字段标明实际路径。已知限制包括:成员名须 ASCII(lower-kebab-case),中文承包商名会映射为 worker、worker-2 等,中文名与模型写在成员描述里;成员首回合可能在父模型上跑;模型切换受宿主子智能体允许列表约束。

安装与启用

官方 README 给出的安装示例(路径需换成你本机插件目录):

dsh plugin add E:/path/to/dsh-agent-foreman

开发态手动安装:

  1. 将整个目录复制到 <profile>/node_modules/dsh-agent-foreman
  2. 在 <profile>/package.json 的 dsh.profile.bundles 中加入 "dsh-agent-foreman"
  3. 重启 DSH

package.json 要求 Node ^22.19.0 || >=24.0.0,DSH >=0.2.1-rc.2 <0.3.0-0。安装完成后打开 Settings → 包工头 添加承包商。

插件以当前 DSH 进程权限运行;安装前请自行审阅 GitHub 仓库 源码与 MIT 许可证。

典型用法

在会话中输入带任务的 foreman 技能,例如:

/foreman extract GraphBlocked into shared logic; add regression tests

分号或换行拆成多个 order;父智能体按技能流程调用 foreman_roster、foreman_dispatch、foreman_review 等工具,最终在共享看板上汇总各承包商交付物。

设置页名册示意见仓库 docs/settings-roster.png(README 内链)。

适用场景与注意

适合:同一父任务里需要按步骤切换模型成本(重推理 vs 轻量编辑)、希望自定义承包商名册与 per-contractor prompt、需要带反馈的返工而非一次性派发。

不适合或需知:子单任务必须写全上下文;批超时与 maxRework 会硬性截断;团队模式依赖宿主 Agent Team 能力且有多项命名与首回合模型限制;与内置 Agent Team 相比多一层插件配置,但换来 per-member 模型与策略页。

结尾

dsh-agent-foreman 把 DSH 多智能体协作从「全员同一模型」推进到「名册里每人自带 provider / 模型 / effort」,父智能体专注拆单与验收。进一步了解可访问社区目录页 SkillHub · dsh-agent-foreman 与源码仓库 github.com/Dclef/dsh-agent-foreman(中文说明见仓库内 README.zh.md)。

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

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

小夜