From e1a481af46247fddc1df1d630100760b2bea7d80 Mon Sep 17 00:00:00 2001 From: shaw Date: Wed, 24 Sep 2025 23:22:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=8D=E6=A3=80=E6=B5=8B=E5=BC=95=E8=B5=B7=E7=9A=84compact?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/contents.js | 4 +++- src/validators/clients/claudeCodeValidator.js | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/utils/contents.js b/src/utils/contents.js index c8119c8d..6da5c83c 100644 --- a/src/utils/contents.js +++ b/src/utils/contents.js @@ -163,9 +163,11 @@ user: Where are errors from the client handled? assistant: Clients are marked as failed in the \`connectToServer\` function in src/services/process.ts:712. ` +const claudeOtherSystemPromptCompact = `You are a helpful AI assistant tasked with summarizing conversations.` module.exports = { haikuSystemPrompt, claudeOtherSystemPrompt1, - claudeOtherSystemPrompt2 + claudeOtherSystemPrompt2, + claudeOtherSystemPromptCompact } diff --git a/src/validators/clients/claudeCodeValidator.js b/src/validators/clients/claudeCodeValidator.js index 2aaf46b3..5a0655df 100644 --- a/src/validators/clients/claudeCodeValidator.js +++ b/src/validators/clients/claudeCodeValidator.js @@ -3,7 +3,8 @@ const { CLIENT_DEFINITIONS } = require('../clientDefinitions') const { haikuSystemPrompt, claudeOtherSystemPrompt1, - claudeOtherSystemPrompt2 + claudeOtherSystemPrompt2, + claudeOtherSystemPromptCompact } = require('../../utils/contents') const { simple: similaritySimple } = require('../../utils/text-similarity') @@ -88,7 +89,12 @@ class ClaudeCodeValidator { } const sys1 = similaritySimple(system1Text, claudeOtherSystemPrompt2, 0.5) - return sys1.passed + const sysCompact = similaritySimple(system1Text, claudeOtherSystemPromptCompact, 0.9) + if (!sys1.passed && !sysCompact.passed) { + return false + } + + return true } /** @@ -102,8 +108,10 @@ class ClaudeCodeValidator { const path = req.path || '' // 1. 先检查是否是 Claude Code 的 User-Agent - // 格式: claude-cli/1.0.86 (external, cli) - const claudeCodePattern = /^claude-cli\/[\d\.]+([-\w]*)?\s+\(external,\s*cli\)$/i + // 格式: claude-cli/1.0.86 (external, cli) sdk-cli sdk-py + + const claudeCodePattern = /^claude-cli\/[\d.]+(?:[-\w]*)?\s+\(external,\s*(?:cli|sdk-[a-z]+)\)$/i + if (!claudeCodePattern.test(userAgent)) { // 不是 Claude Code 的请求,此验证器不处理 return false