实现并稳定页面 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/
2.1 KiB
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 压力。
处理方案
- 为
/trash渲染测试增加断言:垃圾箱 workbench 不得输出pollMs=1000。 - 修改垃圾箱 workbench 事件订阅,移除显式
pollMs=1000。 - 保留
EventSource('/api/tree/events')作为兼容刷新通道,让 Rust SSE route 使用当前 push-driven 默认行为。 - 运行
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 渲染测试覆盖本缺陷。