# 2026-06-28 MEXP03内置AI ## 用户目标 以 `Coder@mindraw-recovery` 身份领取 `P-20260626-ai-frame-workflow` 下 `MD-MEXP03-01`,完整实现 `M-体验03:Mindraw 内置 AI Frame MVP` 垂直切片。用户要求 App 内可见入口、单 Frame source 校验、prompt / 默认 prompt、本地 Alpha 响应生成器、复用既有 read / lease / controlled `createAiResultFrame` / save path、右侧避让、保存重开验证、自动化测试、本地 App smoke、QA 报告、`CODEGRAPH.md` / `INDEX.md` / changelog 决策、台账回写和会话记忆。 ## 已完成事项 - 新增 `src/lib/mindrawAiFrameWorkflow.ts`:内部 workflow facade,校验 active `.mindraw`、dirty / saving、无选择、多选、非 Frame,并编排 `mindrawGetLiveFrameContext`、`mindrawAcquireWriteLease`、`mindrawCommitWriteResult`、`mindrawReleaseWriteLease`。 - 新增 `src/components/AiFramePanel.tsx`:画布右上角 `AI Frame` 入口、prompt 输入、默认 prompt、运行 / 成功 / 错误状态。 - 更新 `src/components/ExcalidrawEditor.tsx` 和 `src/index.css`:挂载并样式化 AI Frame 控件。 - 新增 `src/lib/mindrawAiFrameWorkflow.test.ts`:覆盖成功写入、默认 prompt、非 `.mindraw`、无选择、多选、非 Frame、dirty 阻断、save failed dirty recovery。 - 新增 QA 报告和证据:`02-P/qa/mindraw-mexp03-ai-frame-mvp-check.md`、`02-P/qa/mindraw-mexp03-ai-frame-mvp.json`、`02-P/qa/mindraw-mexp03-smoke-after-save.png`、`02-P/qa/mindraw-mexp03-smoke-reopen-result-visible.png`。 - 同步 `CODEGRAPH.md`、`INDEX.md`、`CHANGELOG.md`。 - 回写 `02-P/plan-progress.markdown`:`MD-MEXP03-01` 标记完成,Progress Log 记录验证命令、证据路径、剩余风险和下一步 `PM-MEXP03-GATE`。 ## 关键决策 - 本轮不实现真实 AI provider release,使用 `mindraw-alpha-local` 本地 Alpha placeholder;result body 明确写入 `not a real AI provider release`。 - Dirty `.mindraw` 文档在 App 内 AI Frame 入口处直接阻断,要求用户先保存,避免把未保存编辑混入 Alpha 写入。 - 不新增写包路径,不直接手写 `.mindraw`;所有写入仍通过既有 controlled mutation 和 `saveTab()`。 - 不生成新 DMG、不递增版本号;`npm run tauri -- build --debug --bundles app` 产物只作为本地 QA debug App。 ## 验证结论 - `npm run test:run -- src/lib/mindrawAiFrameWorkflow.test.ts src/lib/mindrawAppWriteApi.smoke.test.ts src/lib/mindrawAppWriteMutation.test.ts src/lib/mindrawAppWriteLease.test.ts src/lib/mindrawAppReadApi.test.ts`:PASS,5 files / 41 tests。 - `npm run test:run -- src`:PASS,27 files / 209 tests。 - `npm run doctor:mindraw:test`:PASS,14 node:test tests。 - `npm run build`:PASS,仅既有 font resolve / chunk-size warnings。 - `npm run tauri -- build --debug --bundles app`:PASS,本地 QA debug App 在 `src-tauri/target/debug/bundle/macos/Mindraw.app`。 - `git diff --check`:PASS。 - `npm run test:run` 全量会误扫 `P1-Txtflowy/` 和 node:test 文件,出现 no-suite / P1 path 失败;已记录为非本轮 Mindraw 主项目验证范围。 ## App Smoke 安全副本:`/tmp/mindraw-mexp03-app-smoke-20260628070229/MEXP03-ai-frame-ui-smoke.mindraw`。 通过 debug App 内 `File > Open Mindraw Package...` 打开安全副本,选中 `frame_ai_annotation_001`,打开 `AI Frame`,输入 `Summarize this frame for a local MEXP03 UI smoke.`,点击 `Create result Frame`。UI 显示 `Saved AGC-20260628-070542-02`。磁盘复核 source Frame preserved,旧 result `x=840`,新 result `x=1640`,右侧避让成立;关闭重开后用 hand tool 横向拖拽可见新 result。 ## 文件变更 - `CHANGELOG.md` - `CODEGRAPH.md` - `INDEX.md` - `02-P/plan-progress.markdown` - `02-P/qa/mindraw-mexp03-ai-frame-mvp-check.md` - `02-P/qa/mindraw-mexp03-ai-frame-mvp.json` - `02-P/qa/mindraw-mexp03-smoke-after-save.png` - `02-P/qa/mindraw-mexp03-smoke-reopen-result-visible.png` - `src/components/AiFramePanel.tsx` - `src/components/ExcalidrawEditor.tsx` - `src/lib/mindrawAiFrameWorkflow.ts` - `src/lib/mindrawAiFrameWorkflow.test.ts` - `src/index.css` ## 未决问题 - 真实 AI provider、账号配置、云端计费、密钥管理、H8 / formal release、新 DMG、Phase 4 `.assets` 权威化均未做。 - `PM-MEXP03-GATE` 仍需 PM 按 gate checklist 做用户体验 Gate。 ## 后续建议 - PM 进入 `PM-MEXP03-GATE`,复核 QA 报告、截图、App smoke 路径和用户亲测步骤。 - 若 Gate 通过,再决定是否需要面向用户的验收候选包;那将触发版本号 / build / DMG / release manifest / tag 等发布规则。