Repository navigation
Releases
v0.3.1 · 材料缺口收口:skill-shipping.md 的「加载证明」在无模型凭据的机器上拿不到
材料缺口收口:skill-shipping.md 的「加载证明」在无模型凭据的机器上拿不到(触及面:修正(patch))
#37 报的缺口:references/skill-shipping.md 的
「发现证明与加载证明」节要求宿主的两份输出,而没有模型凭据的机器上第 2 条(skill 工具返回的
<skill_content> 块)拿不到 —— headless 会话在第一个请求就 MISSING_CREDENTIAL 终止。第 1 条
(会话里那条 <available_skills> 目录消息)其实一直拿得到,材料只是没写它从哪读。本版补上。
影响面
- D2 / D3 面:
references/skill-shipping.md(唯一改动文件,2 insertions / 1 deletion)。 - 成品束文件集不变:
git ls-files= 40 条。 - 读者侧效果:无凭据的机器上「被发现」这一格有了明确读法;「被加载」那一格的机器条件改指验证闭环册的「边界」节。
取用者要做什么
无需动作,重新取用目录束即可。若你此前按旧版在无凭据机器上判过「加载证明拿不到」,本版告诉你:
第 1 条照拿(读会话日志),第 2 条的机器条件记在 references/verification-loop.md 的「边界」节。
复算命令
node "<skill-directory>/scripts/check-plugin.mjs" --self # ⇒ ok:true / filtered.error 0
node "<skill-directory>/scripts/verify-e2e.mjs" # ⇒ ok:true / problems[] 空 / 15 步
node --test <skill-directory>/scripts/tests/{locate,paths,skill-scan}.test.mjs # ⇒ 19 pass / 0 fail
git ls-files | wc -l # ⇒ 40
新写那句的复算(本机实测):一次性 DSH_HOME + --profile headless --json 无凭据 ⇒ MISSING_CREDENTIAL / exit 1;
换假 key ⇒ AUTH 401。两分支的会话日志都是 6 帧 / 20 行、逐字含 <available_skills>;
整块一次性解只拿到 184 字节 / 1 行 —— 必须按 zstd 魔数 28 B5 2F FD 逐帧解。
版本面
触及面:修正(patch) —— 这次改动让结论会变(无凭据的读者原本会以为两条都拿不到)⇒ 落
#18 D-12 的「事实纠错 / 边界收窄」档
⇒ v0.3.0 → v0.3.1。D-4 义务已履行:四个脚本的 CONTRACT_VERSION 逐个复核
(check-plugin.mjs = 2、dsh-env.mjs / verify-assembly.mjs / verify-e2e.mjs = 1),本次一字未动。
已知边界(不藏)
- 本册改动后只余 38 code point(6962/7000),指针行已满 3/3 ⇒ 下次往本册加内容会先撞上限。
- 「指向
verification-loop.md的『边界』节」那一句原拟单开一行,被skill.pointer-lines(每册 ≤ 3 指针行)
挡住,且硬约束 6 要求指针写反引号裸路径 ⇒ 落在「参考」里既有那一行上;内容未变、落点从「第 2 条之后」
移到「参考」节。四个候选的 numbered 实测(7037 / 7009 / 7007 / 6962)记在 #37 的评论里。 v0.3.0的 notes 里「git ls-files= 39」是当时的读数;实测为 40
(#36 已把口径改为「以git ls-files为准」)。
执行票 #37
v0.3.0 · 门禁加固:反泄漏词表补绝对路径前缀与环境变量形态
门禁加固:反泄漏词表补绝对路径前缀与环境变量形态(触及面:D1)
仓库自带的 scanLeaks 原先查不出四类机器字面形态(/home/…、/root/…、/opt/…、$HOME/…、%USERPROFILE%\…),
而 #32 已把「只有机器字面路径才算破『落点不写死』」
写死 ⇒ 口径与门禁之间有缝。本版堵上。
改了什么
scripts/lib/skill-scan.mjs:MACHINE_PATTERNS新增ABS_PREFIX(/home/root/opt/srv/mnt
五个绝对路径前缀)、ENV_HOME($HOME形态)、ENV_USERPROFILE(%USERPROFILE%形态);新增条目一律拼接构造。scripts/tests/skill-scan.test.mjs(新增):机器形态必命中 / 占位符不误伤 / URL 边界不误判 /
README+GLOSSARY 零命中 / 成品束 markdown 零命中,共 5 例。scripts/tests/paths.test.mjs与scripts/tests/locate.test.mjs:头部运行命令行同步为三文件;
「tests 条目集合相等」守卫同步为三文件。README.md:目录树补一行skill-scan.test.mjs(成品束文件集不变,仍 39 条)。
一个值得记下的坑
绝对路径前缀的前导斜杠必须吃进模式。若只匹配 home/,(?<![/:]) 会看见 /home/… 前面那个 /
而让整类失效。最终形态 (?<![A-Za-z0-9._:-])/(?:home|root|opt|srv|mnt)/:/opt/x 命中,
而 https://host/home/x、127.0.0.1/mnt/x、//host/opt/x、/rooted/x、home/x 仍零命中。
验证(本版复算)
- 机器形态 8/8 非空(含
/srv/、/mnt/);%USERPROFILE%\…由「子串~/.dsh假命中」变为真词条命中。 README.md/GLOSSARY.md/ 占位符<root><projectRoot><dshHome>/ 成品束内全部 markdown ⇒ 全[]。check-plugin.mjs --self⇒ok: true、filtered.error = 0;资产面副本--assets-dir⇒ok: true(error 0 / warn 0)。git ls-files | wc -l⇒ 39;三文件单测 19/19 pass。
版本面
触及面:D1(脚本契约:scanLeaks 的检出集合扩大 ⇒ 依赖它判红绿的成品面判定会变)⇒ minor 递增 v0.2.0 → v0.3.0。
本 tag 同时覆盖此前两个未发版提交:
337feea第十册skill-shipping落盘 + 门禁册集合/文案改十册(触及面:D1 · D3 · D4)3ec786a第十册执行后复核修订:providerName 同名语义 +DSH_PROFILE_DIR口径 + 3b 标签 + 发现侧样本(触及面:D3)
v0.2.0 · 门禁容忍 CRLF + 第 3 步判据行改旗标形态
影响面
Windows 取用者按默认设置 git clone 后,材料自带门禁不再误报红。
| 面 | v0.1.0 行为 | v0.2.0 行为 |
|---|---|---|
默认 clone(CRLF 工作副本)跑 --self |
ok: false / exit 1 / 4 个 error(skill.crlf · skill.frontmatter-keys · skill.description-unquoted · skill.name-mismatch) |
ok: true / exit 0 / 1 warn + 1 info |
SKILL.md 第 3 步判据行(照抄) |
check-plugin: Unexpected argument … / exit 2 |
exit 0 / ok: true |
- 根因:
scripts/lib/skill-scan.mjs的 frontmatter / body 定界只认\n---\n,CRLF 下解析为空 ⇒ 连带 3 条 error。现改为frontmatterBounds()(\r?\n---\r?\n容忍)。 skill.crlf由 error 降为 warn:宿主自己的 skill 发现吃 CRLF(实测照常DISCOVERED/LOADED)⇒ 原来的硬红是误报;行尾规范仍会在输出里被点名。SKILL.md:41与references/build-a-package.md:62 / :74三处把位置参数改成--plugin-dir <包目录>。- 脚本契约:
check-plugin.mjs的contractVersion1 → 2(--self的退出码与problems[]集合变了)。其余三个脚本未动。 - 成品束仍是 38 条(
git ls-files= 38);README 未动。
取用者要做什么
- 不需要改任何调用方式。把材料更新到本 tag 即可(重新 clone,或
git -C <束> fetch --tags后git -C <束> checkout v0.2.0)。 - 唯一例外:如果你把
SKILL.md第 3 步那条命令抄进了自己的脚本 —— 把<包目录>位置参数改成--plugin-dir <包目录>(旧形态在 v0.1.0 上同样会exit 2,与版本无关)。
复算命令
git clone https://github.com/MPFF0104/dsh-plugin-dev-mpff.git <scratch> # Windows 默认配置即可(系统级 core.autocrlf=true)
node <scratch>/dsh-plugin-dev-mpff/scripts/check-plugin.mjs --self ⇒ exit 0 ∧ ok: true
node <scratch>/dsh-plugin-dev-mpff/scripts/check-plugin.mjs --plugin-dir <scratch>/dsh-plugin-dev-mpff/templates/host-only ⇒ exit 0 ∧ ok: true
git -C <scratch> ls-files | wc -l ⇒ 38
git -C <scratch> tag -n1 v0.2.0 ⇒ 首行含「触及面:D1」
本版只修这两处可复现的不一致,v0.1.0 的已知边界(5 处强制标注 + 4 处可写边界)一条未动,仍以 v0.1.0 的「已知边界」一节为准。
v0.1.0 · 首次发布
首次发布
dsh-plugin-dev-mpff 是一个 dsh(DeepSeek Harness)第三方插件开发 skill:从零写出一个插件、证明它生效、把它发出去。
取用形态是裸目录束 —— 把仓库根的 dsh-plugin-dev-mpff/ 整个目录取走即可。本仓不提供安装路径(读者自己会装、靠 AI 发现),也不提供副本对齐:按目录束取用的取用者与仓库之间没有可比版本面。
覆盖面
- 入口
SKILL.md:7 条硬约束 + 「任务 → 文件」路由表 + 5 步流程(每步带完成判据)。 - 9 册
references/:环境发现 · 包与装配 · 扩展点选择 · 逐文件建包 · 前端半边 · 验证闭环 · 发布与分发 · 静默失效排查 · 上游漂移重核。 - 可复制起点
templates/:host-only/(5 文件)·frontend/(6 文件)。 - 端到端夹具
examples/hello-plugin/(6 文件),配scripts/verify-e2e.mjs的 15 步闭环。 - 四个脚本:
scripts/dsh-env.mjs(环境发现)·scripts/check-plugin.mjs(静态自检,含--self)·scripts/verify-assembly.mjs(装配验证)·scripts/verify-e2e.mjs(端到端)。
发布时的门禁现状(可自己复算):
node "<skill-directory>/scripts/check-plugin.mjs" --self ⇒ ok: true,problems[] 里 error 计数 0,exit 0
node "<skill-directory>/scripts/verify-e2e.mjs" ⇒ 报告「装上了 / mount 了 / 卸干净了」三条
已知边界
本版不是全验证版。每一处边界都就地写在成品自带的 ## 边界 段里(不散落在 issue 面),且每处都附「自己复算的办法」。下面 5 处是强制标注:
| 就地段 | 未验的是什么 |
|---|---|
references/env-discovery.md 的 ## 边界 |
npx @deepseek-ai/dsh 与源码 pnpm dsh 两条 CLI 候选未真跑,只是推断可用;注册表 InstallLocation 只在 Windows 一台机器上验过 |
references/extension-points.md 的 ## 边界 |
上游不存在扩展点穷尽清单,本册不承诺穷尽,是已证实清单 + 就地校验方式 |
references/build-a-package.md 的 ## 边界 |
bundle.patch 与行 id 的官方推荐写法无证据,给的是本规格决定,不是上游规则 |
references/frontend-plugin.md 的 ## 边界 |
前端骨架只到 node --check + manifest 形状 + boot 期图组合,未做端到端渲染验证 |
references/release-and-distribution.md 的 ## 边界 |
真实 github: 远端安装、zip 安装路径、plugin update 后的调和均未实测 |
另有 4 处可写边界,同样就地写在各自 ## 边界 段:
references/package-and-assembly.md——applyEntryPatches的历史只有一条旁证,标残留风险。references/verification-loop.md—— C 档(工具真出现在工具列表 / 钩子真拦到一次调用)未跑通:本机没有模型凭据,只拿到MISSING_CREDENTIAL。references/failure-modes.md—— 表里有三条来自第三方自述,不是实测。references/drift-recheck.md—— 落后量未复算 · 多段并列 peer 区间未实测 · 站点差集未全量 diff。
模板侧对偶:templates/frontend/client.js 首行带同一句「未做端到端渲染验证」边界。
版本面
版本号只有一处 = GitHub Releases 的 tag。README 不写版本号,也不写历次改动,只留一句指向 Releases 的指针。升 v1.0.0 的唯一条件:至少一次外部取用者的实测回报。