diff --git a/src/api-server.js b/src/api-server.js index 0061c66..ec90792 100644 --- a/src/api-server.js +++ b/src/api-server.js @@ -628,6 +628,16 @@ function createRequestHandler(config) { })); } + // Ignore count_tokens requests + if (path.includes('/count_tokens')) { + console.log(`[Server] Ignoring count_tokens request: ${path}`); + res.writeHead(200, { 'Content-Type': 'application/json' }); + return res.end(JSON.stringify({ + tokens: 0, + message: 'Token counting is not supported' + })); + } + if (!isAuthorized(req, requestUrl, currentConfig.REQUIRED_API_KEY)) { res.writeHead(401, { 'Content-Type': 'application/json' }); return res.end(JSON.stringify({ error: { message: 'Unauthorized: API key is invalid or missing.' } })); diff --git a/src/claude/claude-kiro.js b/src/claude/claude-kiro.js index 719fa5c..7de00c3 100644 --- a/src/claude/claude-kiro.js +++ b/src/claude/claude-kiro.js @@ -859,6 +859,13 @@ async initializeAuth(forceRefresh = false) { async generateContent(model, requestBody) { if (!this.isInitialized) await this.initialize(); + + // 检查 token 是否即将过期,如果是则先刷新 + if (this.isExpiryDateNear()) { + console.log('[Kiro] Token is near expiry, refreshing before generateContent request...'); + await this.initializeAuth(true); + } + const finalModel = MODEL_MAPPING[model] ? model : this.modelName; console.log(`[Kiro] Calling generateContent with model: ${finalModel}`); const response = await this.callApi('', finalModel, requestBody); @@ -886,6 +893,13 @@ async initializeAuth(forceRefresh = false) { // 重构2: generateContentStream 调用新的普通async函数 async * generateContentStream(model, requestBody) { if (!this.isInitialized) await this.initialize(); + + // 检查 token 是否即将过期,如果是则先刷新 + if (this.isExpiryDateNear()) { + console.log('[Kiro] Token is near expiry, refreshing before generateContentStream request...'); + await this.initializeAuth(true); + } + const finalModel = MODEL_MAPPING[model] ? model : this.modelName; console.log(`[Kiro] Calling generateContentStream with model: ${finalModel}`);