Repository navigation
The description now fits the harness that renders the smallest slice of it. A harness matches a request against the description field, and DeepSeek Harness renders name plus a normalized description capped at 500 characters — anything longer is truncated with an ellipsis, never rejected. The previous 1019-character description therefore lost its second half there, including both negative predicates ("silent on a fully stated task", "not for explaining existing state") that keep auto-invocation off work that needs no convergence. It is now 491 characters and keeps every predicate, and --check-frontmatter fails above the cap. Three passages of environment mechanics that restate what any harness already does are gone from SKILL.md, which is 493 lines.
描述现在适配"渲染得最少"的那个 harness。harness 拿 description 字段匹配请求,而 DeepSeek Harness 只渲染 name 加一段归一化后的描述、上限 500 字符——超长会被省略号截断,而不是报错。旧描述 1019 字符,因此在它里面后半段整体消失,其中包括两条否定谓词("任务已完整说明时保持沉默"、"不用于解释现状"),而它们正是防止自动触发在无需收敛的工作上开火的条件。新描述 491 字符,谓词一条不少;--check-frontmatter 超过上限即失败。SKILL.md 删掉三处"环境机制"交代,全文 493 行。
DeepSeek Harness, measured / 实测 DeepSeek Harness: evals/run.py --harness dsh drives dsh --profile headless and parses its --json event stream, so only assistant prose is a candidate reply and a run that correctly stays silent is never scored against the skill text its own tool output carried. Each run gets an isolated harness home and a generated overlay that pins the skill surface to the workspace and the posture to a read-only sandbox with approval never; a fourth preflight session measures that isolation instead of asserting it. The description change was measured on dsh itself: a six-case subset covering four auto-trigger cases passed 5/6 with zero hallucinated evidence (report). The failing case needs a shell that can read the workspace's git history, which the Windows sandbox denies — a limitation of the evaluation channel, not of the skill. / evals/run.py --harness dsh 驱动 dsh --profile headless,解析它的 --json 事件流:只有 assistant 正文进入候选,因此一次"正确地保持沉默"的运行不会被它自己工具输出里的技能正文误判。每次运行都在工作区旁拿到隔离的 harness home 与一份自动生成的覆盖补丁(把技能面钉在工作区、把权限姿态钉成只读沙箱 + 审批 never),并由第四个 preflight 会话实测这套隔离,而不是声称它成立。description 属触发面改动,因此直接在 dsh 上实测:覆盖套件中四个 auto 模式用例的 6 例子集通过 5/6,零编造 evidence(报告)。失败的那一个用例要跟随一条只有版本历史能解释的引用,需要一个能读仓库的 shell,而 Windows 沙箱不允许——这是评测通道的限制,不是 skill 的。
The contract's round trip across sessions / 契约跨会话往返: add-caching-cross-session settles a contract, answers its question, then sends a bare "continue" into a fresh session on the same workspace and judges what that session does with it — the tree it leaves behind, the Intent check line it reports, and whether the saved contract was read back off disk rather than remembered. It is the first case that changes the workspace, so it declares writable: true and its own 1200-second ceiling. The suite is eighteen cases and the threshold is 15 of 18. / add-caching-cross-session 先谈定契约、回答它的问题,然后往全新会话发一句裸的"继续"(同一工作区),再判定那个会话拿它做了什么:留下的工作树、报出的那行 Intent check,以及保存的契约到底是从盘上读回来的、还是靠记忆续写的。它是套件里第一个会改动工作区的用例,因此声明 writable: true 并自带 1200 秒上限。套件现为 18 例,全量阈值为 18 例中至少通过 15 例。
Install paths / 安装路径: the README gains the DeepSeek Harness install directories and the /intent-router invocation, and references/harness-compat.md corrects its row for that harness — explicit invocation is /intent-router, both project-level skill directories it scans work — and records the catalog cap, the root ranking, the system-directory exclusion and the .git-ancestor project root. / README.md 补上 DeepSeek Harness 的安装目录与 /intent-router 调用方式;references/harness-compat.md 修正该 harness 的行——显式调用是 /intent-router,它扫描的两个项目级技能目录都可用——并记下 500 字符描述上限、技能根优先级、系统目录例外,以及项目根是最近的 .git 祖先。
Verification / 核验: what this release does not cover is stated rather than implied. The OpenCode numbers predate the new description and were not re-measured against it, so the triggering-surface evidence for it is the dsh subset above, not a full suite. --delivery and --rescore-delivery refuse --harness dsh, and a case that declares itself writable is refused there too, because that channel pins a read-only posture. The new case was measured on OpenCode: a one-case subset on dp/deepseek-flash, plus the two cases that share its fixture still passing after the change (evals/reports/2026-10-16-opencode.md). / 本版未覆盖的部分如实写明而非含糊带过。OpenCode 的数字早于新描述、没有针对它重测,因此新描述的触发面证据是上面那次 dsh 子集,而不是全量跑分。--delivery 与 --rescore-delivery 对 --harness dsh 直接拒绝,声明为可写的用例在那里同样被拒绝——该通道钉的是只读姿态。新用例已在 OpenCode 上实测:dp/deepseek-flash 上的 1 例子集,外加与它共用 fixture 的两个用例在改动后仍全部通过(evals/reports/2026-10-16-opencode.md)。
Full changelog: v1.3.0...v1.4.0