From 2d7d444803d83bbe126135fcb56875929b1094d3 Mon Sep 17 00:00:00 2001 From: starmen1265 Date: Fri, 13 Feb 2026 15:54:42 +0800 Subject: [PATCH] =?UTF-8?q?fix(kb-deep-analyzer):=20=E5=AD=90=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E4=BC=A0=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 _analyze_chunks_concurrent 中使用 _worker_env 保存环境变量 - 添加 init_worker() 初始化函数 - ThreadPoolExecutor 使用 initializer=init_worker 传递环境变量 --- skills/kb-deep-analyzer/deep_analyzer.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/skills/kb-deep-analyzer/deep_analyzer.py b/skills/kb-deep-analyzer/deep_analyzer.py index 9243007..59c62c1 100644 --- a/skills/kb-deep-analyzer/deep_analyzer.py +++ b/skills/kb-deep-analyzer/deep_analyzer.py @@ -702,6 +702,18 @@ class DeepAnalyzer: """ import concurrent.futures + # 确保环境变量在子线程中可用 + _worker_env = { + 'AI_API_KEY': os.environ.get('AI_API_KEY', ''), + 'AI_PROVIDER': os.environ.get('AI_PROVIDER', ''), + 'AI_MODEL': os.environ.get('AI_MODEL', ''), + 'AI_BASE_URL': os.environ.get('AI_BASE_URL', ''), + } + + def init_worker(): + """初始化 worker 线程的环境变量""" + os.environ.update(_worker_env) + result = AnalysisResult() CHUNK_MAX_CHARS = 3000 total_chars = len(text) @@ -778,7 +790,7 @@ class DeepAnalyzer: batch_tasks = [(i, batch_chunks[j], batch_times[j][0], batch_times[j][1]) for j, i in enumerate(range(batch_idx, batch_end))] - with concurrent.futures.ThreadPoolExecutor(max_workers=batch_size) as executor: + with concurrent.futures.ThreadPoolExecutor(max_workers=batch_size, initializer=init_worker) as executor: futures = {executor.submit(self._analyze_chunk, task[1], task[0] + 1, metadata): task[0] for task in batch_tasks}