v0.7.36 — 文档对齐真实实现 + 8 个真实缺陷修复
v0.7.36 — 文档对齐真实实现,并修掉对齐过程中暴露的 7 个真实缺陷
这一版的主线是把 README / VitePress 双语文档全部对齐到代码事实。三个并行只读审计逐行
对照源码,独立对抗式复核又按机械规则随机抽样 41 条断言复验 —— 命中的假声明全部修掉,
而更要紧的是:对齐过程中暴露了 8 个真实代码缺陷,它们此前一直与文档承诺相矛盾。
修复的真实缺陷
| # | 缺陷 | 影响 |
|---|---|---|
| 1 | createPluginContext 漏接宿主的 onDispose 注入口 |
ctx.onDispose / ctx.timer.* / ctx.subscriptions.add 登记的清理永不执行:热重载后旧定时器继续跑,退出前 200ms 的 kv 写入丢失 |
| 2 | 客户端插件卸载挂在 visibilitychange→hidden 且 dispose() 一次性 |
用户切一次标签页,全部插件面板与订阅就永久失效直到刷新。改为 pagehide |
| 3 | ctx.route() 返回 undefined,类型声明却是 boolean |
宿主 registerRoute 少了 return;已补齐并只在成功时记账 |
| 4 | sdk/index.d.mts 与运行时两头不符 |
少了 4 个函数的声明 + 多个资源的 update/remove + permissions + ctx.config.define* + 宿主注入面;同时声明了一个运行时不存在的具名导出 el |
| 5 | 配置分组字段名:类型写 groups,宿主读 configGroups |
照类型写插件会得到一个被静默忽略的键 |
| 6 | -g / -f / -y 短选项被静默丢弃(无命令声明 meta.short) |
aw register x.mjs -g 不报错地注册到项目级而非用户级 |
| 7 | 设了 AW_HOME 时,全局注册的指令永远扫描不到 |
写侧用 awHome(env)、读侧用 homedir(),两边统一 |
| 8 | 对外示例本身是坏的 | 三个 sdk/examples/*/client.mjs 订阅的是服务端钩子名,浏览器里全是静默空订阅;Array.isArray(await api.lines.list()) 恒为 false(该接口返回 { lines, states }) |
另修:LIFECYCLE_EVENTS/CLIENT_EVENTS 两份"单一事实源"清单各缺一项;
config.yml 的 app.version 长期停在 0.7.9 而 /api/health 直接回显它(现以 package.json 为准,
实测已报 0.7.36);若干注释级事实源错误。
文档
- 新增英文事实源
docs/{cli,plugins,sdk}.en.md,部署工作流改为中英成对同步。
此前只有中文单页指南由 CI 覆盖,英文页长期手工维护,最大缺口达 87%
(英文 CLI 手册 29 行 vs 中文 227 行)。 - README / README-zh:补上一直缺失的 AML 模块、插件与 SDK 文档索引、完整路由清单、
退出码与--json契约;修正 73→98 设置项、6→14 执行引擎(并按接入形态分三类)、
"npm 安装首次要构建 2-3 分钟"(tarball 本就含.output)、"npx 零残留"、
不存在的版本迁移承诺、pnpm aw等。两份 README 经机械校验逐项 1:1
(40 标题 / 146 表格行 / 32 围栏 / 15 图 / 6 徽章)。 - 文档站新增
/guide/aml;补齐配置根解析规则与环境别名表、14 行引擎表、
英文许可证页(此前漏掉全部义务条款)、权限与数控读写页的英文程序化访问章节。 - 端到端验证段落改为可追溯(套件 → 最新结果 → 复跑命令),并区分当前 head 与历史基线。
视觉
文档站新增材质/动效/可读性层,并经一次敌意评审 + 15 条实测复验(15/15):
- 修掉一个真·阻断缺陷:
appearance:false却不声明 markdown 主题 → VitePress 注入了
浅色 Shiki 调色板,代码块里出现 1.49:1 的字符串色,正文级不可读。改用github-dark-default。 - 显式声明 CJK 字体族(VitePress 的 zh 默认栈里没有任何中文字体)。
- 导航玻璃、顶缘镜面、分层投影、弹簧缓动、阅读进度条(scroll-driven,零 JS)、分节入场、
焦点环修正、390px 布局修补。 - 评审提出的 5 个阻断项全部修复并复验:入场动画选择器此前匹配 0 个元素;
reduce-motion 总闸把每个侧栏条目都点亮成"当前页";:focus-visible{border-radius:0}
把 CTA 压成方角;390px 下控制台标题被挤成省略号;正文链接下划线规则漏排.hw-btn。
新增守卫
scripts/check-docs-sync.mjs(58 断言):CI 复制对逐字节同源、中英页对标题层级序列与
代码块数同构、文档里硬编码的版本号与 npx 锁定示例必须等于package.json、
13 类已知错误断言不得回归、VitePress 模板安全(正文裸尖括号会让构建直接失败)、
表格内联代码里未转义的竖线。scripts/test-plugin-lifecycle.mjs(22 断言)覆盖上面第 1、3 项。test-cli-exit.mjs增加 14 条断言:每个内建指令都必须能真正 import ——
registry 会把 import 失败吞进failures,指令静默消失而静态检查看不出来
(本次真实踩坑:模板字符串里漏转义一个反引号)。
验证
| 项目 | 结果 |
|---|---|
e2e-full-closedloop.mjs(0.7.36 生产构建,隔离环境) |
124 PASS / 0 FAIL |
e2e-aml.ts --real |
0 失败 |
check-docs-sync |
58 / 0 |
docs-v3-verify(视觉逐条实测) |
15 / 0 |
| 文档站构建 + 11 路由截图 | 全绿,0 前端/请求错误 |
| 离线套件 | cli-exit 66/66 · data-root 52 · log-flooding 31 · plugin-lifecycle 22 · lru 20 · rollback-index 20 · memory-month-query 16 · plugin-hardening 13 · events-index 8 · sdk-surface 全过 |
| 发布包验收 | 18 / 0 |
| eslint / tsc | 0 error / 0 |
安装
npm install -g agentworkshop
aw start本版 tarball 已随附(
agentworkshop-0.7.36.tgz),含预构建.output,npm 安装后直接启动、无需构建。