Document the VSCode-like local-first product shape, demote Convex to a control-plane role, and retire stale architecture drafts. Add local workspace migration/export references plus smoke coverage for no-Convex managed workspace startup, local markdown title/body/options persistence, asset upload behavior, and Convex fixture export. Verification: git diff --cached --check; node scripts/check-local-first-convex-guard.js --staged; node scripts/task444-convex-workspace-export-local-fixture-smoke.js; node scripts/task166-local-first-managed-workspace-no-convex-smoke.js; node scripts/task167-local-markdown-title-body-options-no-convex-smoke.js
46 lines
1.7 KiB
Markdown
46 lines
1.7 KiB
Markdown
# 7-34 [done][bug] 页面 AI ACP Runtime 默认值回跳 Hermes v1
|
||
|
||
> 发现时间:2026-05-18
|
||
>
|
||
> 状态:`[done]`
|
||
>
|
||
> 关联主线:`07-ai`
|
||
|
||
## 1. 用户可见症状
|
||
|
||
页面 AI 面板中选择 `ACP · Reasonix` 后,会自动回跳到 `ACP · Hermes`。
|
||
|
||
用户期望:
|
||
|
||
- 默认 runtime 为 `ACP · Reasonix`
|
||
- 下拉仍可手动切换到 `ACP · Hermes`
|
||
|
||
## 2. 根因
|
||
|
||
页面 AI 的历史 runtime 语义仍把空 `acpRuntime` 当成旧 `Hermes HTTP` 默认值。当前主线已经退役 HTTP Hermes,但前端 session/localStorage 恢复、后端空 runtime 推导、以及 `/profiles` 尚未返回时的下拉渲染仍可能产生空 runtime。
|
||
|
||
空 runtime 进入旧逻辑后会被解释成 Hermes 路径,导致用户刚选择 Reasonix 后又被历史 session 或空 select value 覆盖。
|
||
|
||
## 3. 修复
|
||
|
||
- 前端 `pageAiAcpRuntime` 初始值改为 `reasonix`。
|
||
- localStorage 版本提升到 `3`,避免旧缓存把 active runtime 覆盖回 Hermes。
|
||
- session 创建、持久化、停止 run、发送 run 默认都写入 `reasonix`。
|
||
- 前端内置 `Reasonix / Hermes` 两个 ACP runtime fallback,`/profiles` 慢或失败时也不会渲染空 select。
|
||
- 后端空 `acpRuntime` 默认归入 ACP 默认 runtime,默认值为 `reasonix`;旧 HTTP proxy 只保留在显式兼容开关后。
|
||
|
||
## 4. 验证
|
||
|
||
新增回归约束:
|
||
|
||
```bash
|
||
cargo test --manifest-path rust/Cargo.toml -p mnote-web page_ai_acp_runtime_defaults_to_reasonix_and_keeps_hermes_switch -- --nocapture
|
||
```
|
||
|
||
覆盖:
|
||
|
||
- `pageAiAcpRuntime` 默认是 `reasonix`
|
||
- 下拉 options 固定包含 `reasonix` / `hermes`
|
||
- 不再包含旧的 `默认 (Hermes HTTP)` 空选项
|
||
- change handler 空值 fallback 到 `reasonix`
|