Coverage for config.py: 100%
27 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-29 02:55 +0800
« 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
4# 初始化并加载配置
5init_config()
6load_config()
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", "")
14# LLM 渠道:openai(默认)| vertex
15LLM_PROVIDER = os.getenv("LLM_PROVIDER", "openai")
17# Vertex AI 配置(Express API Key 方式)
18VERTEX_API_KEY = os.getenv("VERTEX_API_KEY", "")
20MAX_ITERATIONS = int(os.getenv("MAX_ITERATIONS", "50"))
22# 模型最大上下文窗口(token数)
23_MODEL_MAX_TOKENS = int(os.getenv("MODEL_MAX_TOKENS", "128000"))
25# 压缩配置
26# 超过 60% 触发压缩
27COMPRESS_THRESHOLD = int(_MODEL_MAX_TOKENS * 0.6)
29# 压缩后目标范围:摘要 + 短期记忆 = 20%~25% 上下文窗口
30COMPRESS_TARGET_MIN_RATIO = 0.20 # 最小 20%,避免压缩太短
31COMPRESS_TARGET_MAX_RATIO = 0.25 # 最大 25%,避免压缩效果差
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)))
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)))
42# Tavily API(网页搜索)
43TAVILY_API_KEY = os.getenv("TAVILY_API_KEY", "")
45# 心跳配置
46HEARTBEAT_ENABLED = os.getenv("HEARTBEAT_ENABLED", "true").lower() == "true"
47HEARTBEAT_INTERVAL = int(os.getenv("HEARTBEAT_INTERVAL", "3600")) # 默认 1 小时
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")