Files
mnote/bugs/03-rust-web/done/3-15-trash-workbench-sse-pollms-risk-v1.md
T
lix-2026 bb2f190f50 feat: stabilize page AI ACP runtimes
实现并稳定页面 AI 的 ACP Hermes / ACP Reasonix 运行路径。

主要内容:

- 分离 profile 与 acpRuntime,ACP Hermes 按所选 Hermes profile 启动并注入 provider key。

- 修复 Reasonix ACP wrapper 的 API key 读取、ToolRegistry 注册、LoopEvent role 映射和 reasoning/final 分流。

- 修复 ACP agent_thought_chunk 被 untagged enum 误解析为 message.delta 的问题,补充 thought 相关单测。

- 补充页面 AI 浏览器验证 skill 证据到 7-15 设计稿,并记录严格验收标准。

- 同步提交当前仓库中已存在的 rust-web / Hermes tools / SSE / bug 文档相关改动。

验证:

- node --check scripts/reasonix-acp-wrapper.mjs

- cargo test -p mnote-web acp -- --nocapture

- 页面 AI ACP 浏览器验证:tmp/page-ai-acp-browser-UAYwyM/
2026-05-17 20:11:39 +08:00

2.1 KiB

3-15 [done] 垃圾箱 workbench 残留 pollMs=1000 触发 Convex query 风险

创建时间:2026-05-17

更新时间:2026-05-17

状态:done

问题

主页面树实时链路已在 57ec8322 切到 WebSocket push,但 /trash 渲染的垃圾箱 workbench 仍创建 EventSource('/api/tree/events') 并显式设置 pollMs=1000

这条路径不是首页主链路,但用户打开垃圾箱页面或弹窗后,仍可能把 /api/tree/events 带回 1 秒轮询语义,重新放大 Convex POST /api/query 压力。

处理方案

  1. /trash 渲染测试增加断言:垃圾箱 workbench 不得输出 pollMs=1000
  2. 修改垃圾箱 workbench 事件订阅,移除显式 pollMs=1000
  3. 保留 EventSource('/api/tree/events') 作为兼容刷新通道,让 Rust SSE route 使用当前 push-driven 默认行为。
  4. 运行 mnote-web 相关单测,确认渲染输出不再包含旧轮询参数。

处理结果

  • 已移除 rust/crates/mnote-web/src/routes/gateway.rs 中垃圾箱 workbench 的 url.searchParams.set('pollMs', '1000')
  • 已保留 /api/tree/events 事件通道,避免破坏垃圾箱打开后根据 tree event 刷新的兼容行为。
  • 已增加测试断言,确保 /trash?workspaceId=... HTML 不再输出 pollMs

验证

cargo test --manifest-path rust/Cargo.toml -p mnote-web routes::gateway::tests::trash_entry_renders_real_workspace_trash_workbench -- --nocapture

结果:1 passed

cargo test --manifest-path rust/Cargo.toml -p mnote-web routes::gateway::tests:: -- --nocapture

结果:18 passed

cargo test --manifest-path rust/Cargo.toml -p mnote-web routes::sse::tests::live_poll_query_drops_bridge_pagination_cursor -- --nocapture
cargo test --manifest-path rust/Cargo.toml -p mnote-web routes::sse::tests::sse_route_returns_workspace_snapshot_event -- --nocapture

结果:两个 SSE 单测均 1 passed

备注

整组 routes::sse::tests:: 批量运行时,两个长连接流测试超过 60 秒未自然结束,已中断;本次改动未触碰 SSE route 行为,已用相关短测试和 gateway 渲染测试覆盖本缺陷。