Repository navigation
v0.5.3 · 修掉伴随编程 A/B 实测暴露的 4 个摩擦点
Normify v0.5.3 · 把「伴随编程实测」暴露的 4 个摩擦点修掉
这一版没有新功能,只有四件事 —— 全部来自一次真实的 A/B 对照实验:同一份规范、同一类模型,两个 AI 写同一个
交互式白板后端,一个带 dsh-normify 走伴随流程,一个纯手写;用一套隐藏黑盒验收(42 项)打分,两组最终都是 42/42。
插件组额外交付了 41 模块 / 110 API / 10 层的架构数据,也把下面 4 个粗糙处暴露了出来。
🎯 四处修复
① normify_help 现在按主题返回(此前完全忽略入参)
0.5.2 的 normify_help 无论传什么都返回同一份字段速查。实验里 AI 为了拿到 change_open / layout_upsert /
change_close 的准确参数名,只能去读插件的 lib/tools.js,多花约 4 分钟。
- 主题:
fields(默认)/deps(箭头与 API 直连)/renders(渲染数据)/flow(伴随开发主流程)/
tools(工具清单,由注册表实时生成)/policy(架构规则)/errors(常见诊断码与修法)/all - 传错主题不再静默忽略:返回
args/invalid-topic并列出可用主题。
② 项目初始化通道(新增第 31 个工具)
实验里"第一次开项目"没有入口:change_open 要求项目目录已存在(project/no-modules),
normify_brief({id}) 要求模块已存在,AI 只能用 module_batch {items: [], dry_run: true} 去"建目录"。
- 新增
normify_project_init:建normify-<slug>/+ 安装默认架构规则;可选root一步创建"计划态根模块";幂等。 normify_change_open现在也会自动建项目目录(写工具语义)。normify_brief遇到不存在的模块,返回"先 init / 先建树 / 或改用task参数"的可执行提示。
③ 批量诊断补上因果链
实验里一条 structure/label-too-long 连带出 3 条 dep/target-missing(L1 失败的模块会被移出批次工作集),
报错完全不点明因果,AI 只能读源码才确认根因,白跑一轮。
- 连带错误改报
dep/target-dropped/structure/parent-dropped,message 与evidence.root_cause_code
直接写明"某模块因哪条 L1 诊断被移出批次"; - 失败响应新增
root_causes: [{module, code, message}]+hint,一眼看清"修哪几个"。
④ 「API 直连」引导
实验数据:结构数据里声明了 110 条 API、54 条箭头,其中 0 条用 from_api / to_api 锚定到具体 API ——
等于白丢渲染器最精细的一层(箭头只能落在框边,钉不到 API 行)。
normify_validate现在会给出聚合 warningdep/unanchored:条数 + 前 3 条示例 + 修法。- 引导不等于放宽:锚到不存在的 API 键仍然是 error(
dep/from-api-invalid)。
✅ 验证
| 项目 | 结果 |
|---|---|
tests/regression-0.5.3.mjs(新增,锁定四点) |
21 项断言全绿 |
tests/engine-e2e.mjs / tests/companion-e2e.mjs / tests/regression-0.5.2.mjs |
全部 PASS |
ci-contract-check.cjs |
工具数契约 30 → 31,并断言 3 个关键工具存在 |
tsc -p tsconfig.json(strict / declaration) |
0 error |
📦 安装
Invoke-WebRequest -Uri "https://github.com/yan-mc/dsh-normify/releases/download/v0.5.3/dsh-external-dsh-normify-0.5.3.tgz" -OutFile "dsh-external-dsh-normify-0.5.3.tgz"curl -L -o dsh-external-dsh-normify-0.5.3.tgz \
https://github.com/yan-mc/dsh-normify/releases/download/v0.5.3/dsh-external-dsh-normify-0.5.3.tgz然后按 README「安装」 把包登记进 profile 的 dependencies + dsh.profile.bundles,重启 DSH。
📚 实验记录(本版修复的依据)
- 报告:
test-results/2026-09-12-ab-companion/TEST-REPORT.md(A/B 交付物、隐藏黑盒 42 项、两份过程日志、证据清单) - 关键数字:A 组 41 模块 / 110 API / 54 箭头 / 10 层 /
validate0 error;两组端到端耗时 ≈8.4 min vs ≈22 min