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}