From 5a2199f9a957bbca0720eeca53dae7347b75e812 Mon Sep 17 00:00:00 2001 From: shaw Date: Tue, 23 Sep 2025 16:29:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20claude=E6=8F=90=E7=A4=BA=E8=AF=8D?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E9=80=BB=E8=BE=91=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/claudeRelayService.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/services/claudeRelayService.js b/src/services/claudeRelayService.js index 2c91b63f..7697a36d 100644 --- a/src/services/claudeRelayService.js +++ b/src/services/claudeRelayService.js @@ -26,7 +26,7 @@ class ClaudeRelayService { const userAgent = clientHeaders?.['user-agent'] || clientHeaders?.['User-Agent'] || '' const isClaudeCodeUserAgent = /^claude-cli\/[\d.]+\s+\(/i.test(userAgent) - // 检查系统提示词是否包含 Claude Code 标识 + // 检查系统提示词是否包含 Claude Code 标识(支持两种类型的提示词) const hasClaudeCodeSystemPrompt = this._hasClaudeCodeSystemPrompt(requestBody) // 只有当 user-agent 匹配且系统提示词正确时,才认为是真实的 Claude Code 请求 @@ -44,16 +44,17 @@ class ClaudeRelayService { return false } - // 处理数组格式 + // 处理数组格式 - 检查第一个元素 if (Array.isArray(requestBody.system) && requestBody.system.length > 0) { const firstItem = requestBody.system[0] - // 检查第一个元素是否包含 Claude Code 提示词 - return ( - firstItem && - firstItem.type === 'text' && - firstItem.text && - firstItem.text === this.claudeCodeSystemPrompt - ) + // 检查第一个元素是否包含 Claude Code 相关的提示词 + if (firstItem && firstItem.type === 'text' && firstItem.text) { + // Claude Code 的两种典型提示词开头 + return ( + firstItem.text.startsWith("You are Claude Code, Anthropic's official CLI for Claude.") || + firstItem.text.startsWith('Analyze if this message indicates a new conversation topic') + ) + } } return false