Skip to content

Releases

v0.3.1 · 材料缺口收口:skill-shipping.md 的「加载证明」在无模型凭据的机器上拿不到

Choose a tag to compare

@MPFF0104 MPFF0104 released this 11 Oct 07:15

材料缺口收口: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 · 门禁加固:反泄漏词表补绝对路径前缀与环境变量形态

Choose a tag to compare

@MPFF0104 MPFF0104 released this 11 Oct 06:25

门禁加固:反泄漏词表补绝对路径前缀与环境变量形态(触及面: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)

执行票 #35 · 地图 #30

v0.2.0 · 门禁容忍 CRLF + 第 3 步判据行改旗标形态

Choose a tag to compare

@MPFF0104 MPFF0104 released this 10 Oct 17:35

影响面

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 的 contractVersion 1 → 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 · 首次发布

Choose a tag to compare

@MPFF0104 MPFF0104 released this 10 Oct 17:06

首次发布

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 的唯一条件:至少一次外部取用者的实测回报。