Repository navigation
[Bug Report] patch-injected "skill-filesystem" row without "name" is silently disabled by preflight #10203
Replies: 3 comments 1 reply
|
Found during a multi-agent governance-layer migration onto DSH 0.2.1-rc.2 (six governance plugins, audits attached). Full report: https://github.com/weft-audit/weft-evidence/blob/main/docs/reports/2026-10-19-DSH%E5%A4%9AAgent%E6%8B%93%E6%89%91%E8%BF%81%E7%A7%BB%E5%AE%9E%E6%88%98%E8%AE%B0%E5%BD%95.md — minimal repro and fix included. Happy to provide a PR if the team wants one. |
|
Quick follow-up: since external PRs aren't accepted for now (per CONTRIBUTING), I'm sharing a minimal reference fix in my fork instead of a pull request: https://github.com/weft-audit/deepseek-harness/tree/fix/patch-row-missing-name — the preflight now explicitly denies patch rows missing a plugin name (a clear diagnostic instead of the swallowed TypeError), with regression tests for missing / empty / non-string names. Happy to adapt it if this area gets picked up. |
|
Your diagnosis is correct at the source level, and the second of your two suggestions is the one the shipped surface does not offer at all. I re-read the chain at the current HEAD ( The chain, line by line
Suggestion 1 (report the missing field explicitly) is a change inside the launcher: by the time anything pluggable can see the row, the information that would justify the diagnostic is already gone. The preflight has to refuse it where it refuses today, which is the shape of your fork branch. Suggestion 2 (set comparison between declared rows and actually-loaded ones) is buildable outside the core, so I built it there rather than as a patch:
Two limits, stated rather than hidden. It is recompute-only: the preflight rewrites clones in place and keeps no copy of the original declaration, so the report cannot diff your patch row against the Loader's entry — it can only say what the rule makes of what the row still carries. And it is report-only: your row stays denied, exactly as today. The preflight's own wording and the To run it: clone Issues on that repo are open, including "this row was still not explained" — a profile that defeats the census is the most useful report I can get. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Bug Report:patch 注入 skill-filesystem 行缺 name 字段被 preflight 静默禁用
环境
复现步骤
--patch覆盖层注入一行 skill-filesystem(未写name字段):--dump-config组合树中仍显示该行——配置声明与实际装载不一致,且无任何指向「缺 name 字段」的提示。
根因判断
preflight 校验(manifestOf→evaluatePluginCompatibility)对该行执行清单解析时,
name字段为 undefined,内部对其调用字符串方法触发异常,异常被当作「requirements 校验失败」处理,整行静默禁用。
修复验证
给该行补
name: '@deepseek-ai/dsh-skill-filesystem'后,stderr 零告警,--dump-config组合树正确含 customSkillDirs,技能生效。建议
name的注入行应显式报配置错误而非静默禁用;备注
All reactions