SQLite 持久连接 — sandbox 不再每次查询开关连接,改为 __init__ 时建连、close() 时释放
Explorer 的 system prompt 明确告知 sandbox 规则 — "每条 SQL 必须包含聚合函数或 LIMIT",减少 LLM 生成违规 SQL 浪费轮次 LLM 客户端单例 — 所有组件共享一个 openai.OpenAI 实例,不再各建各的 sanitize 顺序修复 — 小样本抑制放在 float round 之前,避免被 round 干扰 quick_detect 从 O(n²) 改为 O(n) — 按列聚合一次,加去重,不再对每行重复算整列统计 历史上下文实际生效 — get_context_for 的结果现在会注入到 Explorer 的初始 prompt 里,多轮分析时 LLM 能看到之前的发现
This commit is contained in:
38
core/config.py
Normal file
38
core/config.py
Normal file
@@ -0,0 +1,38 @@
|
||||
"""
|
||||
配置文件
|
||||
"""
|
||||
import os
|
||||
|
||||
# LLM 配置(兼容 OpenAI API 格式,包括 Ollama / vLLM / DeepSeek 等)
|
||||
LLM_CONFIG = {
|
||||
"api_key": os.getenv("LLM_API_KEY", "sk-c44i1hy64xgzwox6x08o4zug93frq6rgn84oqugf2pje1tg4"),
|
||||
"base_url": os.getenv("LLM_BASE_URL", "https://api.xiaomimimo.com/v1"),
|
||||
"model": os.getenv("LLM_MODEL", "mimo-v2-flash"),
|
||||
}
|
||||
|
||||
# 沙箱安全规则
|
||||
SANDBOX_RULES = {
|
||||
"max_result_rows": 1000,
|
||||
"round_floats": 2,
|
||||
"suppress_small_n": 5,
|
||||
"banned_keywords": [
|
||||
"SELECT *", "INSERT", "UPDATE", "DELETE",
|
||||
"DROP", "ALTER", "CREATE", "ATTACH", "PRAGMA",
|
||||
],
|
||||
"require_aggregation": True,
|
||||
}
|
||||
|
||||
# 项目根目录
|
||||
PROJECT_ROOT = os.path.dirname(os.path.dirname(__file__))
|
||||
|
||||
# 数据库路径
|
||||
DB_PATH = os.getenv("DB_PATH", os.path.join(PROJECT_ROOT, "demo.db"))
|
||||
|
||||
# Playbook 目录
|
||||
PLAYBOOK_DIR = os.getenv("PLAYBOOK_DIR", os.path.join(PROJECT_ROOT, "playbooks"))
|
||||
|
||||
# 图表输出目录
|
||||
CHARTS_DIR = os.getenv("CHARTS_DIR", os.path.join(PROJECT_ROOT, "charts"))
|
||||
|
||||
# 分析控制
|
||||
MAX_EXPLORATION_ROUNDS = int(os.getenv("MAX_ROUNDS", "6"))
|
||||
Reference in New Issue
Block a user