mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 09:38:02 +00:00
feat: 实现 Claude Code headers 动态管理功能
- 创建 claudeCodeHeadersService 管理各账号的 Claude Code headers - 自动捕获成功请求的 headers 并按账号存储在 Redis - 智能版本管理,只保留最新版本的 headers - OpenAI 转发时根据账号动态获取对应的 headers - 添加管理端点查看和清除各账号的 headers 信息 - 完整支持 Claude Code 必需的 beta headers 解决了 "This credential is only authorized for use with Claude Code" 错误 避免了固定版本号带来的风控问题 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ const claudeAccountService = require('./claudeAccountService');
|
||||
const sessionHelper = require('../utils/sessionHelper');
|
||||
const logger = require('../utils/logger');
|
||||
const config = require('../../config/config');
|
||||
const claudeCodeHeadersService = require('./claudeCodeHeadersService');
|
||||
|
||||
class ClaudeRelayService {
|
||||
constructor() {
|
||||
@@ -128,6 +129,11 @@ class ClaudeRelayService {
|
||||
if (isRateLimited) {
|
||||
await claudeAccountService.removeAccountRateLimit(accountId);
|
||||
}
|
||||
|
||||
// 存储成功请求的 Claude Code headers
|
||||
if (clientHeaders && Object.keys(clientHeaders).length > 0) {
|
||||
await claudeCodeHeadersService.storeAccountHeaders(accountId, clientHeaders);
|
||||
}
|
||||
}
|
||||
|
||||
// 记录成功的API调用
|
||||
@@ -651,6 +657,11 @@ class ClaudeRelayService {
|
||||
if (isRateLimited) {
|
||||
await claudeAccountService.removeAccountRateLimit(accountId);
|
||||
}
|
||||
|
||||
// 存储成功请求的 Claude Code headers(流式请求)
|
||||
if (clientHeaders && Object.keys(clientHeaders).length > 0) {
|
||||
await claudeCodeHeadersService.storeAccountHeaders(accountId, clientHeaders);
|
||||
}
|
||||
}
|
||||
|
||||
logger.debug('🌊 Claude stream response with usage capture completed');
|
||||
|
||||
Reference in New Issue
Block a user