From 9ae3aba092d1e56c8047341117dbd4a5b44698d8 Mon Sep 17 00:00:00 2001 From: suzmii Date: Thu, 3 Sep 2026 14:35:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E5=B7=B2=E9=80=80=E5=BD=B9?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E6=B5=8B=E8=AF=95=E5=B9=B6=E8=A1=A5=E5=85=85?= =?UTF-8?q?=20Router=20=E8=B4=A6=E5=8F=B7=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 删除已移除 Skill 引用工具的遗留专用测试 补充 llm_router_account 表结构与用途说明 --- .../src-tauri/src/agent/direct_tools_mcp.rs | 22 ------------------- ...】server-rs与SpacetimeDB数据契约-2026-05-15.md | 7 ++++++ 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs index 031ab5474..30e3b0bea 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs @@ -1583,26 +1583,4 @@ mod tests { assert_eq!(response["isError"], true); assert!(response.to_string().contains("未审核字段")); } - - #[test] - fn skill_resource_tool_rejects_unreviewed_paths() { - let accepted = call_agc_read_skill_resource(&json!({ - "skillName": "agc-project-structure", - "relativePath": "references/structure-contract.md" - })); - assert_eq!(accepted["isError"], false); - assert!(accepted.to_string().contains("drive prefix")); - - let denied = call_agc_read_skill_resource(&json!({ - "skillName": "agc-project-structure", - "relativePath": "../../auth.json" - })); - assert_eq!(denied["isError"], true); - - let denied_windows_absolute = call_agc_read_skill_resource(&json!({ - "skillName": "agc-project-structure", - "relativePath": r"C:\temp\SKILL.md" - })); - assert_eq!(denied_windows_absolute["isError"], true); - } } diff --git a/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md b/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md index 72f4e7236..57843104c 100644 --- a/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md +++ b/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md @@ -639,6 +639,13 @@ Responses 的终态载荷既是工具调用的恢复源,也是正文的恢复 - 2026-09-02 修订:`/api/llm/responses` 与 `/api/llm/chat/completions` 在解析 Router 凭据和发起上游请求前先读取用户 `wallet_balance`;余额为 `0` 时直接返回 `409 MUD_POINTS_INSUFFICIENT`,不创建、续期或使用 Router 账号。余额读取失败同样失败关闭,返回泥点余额暂不可用。 - Windows 私有文件准备:AGC 自有 AppData、凭据目录和 `.agent` 运行态继续使用 managed 范围;用户通过原生选择器明确选中的项目根或文件,若 owner/DACL 仅因权限不足无法读取,则由一次性 UAC helper 在严格复核普通文件/目录、非 reparse/symlink、路径类型和目标 TokenUser 后接管并收紧为当前用户私有 DACL。项目放在当前 profile 之外(例如其他磁盘)不再因为路径位置被拒绝;未经过原生选择器或 AGC 项目根入口的内部路径仍不获得任意提权资格。 +### `llm_router_account` + +- Rust 结构体:`LlmRouterAccount` +- 源码:`server-rs/crates/spacetime-module/src/llm_router_account.rs` +- 作用:记录用户与官方 LLM Router 账号的稳定映射、账号生命周期、远端账号元数据、订阅检查状态、重试 / 对账状态和加密凭据版本。Router 明文 Key 仍只保存在 `external_api_key` 的加密字段中,账号读取和写入统一通过对应 procedure 与 `spacetime-client` facade 完成。 +- 索引:`by_llm_router_account_owner_route` 用于按 owner 与路由来源读取账号;`by_llm_router_account_status_next_retry` 用于按状态和下次重试时间扫描待对账账号。 + ### `error_report` - Rust 结构体:`ErrorReport`