Skip to content

feat(providers): add provider usage queries#270

Merged
su-fen merged 18 commits into
Stack-Cairn:mainfrom
inkdust2021:codex/provider-usage-query
Jul 26, 2026
Merged

feat(providers): add provider usage queries#270
su-fen merged 18 commits into
Stack-Cairn:mainfrom
inkdust2021:codex/provider-usage-query

Conversation

@inkdust2021

@inkdust2021 inkdust2021 commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

功能

  • 在供应商配置页增加用量查询配置,支持余额、Coding Plan、通用模板、NewAPI 和自定义脚本模式
  • GUI 与 Gateway WebUI 保持同等配置入口、测试按钮、刷新状态、缓存展示和自动刷新行为
  • 通过 Gateway protobuf 桥接 WebUI 查询请求,由桌面端执行 API-only 查询;不引入 CLI 登录、OAuth 或本地账号文件读取

安全

  • 查询凭据只在桌面端持久化和执行,Gateway/WebUI 快照、设置同步、RPC 响应、错误和日志中均只保留配置状态
  • usageQuery.accessTokenusageQuery.secretAccessKey 和 secret side-channel 做递归脱敏/隔离
  • 自定义脚本模式需要显式确认;默认拒绝本地/私有/元数据网络地址,除非用户打开本地网络开关
  • 旧配置缺少 usageQuery 时保持兼容,不阻断供应商配置加载

测试

  • pnpm -C crates/agent-gui test:frontend:1238/1238 passed
  • pnpm -C crates/agent-gateway/web test:419/419 passed
  • pnpm -C crates/agent-gui build
  • pnpm -C crates/agent-gateway/web build
  • pnpm -C crates/agent-gui lintpnpm -C crates/agent-gateway/web lint:通过,保留现有 warning
  • node scripts/check-mirror.mjs:104 files passed
  • cargo fmt --manifest-path crates/agent-gui/src-tauri/Cargo.toml --check
  • git diff --check
  • Focused Rust settings/provider-usage 回归测试通过;完整 provider_usage Rust 测试中 2 个 listener 用例受当前沙箱禁止 TcpListener::bind 限制
  • make proto-check 未运行:本机缺少 buf
  • 未在本机交叉编译 Windows/Linux;rquickjs-sys 与跨平台打包交由 CI 验证

inkdust2021 and others added 15 commits July 24, 2026 20:17
解决与 main 的冲突(模型排序快照重构 × onTestUsage 注入),从合并后的
gateway.proto 用 buf 1.71.0 重新生成 gateway.pb.go 与 gateway_pb.ts
(buf lint 与对 main 的 breaking 检查通过);同时移除分支上的
docs/superpowers 过程规划文档。
将 usageQuery 的状态归约/协调器/hook 逻辑抽入 usageQueryCore.ts,
按镜像纪律加入 mirror-manifest 逐字节强制;两端 usageQuery.ts 只保留
平台传输适配(GUI 走 Tauri invoke,WebUI 走 Gateway WebSocket 桥接)。
providerUtils.ts 两端本已逐字节一致,一并入 manifest 防漂移。
@su-fen

su-fen commented Jul 26, 2026

Copy link
Copy Markdown
Member

维护者推送了两个提交,解决合入前的阻塞项:

2c8e08e — Merge main 解冲突 + proto 重生成 + 移除过程文档

  • 解决与 main 的全部冲突;ProvidersSection 两端按 main 的模型排序快照重构(applyModelOrderSnapshot)收敛,保留本 PR 的 onTestUsage 注入
  • 用 buf 1.71.0(mise 钉栓版本)从合并后的 gateway.proto 重新生成 gateway.pb.go / gateway_pb.ts;buf lint 与对 main 的 breaking 检查通过;ProviderUsage 字段号 93/94 与 main 新增的 SSH local forward 消息无冲突
  • 移除 docs/superpowers/ 过程规划文档与 AGENTS.md 往返(树级,历史提交保留)

3ec4725 — 镜像纪律

  • usageQuery.ts 拆出逐字节镜像的 usageQueryCore.ts(状态归约/协调器/hook),两端只保留传输适配层(GUI: Tauri invoke / WebUI: Gateway WS);usageQueryCore.ts 与本已一致的 providerUtils.ts 加入 mirror-manifest

验证(本机 darwin):GUI 前端 1301/1301、WebUI 462/462、Go ./... 全绿;两端 lint 仅存量 warning;check-mirror 111 files passed;cargo fmt --checkgit diff --check 通过;Rust provider_usage 26/26(含原先受沙箱限制的 2 个 listener 用例:重定向不跟随、超大 Content-Length 拒绝)、settings 44/44、gateway 54/54。

剩余关注点:等 CI 验证 Windows/Linux 交叉构建(rquickjs-sys 为新增原生依赖)。

su-fen added 3 commits July 26, 2026 22:07
用量查询表单 6 个输入框(script/baseUrl/accessToken/userId/
accessKeyId/secretAccessKey)在 setState 更新器回调体内读
event.currentTarget.value;React 派发结束后 currentTarget 置 null,
dev StrictMode 双调用更新器时第二次执行即崩(输入即报错)。
改为先同步取值存局部变量再入更新器,与同文件 autoRefreshMinutes
及模型编辑处的既有修复范式一致;两端同改。
…feedback

1. 移除"允许本地网络地址"开关:本地/私网与公网地址、http 与 https
   默认均可查询(仍拒绝 URL 内嵌凭据与非 HTTP 协议,标准模板仍限
   Base URL 同源,内置适配器仍限 HTTPS);出网统一走应用代理配置
   (system_proxy async builder,显式 no_proxy 语义,代理未启用即直连,
   配置无效 fail fast),原 DNS 钉扎/私网地址过滤随门控一并移除。
2. 自动刷新固定 5 分钟:usageQueryCore 常量化 AUTO_REFRESH_INTERVAL_MS,
   移除 autoRefreshMinutes 配置字段(schema/规范化/默认值/UI 同步清理,
   旧配置多余字段由 serde/normalize 静默忽略)。
3. 测试查询内联反馈:模态框内新增 running/success/error 状态面板,
   展示条目、错误与空数据提示;测试实刷后卡片改走 hydrateProvider
   缓存补水,不再重复请求上游;按钮查询期间禁用并旋转图标。

两端(GUI/WebUI)同步修改;i18n 删除旧开关与刷新间隔文案,新增测试
反馈文案。
查询方式移除"余额适配器":Rust 删除 balance 模式分支与
DeepSeek/StepFun/SiliconFlow/OpenRouter/Novita 六家适配器及其
提取器与测试;保留自定义脚本、通用模板、NewAPI、Coding Plan 四项。
默认查询方式改为自定义脚本;历史配置中的 "balance" 与未知值在
规范化时统一回退 custom(桌面端存量 JSON 未重写前由 Rust 的
Unsupported mode 错误兜底)。两端下拉选项按 自定义/通用/NewAPI/
Coding Plan 重排,i18n 删除余额适配器文案。
@su-fen
su-fen merged commit 47cb966 into Stack-Cairn:main Jul 26, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants