2026-07-21 05:13:05 +08:00
|
|
|
|
# [recycle] 7-1 [done] 页面 AI provider=hermes 仍命中旧 run route 导致 502
|
2026-05-14 15:10:33 +08:00
|
|
|
|
|
|
|
|
|
|
## 现象
|
|
|
|
|
|
|
|
|
|
|
|
- 当前 Rust 3000 页面壳里,页面 AI 默认 provider 是 `hermes`。
|
|
|
|
|
|
- 发送消息时仍请求旧 `/api/ai-agent/run`。
|
|
|
|
|
|
- Rust compat route 对显式 `provider=hermes` 返回 `ai_provider_bridge_unavailable`,HTTP 状态为 502。
|
|
|
|
|
|
|
|
|
|
|
|
## 复现证据
|
|
|
|
|
|
|
|
|
|
|
|
- 页面壳默认 provider:`rust/crates/mnote-web/src/ssr/pages/layout.rs`
|
|
|
|
|
|
- 页面 AI 发送旧 route:`fetch('/api/ai-agent/run')`
|
|
|
|
|
|
- 旧 route 注册:`rust/crates/mnote-web/src/routes/mod.rs`
|
|
|
|
|
|
- 502 来源:`rust/crates/mnote-web/src/routes/compat.rs`
|
|
|
|
|
|
- 可复跑 smoke:`scripts/task-hermes-page-ai-baseline-smoke.js`
|
|
|
|
|
|
|
|
|
|
|
|
## 归类
|
|
|
|
|
|
|
|
|
|
|
|
- owner:`07-ai`
|
|
|
|
|
|
- 根因:页面 AI UI 仍走旧 mnote-cli / compat 主链,而默认 provider 已切到 Hermes。
|
|
|
|
|
|
- 修复方向:页面 AI 主链改为同源 `/api/hermes/client/*`,旧 `/api/ai-agent/run` 只保留 legacy guard。
|
|
|
|
|
|
|
|
|
|
|
|
## 验收
|
|
|
|
|
|
|
|
|
|
|
|
- [x] 页面 AI 打开后创建或恢复 Hermes session。
|
|
|
|
|
|
- [x] 发送消息不再请求 `/api/ai-agent/run`。
|
|
|
|
|
|
- [x] 未配置 Hermes upstream 时返回稳定 `hermes_client_unconfigured`,不再出现旧 502。
|
|
|
|
|
|
- [x] 配置 Hermes upstream 后 run/event stream 由 Hermes 返回。
|
|
|
|
|
|
|
|
|
|
|
|
## 完成证据
|
|
|
|
|
|
|
|
|
|
|
|
- 代码主链:`rust/crates/mnote-web/src/ssr/pages/layout.rs` 已改为 `/api/hermes/client/sessions`、`/api/hermes/client/runs`、`/api/hermes/client/events/{run_id}`。
|
|
|
|
|
|
- 合同与路由:`rust/crates/mnote-web/src/routes/hermes_client.rs` 提供同源 Hermes client proxy。
|
|
|
|
|
|
- 测试:`cd /mnt/Data1T/mnote/rust && cargo test -p mnote-web hermes_ -- --nocapture`,14 passed。
|
|
|
|
|
|
- smoke:`MNOTE_UI_BASE_URL=http://127.0.0.1:3000 node scripts/task-hermes-page-ai-smoke.js` 通过,并拦截旧 `/api/ai-agent/run` 证明新页面 AI 主链未调用旧 route。
|
|
|
|
|
|
- 说明:2026-05-14 已在正式 `3000` 入口复跑 Hermes 页面 AI smoke 矩阵,旧 `/api/ai-agent/run` 只保留 410 retirement guard。
|