Wesley Liddick
|
b9d53647bd
|
Merge pull request #727 from xilu0/main
fix: 修复 Claude API 400 错误:tool_result/tool_use 不匹配问题
|
2025-11-30 08:13:43 -05:00 |
|
github-actions[bot]
|
a872529b2e
|
chore: sync VERSION file with release v1.1.215 [skip ci]
v1.1.215
|
2025-11-29 13:31:00 +00:00 |
|
shaw
|
dfee7be944
|
fix: 调整gemini-api BaseApi后缀以适配更多端点
|
2025-11-29 21:30:28 +08:00 |
|
github-actions[bot]
|
392601efd5
|
chore: sync VERSION file with release v1.1.215 [skip ci]
|
2025-11-29 09:51:09 +00:00 |
|
Dave
|
249e256360
|
fix: 修复 Claude API 400 错误:tool_result/tool_use 不匹配问题
错误信息:
messages.14.content.0: unexpected tool_use_id found in tool_result blocks: toolu_01Ekn6YJMk7yt7hNcn4PZxtM.
Each tool_result block must have a corresponding tool_use block in the previous message.
根本原因:
文件: src/services/claudeRelayService.js 中的 _enforceCacheControlLimit() 方法
原实现问题:
1. 当 cache_control 块超过 4 个时,直接删除整个内容块(splice)
2. 这会删除 tool_use 块,导致后续的 tool_result 找不到对应的 tool_use_id
3. 也会删除用户的文本消息,导致上下文丢失
重要背景(官方文档确认)
根据 Claude API 官方文档:
- 最多可定义 4 个 cache_control 断点
- 如果超过限制,API 不会报错,只是静默地忽略多余的断点
- "20 个块回溯窗口" 是缓存命中检查的范围,与断点数量限制无关
因此,这个函数的原始设计(删除内容块)是不必要且有害的。
修复方案:
保留函数但修改行为:只删除 cache_control 属性,保留内容本身
修改位置;
文件: src/services/claudeRelayService.js
修改内容:
将 removeFromMessages() 和 removeFromSystem() 函数从"删除整个内容块"改为"只删除 cache_control 属性":
// 修改前:直接删除整个内容块
message.content.splice(contentIndex, 1)
// 修改后:只删除 cache_control 属性,保留内容
delete contentItem.cache_control
效果对比;
| 场景 | 修复前 | 修复后 |
|------------|----------------|----------------|
| 用户文本消息 | ❌ 整个消息被删除 | ✅ 保留消息,只移除缓存标记 |
| tool_use 块 | ❌ 被删除导致 400 错误 | ✅ 保留完整内容 |
| system 提示词 | ❌ 整个提示词被删除 | ✅ 保留提示词内容 |
| 缓存功能 | ⚠️ 强制限制 | ✅ 降级(不缓存但内容完整) |
|
2025-11-29 17:50:45 +08:00 |
|
github-actions[bot]
|
876b126ce0
|
chore: sync VERSION file with release v1.1.214 [skip ci]
v1.1.214
|
2025-11-29 06:13:56 +00:00 |
|
shaw
|
6ec4f4bf5b
|
fix: 修复claude console账号Test未响应的的bug
|
2025-11-29 14:13:28 +08:00 |
|
shaw
|
326adaaeca
|
fix: 修复Openai-api账户分组调度设置问题
|
2025-11-29 14:12:42 +08:00 |
|
shaw
|
d89344ad87
|
fix: 修复Gemini-api账户分组调度设置不生效的问题
|
2025-11-29 14:11:58 +08:00 |
|
shaw
|
68f003976e
|
style: 优化表格显示固定列宽
|
2025-11-29 11:20:07 +08:00 |
|
shaw
|
63a7c2514b
|
fix: 修复gemini-api账户共享池无法调度问题
|
2025-11-29 10:02:51 +08:00 |
|
github-actions[bot]
|
c6a7771b81
|
chore: sync VERSION file with release v1.1.213 [skip ci]
v1.1.213
|
2025-11-28 09:17:29 +00:00 |
|
shaw
|
b58b8b1ac7
|
feat: 支持apikey测试claude端点
|
2025-11-28 17:16:37 +08:00 |
|
shaw
|
53553c7e76
|
fix: 修复gemini api类型账户绑定显示问题
|
2025-11-28 16:33:31 +08:00 |
|
shaw
|
4a0ba6ed63
|
fix: 修复gemini api账户转发的传参问题
|
2025-11-28 16:20:26 +08:00 |
|
shaw
|
28caa93d99
|
feat: 重新支持apikey费用排序功能
|
2025-11-28 15:32:50 +08:00 |
|
shaw
|
d9476230c6
|
fix: 修复apikey窗口限制时间显示异常的问题
|
2025-11-28 14:02:58 +08:00 |
|
shaw
|
49645e8a50
|
feat: 增强claude转发特征模拟
|
2025-11-28 13:54:42 +08:00 |
|
shaw
|
7db70e2dc0
|
feat: 为claude类型账号增加测试功能
|
2025-11-28 10:51:01 +08:00 |
|
shaw
|
fd2b8a0114
|
refacto: 重构admin.js
|
2025-11-27 22:16:45 +08:00 |
|
shaw
|
851809a132
|
Merge branch 'xilu0/main'
|
2025-11-27 20:41:37 +08:00 |
|
shaw
|
4aeb47062b
|
fix: droid增加comm端点
|
2025-11-27 20:38:50 +08:00 |
|
github-actions[bot]
|
0c124ef37b
|
chore: sync VERSION file with release v1.1.212 [skip ci]
|
2025-11-27 02:57:21 +00:00 |
|
Dave King
|
94ff095754
|
fix: 修复Redis映射表竞态条件导致API Key临时失效问题
问题:编辑API Key后立即使用时会偶现(概率1%)报"API密钥已过期"错误,
一会儿后自动恢复。这是因为updateApiKey()方法未传递hashedKey参数给
setApiKey(),导致映射表未更新而主数据已更新的不一致状态。
修复:
- updateApiKey()传递keyData.apiKey(hashedKey)给setApiKey()
- 确保每次更新API Key时映射表也被同步更新
- 添加日志记录帮助监控映射表问题
细节:
1. updateApiKey(): 传递hashedKey参数确保映射表一致性
2. validateApiKey(): 添加警告日志检测映射表缺失
3. updateApiKey(): 增强日志记录"hashMap updated"
这解决了Redis双重存储(apikey:{id}和apikey:hash_map)的
竞态条件问题。
Fix: #API-Key-Expiry-Race-Condition
|
2025-11-27 10:56:58 +08:00 |
|
github-actions[bot]
|
291642d8ff
|
chore: sync VERSION file with release v1.1.211 [skip ci]
|
2025-11-26 11:45:41 +00:00 |
|
shaw
|
89238818eb
|
fix: 修复apikeys页面状态排序失效的问题
|
2025-11-26 19:45:15 +08:00 |
|
shaw
|
4d21c85f83
|
fix: claude转发移除x-authorization 头
|
2025-11-26 19:38:28 +08:00 |
|
github-actions[bot]
|
9179776688
|
chore: sync VERSION file with release v1.1.210 [skip ci]
|
2025-11-26 02:24:25 +00:00 |
|
shaw
|
8d07672ac5
|
fix: 复制完整Claude配置按钮增加export
|
2025-11-26 10:23:19 +08:00 |
|
shaw
|
3fb874fc29
|
feat: admin-next/api-stats查询被禁用的key增加名字显示
|
2025-11-26 10:18:43 +08:00 |
|
shaw
|
6e95607285
|
fix: 修复apikeys页面窗口限制显示错误的bug
|
2025-11-26 10:09:58 +08:00 |
|
github-actions[bot]
|
86cf907f3b
|
chore: sync VERSION file with release v1.1.209 [skip ci]
|
2025-11-25 12:53:08 +00:00 |
|
shaw
|
919501a2f1
|
Merge branch 'fix/gemini-projectid-fallback' into dev
|
2025-11-25 20:44:48 +08:00 |
|
shaw
|
dea6964116
|
fix: 修复apikeys页面部分bug
|
2025-11-25 20:38:52 +08:00 |
|
曾庆雷
|
b619208970
|
修复:移除请求参数 projectId 降级,改为实时获取
根本原因:请求参数中的 projectId 是客户端缓存的,属于之前账户,
导致账户切换后使用错误的 projectId,返回 403 权限错误。
修改内容:
1. 移除对 request.project 的降级依赖
2. 当账户无 projectId 和 tempProjectId 时,实时调用 loadCodeAssist
3. 获取后缓存到 tempProjectId 供后续请求使用
4. 如果仍无法获取,返回 403 配置错误
影响端点:
- /v1internal:generateContent
- /v1internal:streamGenerateContent
|
2025-11-25 19:32:38 +08:00 |
|
曾庆雷
|
e0500f0530
|
修复:Gemini OAuth 账户 projectId 降级逻辑缺失
修复 3 个端点未使用 tempProjectId 的问题:
- /messages
- /v1internal:generateContent
- /v1internal:streamGenerateContent
优先级链:projectId -> tempProjectId -> 请求参数 -> null
|
2025-11-25 19:06:55 +08:00 |
|
github-actions[bot]
|
255b3a0a0d
|
chore: sync VERSION file with release v1.1.208 [skip ci]
|
2025-11-25 07:03:21 +00:00 |
|
shaw
|
22fbabbc47
|
fix: 优化apikeys页面加载速度
|
2025-11-25 15:01:15 +08:00 |
|
github-actions[bot]
|
82e63ef55b
|
chore: sync VERSION file with release v1.1.207 [skip ci]
|
2025-11-25 02:54:48 +00:00 |
|
shaw
|
25f455ac1c
|
fix: 适配claude新的usage接口
|
2025-11-25 10:54:21 +08:00 |
|
shaw
|
a4dcfb842e
|
refactor: 重构gemini转部分
|
2025-11-25 10:30:39 +08:00 |
|
github-actions[bot]
|
fab2df0cf5
|
chore: sync VERSION file with release v1.1.206 [skip ci]
|
2025-11-24 06:49:37 +00:00 |
|
shaw
|
8f2cf211de
|
fix: 修复gemini重置状态按钮未显示的问题
|
2025-11-24 14:49:12 +08:00 |
|
github-actions[bot]
|
6ebe7d0250
|
chore: sync VERSION file with release v1.1.205 [skip ci]
|
2025-11-24 02:54:15 +00:00 |
|
shaw
|
a0a7aae28e
|
fix: 暂时移除gemini 的429处理
|
2025-11-24 10:53:51 +08:00 |
|
github-actions[bot]
|
691b492bc7
|
chore: sync VERSION file with release v1.1.204 [skip ci]
|
2025-11-23 15:25:42 +00:00 |
|
shaw
|
8e09eb227e
|
chore: release v1.1.204 [force release]
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-23 23:25:20 +08:00 |
|
shaw
|
c7276f10b8
|
feat: 增加Claude Code 调用 Gemini 3 模型说明
|
2025-11-23 23:21:45 +08:00 |
|
shaw
|
7706d3480d
|
fix: 修复codex的ua正则条件
|
2025-11-23 22:51:56 +08:00 |
|
shaw
|
53d2f1ff9b
|
fix: 更新codex默认提示词
|
2025-11-23 22:41:24 +08:00 |
|