Skip to content

helm-d v0.4.2

Latest

Choose a tag to compare

@ADWMC ADWMC released this 26 Sep 08:38
· 2 commits to main since this release

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 条目 id helmd-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-pi advisory 账本

依赖与工具链

  • 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(cordis 4.0.4、schemastery 3.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:checks 14 PASS(含此前只能 skip 的 the shipped patch reads OK against the installed host)· node scripts/test-gen-preset.mjs PASS · 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:checks 14 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 取证叙述,未逐节重写