Repository navigation
Releases
v1.2.4 — 修 0.2.x 上三份 preset 第一条消息即失败(#1)
修复:0.2.x 上三份 preset 第一条消息即失败(#1)
DSH 0.2.x 的 prompt 装配严格解析 persona 的 prefix/suffix:引用未注册的变量会直接抛
unknown prompt variable "{{cwd}}" in section "deployment:persona-suffix"; registered variables: provider, model
1.2.3 的三份 preset 末尾都还留着 0.1.x 时代的 Your working directory is {{cwd}}.,于是预设能注册、能出现在模式下拉里,但一条消息都发不出去。
变了什么
- 删掉三处
{{cwd}}。0.2.x 只登记provider/model两个变量;工作目录由 persona 行默认的includeRuntimeContext: true注入,不必自己写。 - 新增
tests/preset-prompt-variables.test.mjs:把cordis.patch.yml里所有{{…}}(注释行除外)按白名单校验,并钉住成对性与「三份 persona 还在」。拿修之前的文件跑,会精确报出{{cwd}} @ 49 / 222 / 407 行。 - README:补 0.2.x 兼容说明,并挂上 powered by dsh 徽章。
升级
dsh plugin --profile <profile> add dsh-outsourcing-expert@1.2.4Desktop 端在插件页更新;重启后新建会话,选「外包高手」「外包高手(独具慧眼)」或「领导模式」。
v1.2.3:新增「领导模式」preset(保留原版纪律,只注入全局能力表)
新增
第三个 preset「领导模式」(id leader,显示名「领导模式」):
- 保留原版纪律:领导自己是执行者也是委派者,
read/write/web_search等干活工具不被拦截;选模流程(发现 → 判档 → 联网核实 → 内置启发式对照表)逐字保留,外包高手的纪律一个字都没搬进来。 - 只增加全局能力表:本机有能力表缓存时直接内联(判档优先照表,表外模型按原有流程核实);没有缓存时按流程建表(查名册 → 前台派侦察兵联网调研 → 自动缓存),与外包高手共用同一份
<DSH_HOME>/outsourcing-expert/models.json。
安装
dsh plugin --profile <profile> add dsh-outsourcing-expert
装完后新建会话,预设选择器里选「外包高手」「外包高手(独具慧眼)」或「领导模式」。
本页 tarball 与 npm 上那份由同一次 CI 打包,逐字节相同。
完整变更:v1.2.2...v1.2.3
v1.2.2:能力表 provider 按名册校准,不再记成模型的真实厂商
修复
能力表缓存不再把 provider 记成模型的真实发布者。 侦察兵联网查来的表容易把 provider 写成模型的真实厂商,而客户端里配置的供应商名可能完全另一个样(实测日志里配置是 gpt-uuapi,表里写成 openai,委派当场被拒:child LLM route "openai/gpt-5.6-luna" is not allowed for this Session);写歪的表一旦落盘就会长期误导后续所有会话。
现在侦察表落盘前会用 list_subagent_models 的返回(客户端里实际配置的供应商与路线)逐行校准:
- 模型对上名册 → 整条换成名册原文;
- 供应商对上(大小写差异,或
deepseek↔deepseek-account这类加后缀写法)→ 换回配置里的名字; - 对不上名册的行丢掉;凑不够两行就整份不写——宁可没有表,也不留一个派不动的 provider;
- 没拿到名册则原样不动,不做任何猜测。
提示层同步收紧:provider 必须照抄名册原文;名册参数要整个省略(写空字符串会被工具拒——实测模型这么干过,于是拿不到名册、只能凭印象编模型)。
安装
dsh plugin --profile <profile> add dsh-outsourcing-expert
本页 tarball 与 npm 上那份由同一次 CI 打包,逐字节相同。
完整变更:v1.2.1...v1.2.2
dsh-outsourcing-expert 1.2.1
dsh-outsourcing-expert 1.2.1
插件行为没有任何变化——这一版只补工程面:CI、npm 发布与文档。已经在用 1.2.0 的人不需要为它升级。
新增:CI(契约测试)
node 22 / 24 × ubuntu / windows 四种组合跑 node --test,共 30 项契约测试。矩阵里刻意放了 Windows:这个插件自己管一个真实文件存储(能力表),而 harness 是 Windows 优先的。
新增:发布 Release 即发布到 npm
本版起,发布 GitHub Release 会把同一个版本发到 npm,走 OIDC(trusted publishing)——仓库里不存任何密钥,npm 侧带 provenance(slsa.dev/provenance/v1)。流程依次是:校验 release tag 与 package.json 的版本一致 → 跑一遍契约测试 → 发布。
预发布(prerelease)走 next dist-tag,不会抢 latest。
改:README
- 标题下加了一枚 CI 徽章。
- 修正 Desktop 端的安装说明。原文写「desktop profile 由应用独占管理」,不准确:启动器只拒没有
manageDesktopProfile的 CLI 实例——桌面端自带的那份dsh能管它,别的 dsh 安装才会被拒。
安装
从 npm:
dsh plugin --profile <profile> add dsh-outsourcing-expert从 GitHub,或从本页的 dsh-outsourcing-expert.tgz:
dsh plugin --profile <profile> add github:Funny1Potato/dsh-outsourcing-expert装完新建会话,在 preset 选择里选「外包高手」或「外包高手(独具慧眼)」;桌面端走插件页(插件 → 添加插件)填同一串。本页的 tarball 与 npm 上那份逐字节相同(sha1 15e2a4fb…)。
要求
DeepSeek Harness 0.2.0-rc.2(按该版本源码逐条核对过契约)。
v1.2.0 提示只点名会话真有的工具
dsh-outsourcing-expert 1.2.0
修:提示不再点名会话里不存在的工具
提示段现在按这个会话实际拥有的工具来写:委派工具名、名册那一节、白名单列表、被拒时的提示,都只提真实存在的工具。
起因是一个真机上真实发生过的报错:某条 preset 链上只注册了 subagent_fork,而纪律段通篇写着「用 subagent」——模型照做,宿主回 ToolNotFoundError: unknown tool "subagent",第一条委派根本没派出去。只有 subagent_fork 时现在改提 subagent_fork,没有 list_subagent_models 时不再叫它去查名册。
修:能力表缓存不再因一次失败而废掉
待写入的标记以前只要「这次委派没报错」就被消费掉,于是第一条侦察翻车(例如子智能体撞上委派深度上限、交回一句错误说明)之后,第二次交出的合格能力表会被漏掉,整个会话再也存不上。现在只有真的写进缓存才消费该标记,连续 3 次不成才放弃本会话。
修:子会话不再拿到领导纪律
子会话会继承父会话的 preset,所以「结论不由你产出、所有工作外包给子智能体」这套纪律也发给了侦察兵——它照做去派自己的子智能体,撞委派深度上限、交不回能力表。现在纪律段只发给顶层领导。
改:能力表缓存改存 JSON
<DSH_HOME>/outsourcing-expert/models.json,含 updatedAt / source,正文要么是按表头解析出的结构化 models 数组(模型 / 档位 / 擅长 / 不适合 / 来源),要么是解析不出结构时的 raw 原文兜底——两种都是 JSON,手工编辑也没问题。老的 models.md 仍可读,下次写入自动转成 JSON 并删掉它。
改:说话方式
- 选人理由是唯一允许的过程话:每次发出委派那一刻必须用一句话说清为什么是它,交付结果时不再重复;其余过程旁白仍禁止。(此前这两条并列,互相压制——真机 12 次委派里 10 次一个字都没说。)
- 结论不由你产出:连简单问答也先派子智能体去查去答;也不自己在正文里替子智能体做推导、算数字或下判定。
- 子会话标题改用短路线名(
默认路线/provider / model),长文案只留给界面卡片。
其他
- 选人理由从「可选」改为「必须」;「独具慧眼」模式的理由改成装作看不出它不合适(不说破是故意挑的)。
- 契约测试 30 项。
安装
dsh plugin --profile <profile> add github:Funny1Potato/dsh-outsourcing-expert或在桌面端插件页填同一串。装完新建会话,选「外包高手」或「外包高手(独具慧眼)」。
要求
DeepSeek Harness 0.2.0-rc.2(按该版本源码逐条核对过契约)。
v1.1.1 改名:外包高手(独具慧眼)
dsh-outsourcing-expert 1.1.1
改动
- 第二个 preset 的显示名改成「外包高手(独具慧眼)」(原「外包高手(反向用人)」)。
它的 config.id 仍然是 outsourcing-expert-reverse,没有变——已保存的 preset 选择、会话头里的引用都不受影响,不用重建会话。文件里的 reverseHiring 开关语义、提示段里的选人规则措辞也都没动。
行为零变化:这一版只改名字与文档。
其他
- README 精简:删掉两节机制说明(「顺序纪律」「子会话标题」)。功能都还在,只是不再写进面向用户的文档。
安装
dsh plugin --profile <profile> add github:Funny1Potato/dsh-outsourcing-expert或在桌面端插件页填同一串。装完新建会话,选「外包高手」或「外包高手(独具慧眼)」。
要求
DeepSeek Harness 0.2.0-rc.2(按该版本源码逐条核对过契约)。想让插件能显式指定 subagent 模型,需要该会话的 list_subagent_models 可用(本包的 patch 里已把 modelSelectionSettings 打开)。
v1.1.0 能力表缓存 + 三条命令
dsh-outsourcing-expert 1.1.0
新增:模型能力表缓存(侦察一次,之后所有会话直接用)
「这些模型各自擅长什么」是这台机器的属性,却要花一次联网调研才能得到。现在侦察成功后插件会把表写下来(<DSH_HOME>/outsourcing-expert/models.md),之后直接把表内联进系统提示段——不再侦察、不再调 list_subagent_models。
- 只在空表时写入,永不自动覆盖;文件可以直接手工编辑,删掉它就回到「重新侦察」。
- 只写通过体检的结果(≥2 行含
provider/model,且出现能力档位词),宁缺勿脏;正文上限约 6000 字符。 - 三条命令:
/outsourcing-models看(路径、更新时间、来源、正文)|/outsourcing-models-clear清空|/outsourcing-models-init清空并让当前会话重新侦察一次。
修复:首轮会跳过侦察
以前只强制「第一条委派必须是前台」,模型照做,但仍然会直接派活、根本不侦察。现在缓存为空时多一道门:没调过 list_subagent_models 就不准发第一条委派。表已经缓存时,这道门与「第一条必须前台」一起取消——没有侦察要做时不该再要求。
其他
- 提示段标记
interpolate: false。宿主对{{变量}}是严格的,而缓存正文是模型写的——不关掉的话,表里出现{{model}}这类字面量会打断整轮装配。 - 新增配置项
capabilityCache(默认true;关掉即回到「每个会话各自侦察一次」)与storeDir(缓存目录)。 - 契约测试 24 项。
安装
dsh plugin --profile <profile> add github:Funny1Potato/dsh-outsourcing-expert或在桌面端插件页填同一串。装完新建会话,选「外包高手」或「外包高手(反向用人)」。
要求
DeepSeek Harness 0.2.0-rc.2(按该版本源码逐条核对过契约)。想让插件能显式指定 subagent 模型,需要该会话的 list_subagent_models 可用(本包的 patch 里已把 modelSelectionSettings 打开)。
仍然如此
选人规则是提示层,不是运行时强制:宿主明确排除「改写工具参数」,插件无法替模型把 provider / model 改掉。磁盘上的拦截(干活工具一律 deny)是硬的。
v1.0.0(外包高手 / 外包高手(反向用人))
dsh-outsourcing-expert 1.0.0
DSH 插件包,声明两个 agent preset:顶层 Agent 不亲自干活,把活全部外包给 subagent。
装法
dsh plugin --profile <profile> add github:Funny1Potato/dsh-outsourcing-expert装完新建会话,在 preset 选择里选「外包高手」或「外包高手(反向用人)」。包里没有 prepare / build 脚本,源码安装不需要 allowBuilds 授权。
也可以直接用这个预构建包:
dsh plugin --profile <profile> add ./dsh-outsourcing-expert.tgz这一版有什么
- 硬拦截:
tools/pre-execute把非管理类工具调用(读写文件、跑命令、搜索、上网、workflow、skill、自省……)直接 deny,且不产生任何副作用;领导保留的工具只有提问、规划、目标、用人。子 Agent 与宿主内部不带 agent 的调用照常放行。 - 顺序纪律(代码强制):每条会话的第一条委派必须是前台(
run_in_background: false),有前台委派在飞时新的委派会被拒绝——模型实测会无视只写在提示里的顺序要求。 - 用人两步走:先派一个随机挑中的「侦察兵」联网调研全部可选 subagent 模型各自擅长什么(能力表只留给领导自己用),之后按任务难度 + 能力表选人,并把所选
provider/model显式写进委派参数。 - 模型名可见:委派结果正文首行由插件自动补
▸ 委派模型:<provider> / <model>|任务:…,同时把子会话标题写成「模型 · 任务」。 - 反向用人 preset:
outsourcing-expert-reverse故意把难活交给弱模型。
要求
- DeepSeek Harness
0.2.0-rc.2(按该版本源码逐条核对过契约)。 - 想让插件能显式指定 subagent 模型,需要该会话的
list_subagent_models可用(宿主的subagent实例开了modelSelectionSettings,本包的 patch 里已开)。
已知限制
- 选人规则是提示层,不是运行时强制:宿主明确排除「改写工具参数」,插件无法替模型把
provider/model改掉。 - 硬拦截意味着领导只能问、只能拆、只能委派,不能自己动手。
- 用旧 preset id(
incompetent-leader)建过的会话需要新建会话重新选。