From 08af78aa83068c9b57612dd40188f419344e1268 Mon Sep 17 00:00:00 2001 From: iven Date: Thu, 16 Apr 2026 08:06:02 +0800 Subject: [PATCH] =?UTF-8?q?docs:=202026-04-16=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=20=E2=80=94=20=E5=8F=82=E6=95=B0=E5=90=8D?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20+=20=E8=A7=A3=E5=AF=86=E8=87=AA=E6=84=88?= =?UTF-8?q?=20+=20=E8=AE=BE=E7=BD=AE=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - known-issues.md: 新增 3 条修复记录 (Heartbeat参数/Relay解密/设置清理) - log.md: 追加 2026-04-16 变更日志 --- wiki/known-issues.md | 37 ++++++++++++++++++++++++++++++++++++- wiki/log.md | 13 ++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/wiki/known-issues.md b/wiki/known-issues.md index 79d8871..4c07972 100644 --- a/wiki/known-issues.md +++ b/wiki/known-issues.md @@ -1,6 +1,6 @@ --- title: 已知问题 -updated: 2026-04-15 +updated: 2026-04-16 status: active tags: [issues, bugs] --- @@ -38,6 +38,41 @@ tags: [issues, bugs] | V13-GAP-05 | Structured Data Source 无 Admin UI | ✅ Admin Knowledge 新增"结构化数据"Tab | | V13-GAP-06 | PersistentMemoryStore 遗留模块 | ✅ 全量移除 — persistent.rs 611→57 行 | +## Heartbeat 参数名修复 (2026-04-16) + +| 问题 | 级别 | 状态 | +|------|------|------| +| Tauri invoke 参数名 snake_case 错误 | P1 | ✅ 已修复 | + +**根因**: Tauri 2.x `#[tauri::command]` 默认 `rename_all = "camelCase"`,前端 invoke 必须用 camelCase(`agentId` 不是 `agent_id`)。`intelligence-client.ts` 中 3 处 invoke 调用使用了错误的 snake_case。 + +**修复**: commit `f6c5dd2` — 3 处参数名修正 + HealthPanel.tsx 恢复正确命名。 + +**教训**: 所有 Tauri invoke 调用的参数名必须用 camelCase,与 Rust 端 snake_case 参数名对应。参见 `browser-client.ts` 中已有的正确示例。 + +## Relay API Key 解密自愈 (2026-04-16) + +| 问题 | 级别 | 状态 | +|------|------|------| +| Provider Key 解密失败导致整个 relay 500 | P1 | ✅ 已修复 | + +**根因**: `key_pool.rs` 的 `select_best_key` 遍历 key 时,第一个解密失败的 key 就通过 `?` 直接返回 500,不会尝试下一个。如果 DB 中有旧的加密 key(密钥已变更),整个 relay 请求被阻断。重新保存只能临时解决,旧 key 仍在 DB 中。 + +**修复**: commit `b69dc61`: +- 解密失败时 `warn + continue` 跳到下一个 key +- 启动自愈 `heal_provider_keys()`: 逐个解密并重新加密,无法解密的标记 inactive + +**教训**: 密钥池选择应容错(skip bad keys),而不是 fail-fast。加密数据迁移应自动化。 + +## 设置页面清理 (2026-04-16) + +| 变更 | 说明 | +|------|------| +| 删除"用量统计"页面 | 与"订阅与计费"功能重复 | +| 删除"积分详情"页面 | 与"订阅与计费"功能重复 | + +commit `7dea456` — 移除 UsageStats + Credits 组件及菜单项。 + ## 三端联调测试 V2 (2026-04-15) 通过 Chrome DevTools MCP + Tauri MCP 实际界面操作验证。 diff --git a/wiki/log.md b/wiki/log.md index fdb2f34..6778f80 100644 --- a/wiki/log.md +++ b/wiki/log.md @@ -1,6 +1,6 @@ --- title: 变更日志 -updated: 2026-04-15 +updated: 2026-04-16 status: active tags: [log, history] --- @@ -9,6 +9,17 @@ tags: [log, history] > Append-only 操作记录。格式: `## [日期] 类型 | 描述` +## 2026-04-16 fix | Heartbeat 参数名 + Relay 解密自愈 + 设置清理 + +- **fix(heartbeat)**: Tauri invoke 参数名修正 snake_case → camelCase (`f6c5dd2`) + - intelligence-client.ts 3 处 invoke 调用: agentId/taskCount/totalEntries 等 + - 教训: Tauri 2.x 默认 rename_all=camelCase +- **fix(relay)**: API Key 解密失败自愈 — 启动迁移 + 容错跳过 (`b69dc61`) + - key_pool: 解密失败 skip 到下一个 key (不再 500) + - key_pool: heal_provider_keys() 启动自愈迁移 +- **chore(settings)**: 删除用量统计和积分详情页面 (`7dea456`) + - 与"订阅与计费"功能重复,-240 行 + ## 2026-04-15 feat | Heartbeat 统一健康系统 - **feat(runtime)**: health_snapshot.rs — 统一健康快照收集器 (LLM连接/记忆/会话/系统资源)