前言¶
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
开发态手动安装:
- 将整个目录复制到
<profile>/node_modules/dsh-agent-foreman - 在
<profile>/package.json的dsh.profile.bundles中加入"dsh-agent-foreman" - 重启 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)。