Files
proxycast/src-tauri
cosoandClaude Opus 4.5 61ef52eb40 perf: 优化 Kiro token 刷新机制,解决每次调用都刷新的性能问题
## 问题描述
修复 #48 - Kiro 每次 API 调用都会刷新 token,导致调用速度慢

## 根本原因
在 `call_provider_openai` 函数中,每次调用都执行 `kiro.refresh_token().await`,
即使 token 还有效,这导致:
- 每次调用增加 1-3 秒的 token 刷新延迟
- 不必要的网络请求
- AWS 刷新端点的额外负载

## 解决方案

### 1. 使用已有的 TokenCacheService
项目已经实现了完善的 token 缓存机制,但 OpenAI handler 没有使用。
现在修改为:
```rust
// 获取缓存的 token(自动处理过期和刷新)
let token = state.token_cache.get_valid_token(db, &credential.uuid).await
```

### 2. TokenCacheService 的智能特性
- ✅ Token 缓存到数据库
- ✅ 只在 token 过期或即将过期时刷新(50 分钟有效期)
- ✅ 双重检查锁定防止并发刷新
- ✅ 随机延迟避免刷新风暴
- ✅ 降级策略(使用源文件中的 accessToken)

### 3. 性能改进
- **首次调用**:需要刷新 token(约 1-3 秒)
- **后续调用**(token 有效期内):直接使用缓存(<10ms)
- **Token 即将过期**:后台自动刷新,不阻塞调用

## 影响范围
- 仅影响 Kiro OAuth 凭证的 OpenAI 格式 API 调用
- 其他 provider 和 Anthropic handler 已经使用正确的缓存机制
- 向后兼容,无需用户手动操作

## 测试
- [x] 编译通过
- [x] 代码格式化
- [x] 与 Anthropic handler 的实现保持一致

Closes #48

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 00:09:57 +08:00
..
2025-12-20 21:04:22 +07:00