helm-d 0.4.2
兼容 dsh 0.1.7-rc.2。安装/升级:install.ps1(Windows)或 install.sh(*nix);资产见本页面下方。
装机宿主与编译期 cohort 对齐 @deepseek-ai/dsh@0.1.7-rc.2(npm next 当前值;latest 仍是 0.1.5-rc.3,故安装宿主时钉版本)。迁移路径:先在 0.1.7-alpha.1/alpha.2 完成 0.1.7 公共面换代(settings 只承载 Config、preset 改 bundle 组合行、peer 补同段 prerelease),再升级至 rc.1 并复验,最终将开发依赖与装机宿主同步至 rc.2。0.4.2 包含设置面、随包 preset、出站通道和工具链变更,详见下列条目。
设置面:派生态迁出 settings
hcot-settings.ts重写:settings 命名空间改挂 profile 条目 idhelmd-hcot-settings,Config只留 model / provider / maxRounds / autoSchedule 与动作请求requestedAction(UI 写、宿主消费),宿主经settings/document-updated事件感知,describe 读、update 清- 运行态不再写进 settings 文档——0.1.7 的 settings 只承载 Config,且每次攻击都会把报告体持久化进 profile patch。
lastResult/ 账本聚合 / 实例库索引改由GET /api/helmd/hcot投影,新增GET /api/helmd/health承载 boot 时健康判定;单个投影在账本或语料缺失时降级为空形,不整条 500 client.js卡片与工作台改读 HTTP:健康卡片 30s 轮询GET /api/helmd/health(原为 settings scope 订阅),工作台 15s 轮询面不变
Preset:部署目录退役,改为随包组合行
dsh.bundle.patch改数组:["./cordis.patch.yml", "./preset.generated.patch.yml"](0.1.7 的 bundle patch 支持字符串或列表),preset 随包就位,安装即生效,~/.dsh/.agent-presets/helmd/不再是部署目标gen-preset.mjs重写:读宿主@deepseek-ai/dsh-web-app/presets/standard.patch.yml,改写组合行头(preset-helmd/id: helmd,order与description仍取自presets/preset.yml,picker 可见字段一个没丢)+ 替换 persona 行 + 追加@adwmc/helm-d/agent行;宿主低于 0.1.7(读不到plugins:)报错且不写任何文件,不产出加载不了的形状- 退役 4 份旧产物:
presets/full-reverse/{agent.cordis.yml,preset.yml}、包内agent.cordis.yml及presets/full-reverse/镜像;.gitattributes改钉packages/helmd/preset.generated.patch.yml text eol=lf(--check逐字节比对) setup-preset.{ps1,sh}与install.{ps1,sh}[3/4] 不再往~/.dsh写部署文件,改为在包内按本机宿主重生成(先留.bak,失败则保留随包产物并提示升级后重跑)health.ts漂移判定切到包内产物:新增NOT_GENERATED(产物缺失),LEGACY_PRESET语义改为"无指纹头、来源不可证 → 只报告不覆写",自动修复目标从部署位改为包内 patch,HELMD_PRESET_PATCH可重定向(测试用)- 产物断言扩到 5 项:行集合 = 宿主 standard +
helmd、无重复 id、组合行确已改写为preset-helmd/id: helmd、声明@deepseek-ai/dsh-agent-preset、persona 含helmd online,且helm-d恰好一次
出站通道与路由
feat(egress)出站通道规则:新增references/toolbox/network-egress.md(发现本机代理、探不到则直连,不硬编码端口),router.ts与tools/toolbox.ts按该规则取出口,tool-matrix/tool-install同步改写- persona 删 SRC/众测 slang 路由:
persona.txt去掉 SRC/众测 slang 映射 4 行,router.ts去掉route_task的 src 入口(2 行),随包preset.generated.patch.yml同步——0.4.0 融入的 SRC 语境路由自此不再走 persona 侧路由
文档与杂项
- SkillOpt 方法论入档:
docs/skillopt-methodology.md,README 文档区补链接 .gitignore忽略 Playwright 会话/截图本地产物与本地.helm-piadvisory 账本
依赖与工具链
- 10 个包的 peer / dev 范围加
|| >=0.1.7-alpha.0 <0.2.0-0:semver 比较器不带同段 prerelease 时不匹配 prerelease,原>=0.1.5-rc.1 <0.2.0-0把0.1.7-alpha.1判为不满足 - 编译期 cohort 随目标宿主对齐:
pnpm-workspace.yaml的overrides/minimumReleaseAgeExclude经0.1.7-rc.1升至0.1.7-rc.2(cordis4.0.4、schemastery3.18.4不变),lockfile 同步锁定 rc.2;typecheck 与 host-seam checks 跑在与目标宿主同代的类型上;dsh --version只反映 launcher,另以 lockfile 核对依赖 cohort - 宿主 standard 定位改为上溯祖先目录(
scripts/checks/artifacts.mjs)而非数../..层数:0.1.7 把dsh-web-app嵌在@deepseek-ai/dsh/node_modules/下,固定层数在真宿主上判为"无宿主",让本该跑在真机的那条断言静默 skip 而套件依旧全绿 install.sh的"宿主在跑"探针修正:https://+curl -f在 0.1.7(http 监听、未鉴权返回 401)永远探不到,改http://且不以状态码判命中(正/负例都实测过)gen-preset.mjs取npm root -g改单条静态命令串,消掉 DEP0190(args +shell: true)
验证(alpha.1/alpha.2 迁移 + rc.1/rc.2 编译期复验)
pnpm build全绿 ·pnpm peers check无问题 ·pnpm test:checks14 PASS(含此前只能 skip 的the shipped patch reads OK against the installed host)·node scripts/test-gen-preset.mjsPASS ·node scripts/gen-preset.mjs --check→preset check OK- 生成幂等:以装机宿主 standard 重生成输出
unchanged / nothing to write,包内镜像packages/helmd/scripts/gen-preset.mjs --out与随包产物逐字节一致;setup-preset.ps1与.sh两条路径均跑通 - 真实组合取证:
dsh web --dump-config出现- id: preset-helmd/config: id: helmd(description、order 10 在位)/ 末行@adwmc/helm-d/agent,preset 的 plugins 行集合 = 宿主 19 行 +helmd,missing 与 extra 皆空 - 运行时:宿主启动无报错,
GET /api/helmd/health返回status:"OK"、artifact check OK (20 rows …)、双指纹一致(6cd2f197737f),GET /api/helmd/tools正常 - UI preset 选择器已在真宿主渲染出
helmd及其 description(0.1.7 的内置插件 / Agent 预设面板可见三件运行中组件) - alpha.1 → alpha.2 契约零漂移:宿主
standard.patch.yml逐字节相同(sha256 前缀6cd2f197737f两版一致),随包产物无需重生成;alpha.2 上--dump-config、/api/helmd/health(status:"OK"、双指纹一致)、build / typecheck / peers / 14 checks / preset 幂等 /--check全部复跑通过 - alpha.2 → rc.1:registry 包树 diff 确认
standard.patch.yml仍为6CD2F197737F(随包产物无需重生成);pnpm install后 lockfile 无@deepseek-ai/dsh-*@0.1.7-alpha.2残留;baseline 与迁移后pnpm build/typecheck/test:checks14 PASS /test:preset全绿 - rc.1 → rc.2:
pnpm install --lockfile-only后 lockfile 无 rc.1 残留;pnpm --filter @adwmc/helm-d build、npm run test:preset、npm run test:checks(14 PASS)和node packages/helmd/scripts/gen-preset.mjs --check全绿;全局dsh --version为0.1.7-rc.2,dsh --profile web --dump-config含preset-helmd与@adwmc/helm-d/agent。宿主 standard 的 SHA-256 为6CD2F197737F…。配置检查另报 web profile 的llm-deepseek名称不匹配警告,跳过该 profile 行,与 helmd preset 行分开处理 - 未验证:设置页健康卡片渲染(数据源已验,卡片挂载点在 0.1.7 设置面板里没定位到)、真机会话首轮工具目录
[pwsh, read](MAINTENANCE §8 护栏,需把helmd选为会话预设并跑一轮真实请求) - 遗留:
docs/incident-2026-08-26-preset-stale-generation.md只在顶部加了"机制已随 0.1.7 失效"的声明,正文仍是 0.1.5 时代的.agent-presets/ standing-mount 取证叙述,未逐节重写