53 lines
4.5 KiB
Markdown
53 lines
4.5 KiB
Markdown
# 7-52 Page AI target picker 与 resource target 仍未闭环
|
||||
|
|
|
|||
|
|
## 状态
|
|||
|
|
|
|||
|
|
- 状态:done
|
|||
|
|
- Owner:07-ai / Page AI sidebar runtime / Agent Target Resolver
|
|||
|
|
- 发现时间:2026-06-01
|
|||
|
|
|
|||
|
|
## 现象
|
|||
|
|
|
|||
|
|
Page AI 已经有 agent selector、contextRefs popover、`targetPackage` 和 `allowedFiles` 基础输入。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.primaryTargetId`、`targets[]`、`resourceKind=mindmap`、`relativePath=maps/Task502.mindmap.json`、`policy.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.txt`,run payload 冻结 `targetPackage.primaryTargetId=resource:file:{rootUri}:Page/notes.txt`,`allowedFiles=["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 收口。
|
|||
|
|
|
|||
|
|
## 验收
|
|||
|
|
|
|||
|
|
- [x] Page AI composer 可见 page target chip。
|
|||
|
|
- [x] target picker 可在当前 page 与 mindmap resource tab 间切换。
|
|||
|
|
- [x] run payload 冻结 page `targetPackage.targets[0]`。
|
|||
|
|
- [x] run payload 冻结 mindmap resource `targetPackage.targets[0]`。
|
|||
|
|
- [x] OnlyOffice target 不会把 A 页授权误用于 B session。
|
|||
|
|
- [x] mindmap resource tab 可作为 `resourceKind=mindmap` target。
|
|||
|
|
- [x] mindmap `active_editor` contextRef 携带 `targetId` / `objectIdentity` / `resourceKind` / `assetId`。
|
|||
|
|
- [x] raw file target 可从真实 resource tab 候选选择并冻结到 run payload。
|
|||
|
|
- [x] 真实 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`
|