Coverage for config.py: 100%

27 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-03-29 02:55 +0800

1import os 

2from qrclaw.config_manager import init_config, load_config 

3 

4# 初始化并加载配置 

5init_config() 

6load_config() 

7 

8# Agent 配置 

9AGENT_NAME = os.getenv("AGENT_NAME", "QRClaw") 

10OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") 

11OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-4o") 

12OPENAI_BASE_URL = os.getenv("OPENAI_BASE_URL", "") 

13 

14# LLM 渠道:openai(默认)| vertex 

15LLM_PROVIDER = os.getenv("LLM_PROVIDER", "openai") 

16 

17# Vertex AI 配置(Express API Key 方式) 

18VERTEX_API_KEY = os.getenv("VERTEX_API_KEY", "") 

19 

20MAX_ITERATIONS = int(os.getenv("MAX_ITERATIONS", "50")) 

21 

22# 模型最大上下文窗口(token数) 

23_MODEL_MAX_TOKENS = int(os.getenv("MODEL_MAX_TOKENS", "128000")) 

24 

25# 压缩配置 

26# 超过 60% 触发压缩 

27COMPRESS_THRESHOLD = int(_MODEL_MAX_TOKENS * 0.6) 

28 

29# 压缩后目标范围:摘要 + 短期记忆 = 20%~25% 上下文窗口 

30COMPRESS_TARGET_MIN_RATIO = 0.20 # 最小 20%,避免压缩太短 

31COMPRESS_TARGET_MAX_RATIO = 0.25 # 最大 25%,避免压缩效果差 

32 

33# 摘要目标占 10% 上下文窗口 

34COMPRESS_SUMMARY_TARGET_TOKENS = int(_MODEL_MAX_TOKENS * 0.10) 

35# 摘要最大输出 token 数(LLM 的 max_tokens 参数上限) 

36COMPRESS_SUMMARY_MAX_TOKENS = int(os.getenv("COMPRESS_SUMMARY_MAX_TOKENS", str(COMPRESS_SUMMARY_TARGET_TOKENS * 2))) 

37 

38# 短期记忆占 12% 上下文窗口 

39COMPRESS_RECENT_TARGET_TOKENS = int(_MODEL_MAX_TOKENS * 0.12) 

40COMPRESS_RECENT_MAX_TOKENS = int(os.getenv("COMPRESS_RECENT_MAX_TOKENS", str(COMPRESS_RECENT_TARGET_TOKENS))) 

41 

42# Tavily API(网页搜索) 

43TAVILY_API_KEY = os.getenv("TAVILY_API_KEY", "") 

44 

45# 心跳配置 

46HEARTBEAT_ENABLED = os.getenv("HEARTBEAT_ENABLED", "true").lower() == "true" 

47HEARTBEAT_INTERVAL = int(os.getenv("HEARTBEAT_INTERVAL", "3600")) # 默认 1 小时 

48 

49# 日志配置 

50LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") 

51LOG_MAX_DAYS = int(os.getenv("LOG_MAX_DAYS", "30")) 

52LOG_TO_FILE = os.getenv("LOG_TO_FILE", "true").lower() == "true" 

53LOG_TO_CONSOLE = os.getenv("LOG_TO_CONSOLE", "true").lower() == "true" 

54# 控制台默认只显示 WARNING 及以上级别的日志,避免输出太多 

55LOG_CONSOLE_LEVEL = os.getenv("LOG_CONSOLE_LEVEL", "WARNING")