Files
mnote/bugs/07-ai/done/7-52-page-ai-target-picker-resource-target-gap-v1.md
lix-2026 1882db7681 收口 MNote P0 P1 P2 审查尾项
- 归档 OnlyOffice live bridge、Page AI、mindmap、design governance 与相关 bug 条目
- 补齐 MinerU OCR 后端 runtime 合同与 smoke/test 基线
- 收口 ChatOnly/Doubao、ObjectIdentity、Page Aggregate compat 与 runtime owner 文档口径

验证:
- cargo test --manifest-path rust/Cargo.toml -p mnote-web local_ocr -- --test-threads=1
- cargo test --manifest-path rust/Cargo.toml -p mnote-web onlyoffice_bridge -- --test-threads=1
- git diff --check
- git diff --cached --check
- codegraph index . --force && codegraph status .
- codegraph sync . && codegraph status .
2026-06-01 09:29:12 +08:00

4.5 KiB
Raw Permalink Blame History

7-52 Page AI target picker 与 resource target 仍未闭环

状态

  • 状态:done
  • Owner07-ai / Page AI sidebar runtime / Agent Target Resolver
  • 发现时间:2026-06-01

现象

Page AI 已经有 agent selector、contextRefs popover、targetPackageallowedFiles 基础输入。2026-06-01 已补上 page target、mindmap resource target、OnlyOffice resource target 与 raw local resource target 的 composer chip / picker / payload 冻结闭环;mindmap / raw file active_editor contextRef 均已携带 targetId / objectIdentity / resourceKind / assetId / relativePath。跨 workspace 多 target 的产品化确认继续由 design/07-ai/process/7-18-local-first-agent-file-editing-control-plane-v1.md 跟踪,不再由本文阻塞 target picker 收口。

证据

  • rust/crates/mnote-web/browser/sidebar-page-ai-runtime.js 已有 currentPageAiOpenEditorsSnapshot()currentPageAiEditorTarget()、target chip / picker 和 pageAiBuildAgentTargetPackage()
  • scripts/task502-page-ai-agent-selector-context-smoke.js 已覆盖 page target button / popover / chip,并通过 mock resourceEditors 覆盖 mindmap target 选择,断言 run payload 的 targetPackage.primaryTargetIdtargets[]resourceKind=mindmaprelativePath=maps/Task502.mindmap.jsonpolicy.writeRequiresExplicitTarget=true;同时断言 active_editor contextRef 携带 mindmap targetId / objectIdentity / resourceKind / assetId / relativePath
  • 2026-06-01 验证命令:MNOTE_UI_BASE_URL=http://127.0.0.1:3301 node scripts/task502-page-ai-agent-selector-context-smoke.js,截图:tmp/task502-page-ai-agent-selector-context-smoke/01-agent-selector-context.png
  • scripts/task453-local-folder-page-ai-changed-files-smoke.js 覆盖 target snapshot 冻结、跨 workspace 阻断、dirty buffer 阻断,但不是 target picker UI。
  • design/07-ai/process/7-18-local-first-agent-file-editing-control-plane-v1.md 仍把 target chip/picker、跨 workspace 多选确认、真实 agent 写入回收列为未完成。
  • OnlyOffice 工具层 session/scope 已有 task515 - task518 覆盖;task523-page-ai-onlyoffice-real-target-session-smoke.js 已补真实 Page AI target 到 onlyofficeSessionId / bridgeSessionId 的 UI 绑定。
  • mnote-mindmap skill 已注册,mindmap target 的 active_editor contextRef 已携带资源身份;task525-page-ai-mindmap-resource-target-smoke.js 已补真实 mindmap resource tab target / contextRefs 复测。
  • scripts/task520-page-ai-raw-resource-target-smoke.js 已补真实 raw local resource tab:打开 Page/notes.txt 后 Page AI target chip 指向 notes.txtrun payload 冻结 targetPackage.primaryTargetId=resource:file:{rootUri}:Page/notes.txtallowedFiles=["Page/notes.txt"],并断言 objectIdentity 不再退化成 [object Object]

影响

  • Page AI UI 已能清楚告诉用户当前 page / mindmap / OnlyOffice target。
  • Page AI target picker 已覆盖 page / mindmap / OnlyOffice / raw file 四类当前 P1 目标,不再退化为“当前页”语义。
  • 真实 agent 写入回收、跨 workspace 多 target 和 mindmap resource tab 自动注入的更大产品化项继续由 7-18 / 7-42 / 7-51 跟踪。

下一步建议

  • 若继续扩多目标选择,新增跨 workspace 多 target 确认 smoke,并归入 7-18
  • 若继续扩 mindmap 多目标或更细粒度 contextRefs,另拆 7-42 / 7-51 follow-up,不再由本文阻塞 target picker 收口。

验收

  • Page AI composer 可见 page target chip。
  • target picker 可在当前 page 与 mindmap resource tab 间切换。
  • run payload 冻结 page targetPackage.targets[0]
  • run payload 冻结 mindmap resource targetPackage.targets[0]
  • OnlyOffice target 不会把 A 页授权误用于 B session。
  • mindmap resource tab 可作为 resourceKind=mindmap target。
  • mindmap active_editor contextRef 携带 targetId / objectIdentity / resourceKind / assetId
  • raw file target 可从真实 resource tab 候选选择并冻结到 run payload。
  • 真实 mindmap resource tab target / contextRefs 已由 task525 覆盖。

本轮验证

  • node --check rust/crates/mnote-web/browser/sidebar-page-ai-runtime.js
  • node --check scripts/task520-page-ai-raw-resource-target-smoke.js
  • MNOTE_UI_BASE_URL=http://127.0.0.1:3301 node scripts/task520-page-ai-raw-resource-target-smoke.js
  • MNOTE_UI_BASE_URL=http://127.0.0.1:3301 MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3301 node scripts/task502-page-ai-agent-selector-context-smoke.js