From a5d4a01ad81e3d2fe6bda9db2edeeeb5abc849bc Mon Sep 17 00:00:00 2001 From: Vaayne Date: Sat, 20 Sep 2025 23:21:17 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20support=20claude=20code=20o?= =?UTF-8?q?auth=20and=20api=20key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/agents/services/claudecode/index.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/services/agents/services/claudecode/index.ts b/src/main/services/agents/services/claudecode/index.ts index df4444b839..8176ec5c9d 100644 --- a/src/main/services/agents/services/claudecode/index.ts +++ b/src/main/services/agents/services/claudecode/index.ts @@ -6,6 +6,7 @@ import { McpHttpServerConfig, Options, query, SDKMessage } from '@anthropic-ai/c import { loggerService } from '@logger' import { config as apiConfigService } from '@main/apiServer/config' import { validateModelId } from '@main/apiServer/utils' +import anthropicService from "@main/services/AnthropicService"; import { GetAgentSessionResponse } from '../..' import { AgentServiceInterface, AgentStream, AgentStreamEvent } from '../../interfaces/AgentStreamInterface' @@ -67,8 +68,19 @@ class ClaudeCodeService implements AgentServiceInterface { const apiConfig = await apiConfigService.get() // process.env.ANTHROPIC_AUTH_TOKEN = apiConfig.apiKey // process.env.ANTHROPIC_BASE_URL = `http://${apiConfig.host}:${apiConfig.port}` - process.env.ANTHROPIC_AUTH_TOKEN = modelInfo.provider.apiKey - process.env.ANTHROPIC_BASE_URL = modelInfo.provider.apiHost + const env = { + ...process.env, + ELECTRON_RUN_AS_NODE: '1', + } + + if (modelInfo.provider.authType === 'oauth') { + env['ANTHROPIC_AUTH_TOKEN'] = await anthropicService.getValidAccessToken() + env['ANTHROPIC_BASE_URL'] = 'https://api.anthropic.com' + } else { + env['ANTHROPIC_AUTH_TOKEN'] = modelInfo.provider.apiKey + env['ANTHROPIC_API_KEY'] = modelInfo.provider.apiKey + env['ANTHROPIC_BASE_URL'] = modelInfo.provider.apiHost + } // Build SDK options from parameters const options: Options = {