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/
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# 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`。
|
||||
|
||||
## 验证
|
||||
|
||||
```bash
|
||||
cargo test --manifest-path rust/Cargo.toml -p mnote-web routes::gateway::tests::trash_entry_renders_real_workspace_trash_workbench -- --nocapture
|
||||
```
|
||||
|
||||
结果:`1 passed`。
|
||||
|
||||
```bash
|
||||
cargo test --manifest-path rust/Cargo.toml -p mnote-web routes::gateway::tests:: -- --nocapture
|
||||
```
|
||||
|
||||
结果:`18 passed`。
|
||||
|
||||
```bash
|
||||
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` 渲染测试覆盖本缺陷。
|
||||
Reference in New Issue
Block a user