推进本地索引与 AI changed-files 审计
- 为本地工作区补充 search/backlinks/tags/resource 引用索引与 watcher 单文件刷新 - 在页面设置中增加索引页签,并展示本地反链、标签和 AI changed-files 审计 - 补充本地搜索与本地 AI changed-files 浏览器 smoke,并回填当前优先级 checklist
This commit is contained in:
+32
-25
@@ -118,7 +118,7 @@
|
||||
|
||||
补充验证:
|
||||
|
||||
- [x] `cargo fmt --check --all`
|
||||
- [x] `cargo fmt --check --all --manifest-path rust/Cargo.toml`
|
||||
- [x] `cargo test -p mnote-web document_shell_renders_local_markdown_with_same_sidebar_surfaces -- --nocapture`
|
||||
- [x] `cargo test -p mnote-web local_folder -- --nocapture`
|
||||
- [x] `npm run check:local-first-convex-guard`
|
||||
@@ -146,8 +146,9 @@
|
||||
- [x] run 结束后对比 root snapshot,生成 changed files。
|
||||
- [x] 对 markdown 文件生成简短 diff summary;大文件只记录 hash / size / path。
|
||||
- [x] 把审计事件落盘到 control-plane,不写进用户正文目录。
|
||||
- [ ] 在 AI 会话 UI 显示 changed files 列表,并可展开查看 diff 摘要。
|
||||
- 已接入:`run.completed.agentAudit.changedFiles` 会进入 `agent.changed_files` 工具卡并可展开查看;待真实浏览器 AI run smoke 验证后勾选。
|
||||
- [x] 在 AI 会话 UI 显示 changed files 列表,并可展开查看 diff 摘要。
|
||||
- 实现:`run.completed.agentAudit.changedFiles` 会进入 `agent.changed_files` 工具卡并显示 changed files 与 diff summary。
|
||||
- 验证:`PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome-stable node scripts/task453-local-folder-page-ai-changed-files-smoke.js`
|
||||
|
||||
建议验证:
|
||||
|
||||
@@ -157,9 +158,8 @@
|
||||
- 验证:`cargo test -p mnote-web hermes_tools_markdown_edit_shared_read -- --nocapture`
|
||||
- [x] 单测:MNote tool 本地写入归入同一 run audit,并标记 `origin=mnote_tool`。
|
||||
- 验证:`cargo test -p mnote-web hermes_tools_page_save_local_folder_writes_markdown_file -- --nocapture`
|
||||
- [ ] browser smoke:AI 修改一篇本地 markdown 后,会话面板显示 changed files。
|
||||
- 已验证 UI 展示链路:`PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome-stable node scripts/task-hermes-page-ai-smoke.js` 可渲染 mocked `run.completed.agentAudit.changedFiles` 的 `agent.changed_files` 工具卡。
|
||||
- 待补:真实 local_folder agent run 写入 `.md` 后,由后端审计事件驱动会话面板展示 changed files。
|
||||
- [x] browser smoke:AI 修改一篇本地 markdown 后,会话面板显示 changed files。
|
||||
- 验证:`PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome-stable node scripts/task453-local-folder-page-ai-changed-files-smoke.js` 覆盖本地 `README.md` 写入标记后,会话面板显示 `agent.changed_files`、`README.md` 与 diff 摘要。
|
||||
|
||||
补充验证:
|
||||
|
||||
@@ -182,14 +182,17 @@
|
||||
- 实现:单 workspace 本地索引落在授权 root 的 `.mnote/index/search-index.json`;control-plane index 只保留给后续跨 workspace / shared cache 总索引。
|
||||
- [x] 确认索引只扫描授权 root 内文件,不扫描用户未授权目录。
|
||||
- 实现:`/api/search/documents` 的 `local_folder` 分支先走 `ensure_local_workspace_read_access`,再对 canonical root 内 `.md` 文件重建索引。
|
||||
- [ ] 定义索引输入:markdown 正文、frontmatter、附件引用、mindmap / office resource metadata。
|
||||
- 已完成最小输入:markdown 正文、frontmatter `title/tags/mnote_id`、markdown 链接、双链、附件 / mindmap / office 文件引用;待补 mindmap / office 原生 metadata 索引。
|
||||
- [x] 定义索引输入:markdown 正文、frontmatter、附件引用、mindmap / office resource metadata。
|
||||
- 实现:输入覆盖 markdown 正文、frontmatter `title/tags/mnote_id`、markdown 链接、双链、附件引用、`.mindmap.json` 与 office 文件元数据。
|
||||
- 验证:`cargo test -p mnote-web local_search_index -- --nocapture`
|
||||
- [x] 定义索引输出:全文 search、backlinks、resource refs、tags、recent changes。
|
||||
- 实现:本地索引输出 `results` 与 `recentChanges`,结果包含全文命中、`backlinks`、`resourceRefs`、`tags`、`path`、`resourceType`。
|
||||
- 实现:本地索引输出 `results` 与 `recentChanges`,结果包含全文命中、`backlinks`、`resourceRefs`、`tags`、`path`、`resourceType`,并可返回 mindmap / office 资源元数据搜索结果。
|
||||
|
||||
### 4.2 索引更新
|
||||
|
||||
- [ ] 本地文件 watcher 事件触发增量索引。
|
||||
- [x] 本地文件 watcher 事件触发增量索引。
|
||||
- 实现:本地 markdown / mindmap / office watcher 事件会调用单文件索引更新 `refresh_local_search_index_for_path`,避免等到搜索时才重建。
|
||||
- 验证:`cargo test -p mnote-web watcher_event_refreshes_local_search_index_path -- --nocapture`
|
||||
- [x] 手动 refresh / resync 触发 root 全量索引。
|
||||
- 实现:`POST /api/search/local-index/refresh` 会在授权 root 内全量重建 `.mnote/index/search-index.json`。
|
||||
- 验证:`cargo test -p mnote-web search_local_index_refresh_rebuilds_authorized_root -- --nocapture`
|
||||
@@ -208,10 +211,10 @@
|
||||
- 实现:页面搜索请求携带 `sourceKind/rootUri`;`local_folder` 请求直接查本地索引,不先走 Convex runtime。
|
||||
- [x] 搜索结果显示文件路径、标题、命中片段和资源类型。
|
||||
- 实现:搜索结果行显示标题、命中片段、路径和 `resourceType` 标识;API 同步返回 `path/title/snippet/resourceType`。
|
||||
- [ ] 反链面板读取本地索引,不再依赖云端搜索。
|
||||
- 已完成数据源:`GET /api/search/local-index/backlinks` 从授权 root 本地索引读取反链;待挂接真实反链面板 UI。
|
||||
- [ ] 标签列表读取本地索引。
|
||||
- 已完成数据源:`GET /api/search/local-index/tags` 从授权 root 本地索引读取标签聚合;待挂接真实标签列表 UI。
|
||||
- [x] 反链面板读取本地索引,不再依赖云端搜索。
|
||||
- 实现:页面设置 drawer 新增“索引”页签,按当前授权 root 读取 `GET /api/search/local-index/backlinks`。
|
||||
- [x] 标签列表读取本地索引。
|
||||
- 实现:页面设置 drawer 新增“索引”页签,按当前授权 root 读取 `GET /api/search/local-index/tags`。
|
||||
|
||||
建议验证:
|
||||
|
||||
@@ -219,8 +222,12 @@
|
||||
- 验证:`cargo test -p mnote-web local_search_index -- --nocapture`
|
||||
- [x] 单测:附件 / mindmap / office 引用可生成 resource refs。
|
||||
- 验证:`cargo test -p mnote-web local_search_index -- --nocapture`
|
||||
- [x] 单测:mindmap / office 原生资源元数据可进入本地索引结果。
|
||||
- 验证:`cargo test -p mnote-web local_search_index -- --nocapture`
|
||||
- [x] browser smoke:新建页面后立即可搜索,重命名后搜索结果路径更新。
|
||||
- 验证:`PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome-stable node scripts/task452-local-search-index-browser-smoke.js`
|
||||
- [x] browser smoke:页面设置里的本地索引页签可显示反链和标签。
|
||||
- 验证:`PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome-stable node scripts/task452-local-search-index-browser-smoke.js`
|
||||
|
||||
补充验证:
|
||||
|
||||
@@ -369,15 +376,15 @@
|
||||
|
||||
后续每次持续推进本 checklist,至少执行与改动相关的子集;跨域改动需要执行完整包。
|
||||
|
||||
- [ ] `cargo fmt --check --all`
|
||||
- [ ] `cargo test -p mnote-web local_folder -- --nocapture`
|
||||
- [ ] `cargo test -p mnote-web local_access_policy -- --nocapture`
|
||||
- [ ] `cargo test -p mnote-web hermes_client_local_acp -- --nocapture`
|
||||
- [ ] `cargo test -p mnote-web tree_command -- --nocapture`
|
||||
- [ ] `cargo test -p mnote-web page_aggregate -- --nocapture`
|
||||
- [ ] `npm run check:local-first-convex-guard`
|
||||
- [ ] `git diff --check -- <changed-files>`
|
||||
- [ ] 影响 UI / 交互时补 browser smoke,并把脚本名写回对应阶段。
|
||||
- [x] `cargo fmt --check --all`
|
||||
- [x] `cargo test -p mnote-web local_folder -- --nocapture`
|
||||
- [x] `cargo test -p mnote-web local_access_policy -- --nocapture`
|
||||
- [x] `cargo test -p mnote-web hermes_client_local_acp -- --nocapture`
|
||||
- [x] `cargo test -p mnote-web tree_command -- --nocapture`
|
||||
- [x] `cargo test -p mnote-web page_aggregate -- --nocapture`
|
||||
- [x] `npm run check:local-first-convex-guard`
|
||||
- [x] `git diff --check -- <changed-files>`
|
||||
- [x] 影响 UI / 交互时补 browser smoke,并把脚本名写回对应阶段。
|
||||
|
||||
---
|
||||
|
||||
@@ -389,8 +396,8 @@
|
||||
- 证据:`node scripts/task450-admin-access-policy-ui-smoke.js`;`cargo test -p mnote-web admin_access_policy -- --nocapture`。
|
||||
- [x] P1 冲突处理 UI 完成,并覆盖 tiptap 保存与 agent 写回冲突。
|
||||
- 证据:`node scripts/task451-local-markdown-conflict-resolution-ui-smoke.js`;`cargo test -p mnote-web local_folder_documents_save_rejects_stale_expected_file_version -- --nocapture`。
|
||||
- [ ] P2 agent changed files / diff 审计完成,并能在 AI 会话 UI 查看。
|
||||
- [ ] P3 本地搜索 / 反链 / 资源引用索引完成最小闭环。
|
||||
- [x] P2 agent changed files / diff 审计完成,并能在 AI 会话 UI 查看。
|
||||
- [x] P3 本地搜索 / 反链 / 资源引用索引完成最小闭环。
|
||||
- [ ] P4 分享与同步闭环完成 read / write / ai capability 最小闭环。
|
||||
- [ ] P5 simplemindmap / office 资源模型完成 Resource Tree 产品化。
|
||||
- [ ] P6 Convex 导出到本地 workspace 有 dry run、备份、冲突报告和回滚。
|
||||
|
||||
Reference in New Issue
Block a user