docs/backend-migration/notes/2026-05-07-webui-decouple-doc-review-followup.md
2026-05-07-webui-decouple-doc-review.md这轮修改已经解决了大部分关键冲突,尤其是下面几项已经明显收敛:
install-web.sh 统一成 | bashBackendBinaryResolver 改成按 isPackaged 分档.sha256 职责链基本闭环目前剩下的问题不算“方向错了”,而是局部文档没有同步到最新决策。 这 4 个问题建议继续修掉,否则后续 executor 或 plan-writer 仍可能被旧表述带偏。
M3 前文已经改成:
packages/web-host/src/auth/index.ts 承载对外公共 APIpackages/web-host/src/auth/session.ts 承载 session cookie 管理但“文件存在性”验收仍在检查旧清单:
packages/web-host/src/auth/login.tsauth/index.tsauth/session.ts这会导致两类问题:
2026-05-07-m3-web-host-skeleton-requirements.md 第 20-28 行2026-05-07-m3-web-host-skeleton-requirements.md 第 69-77 行把 M3 的文件存在性检查同步成与正文一致的结构,例如:
ls packages/web-host/package.json \
packages/web-host/tsconfig.json \
packages/web-host/src/index.ts \
packages/web-host/src/types.ts \
packages/web-host/src/backend-launcher.ts \
packages/web-host/src/static-server.ts \
packages/web-host/src/auth/index.ts \
packages/web-host/src/auth/config.ts \
packages/web-host/src/auth/session.ts
如果最终仍然希望保留 auth/login.ts,那就反过来把正文也改回去,重点是正文和验收不能出现两套结构。
restoreDesktopWebUIFromPreferences 还有旧表述残留大方向已经改对了:
packages/desktop/,只改内部调用”但还有两处旧表述没同步:
restoreDesktopWebUIFromPreferences 迁到 web-host 后”restoreDesktopWebUIFromPreferences 迁移”这类残留最容易误导后续的 plan-writer。 因为他通常会同时读“正文 + 风险 + 里程碑表”,一旦三个位置里有一个还写旧说法,就可能重新把职责边界写散。
2026-05-07-m6-three-paths-cutover-requirements.md 第 61 行2026-05-07-m6-three-paths-cutover-requirements.md 第 150 行2026-05-07-webui-decouple-electron-design.md 第 686 行2026-05-07-webui-decouple-electron-design.md 第 784 行把所有残留表述统一改成同一句意思:
restoreDesktopWebUIFromPreferences 不迁入 web-hostpackages/desktop/ 编排“是否恢复 / 何时恢复”startWebHost() 等能力也就是说,统一改成“保留在 desktop,内部改调 web-host”,不要再出现“迁移”这个词。
changePassword 的实现责任没有在 M5 明确落地现在契约层已经锁住了:
changePassword()auth/index.ts 中定义其签名但 M5 作为“auth 迁移”里程碑,动作清单仍然只显式列了:
config.tslogin.tsresetPassword.ts没有把 changePassword() / verifyPassword() 的实现归属明确写进 M5。
这会把一个本应在 M5 落地的 auth 能力,继续拖到 M6。 而 M6 已经是三条路径切换 + 老 webserver 删除的高风险里程碑,不应该再背 auth 功能补齐工作。
2026-05-07-webui-decouple-electron-design.md 第 364-399 行2026-05-07-m3-web-host-skeleton-requirements.md 第 204-217 行2026-05-07-m5-static-server-auth-migration-requirements.md 第 23-28 行2026-05-07-m6-three-paths-cutover-requirements.md 第 45-46 行直接在 M5 的“迁移 auth 模块”动作里补齐一条明确说明,例如:
auth/index.ts:对外导出 resetPassword() / changePassword() / verifyPassword()changePassword() 供桌面 preload 的 webuiChangePassword 在 M6 接线时直接复用重点是让 M5 明确成为“auth 能力落地”的里程碑,M6 只负责“把已有能力接上线”。
M9 文档虽然写了“容器验证(agent 本地可跑)”,但示例命令实际只是:
skipping in M9 local smoke这意味着表面上有“本地容器验证”,但实际上没有给 executor 一个可复制、可判定 PASS/FAIL 的本地验证路径。
结果会是:
2026-05-07-m9-install-web-script-requirements.md 第 100-115 行这里建议二选一,明确到底采用哪种验证模式:
方案 A: 本地提供可执行 smoke
--mirror 指向本地 mock HTTP server.sha256install-web.sh,最后校验 aionui-web --version方案 B: 明确本地不做强制验证
bash -n + --help + 可能的 unit 级脚本测试如果不准备补 mock mirror,我更建议方案 B,因为它更诚实,也更符合“机械化验证”的原则。
restoreDesktopWebUIFromPreferences 残留旧表述清理changePassword / verifyPassword 的实现责任如果只想最小成本收口这 4 个问题,可以这样改:
changePassword / verifyPassword做完这几步后,剩余问题基本都会从“文档冲突”降到“实现细节选择”。