feat:架构重构

This commit is contained in:
2026-10-01 23:08:06 -07:00
parent b82dc93404
commit 68588d1f92
74 changed files with 1131 additions and 3492 deletions
+7 -32
View File
@@ -40,38 +40,19 @@ class Settings:
default_factory=lambda: int(os.getenv("TYPESAFE_MAX_RETRIES", "2"))
)
# 意图门控使用选中项自身的概率,阈值需按真实语料校准
# 新建、修改会改动大屏,阈值较严;问答判错代价低,阈值较宽
intent_min_probability: float = field(
default_factory=lambda: float(os.getenv("INTENT_MIN_PROBABILITY", "0.7"))
)
# 意图门控:Jev 选中 qa 且概率达到阈值才走问答,其余都交给 screen agent;阈值按真实语料校准
intent_qa_min_probability: float = field(
default_factory=lambda: float(os.getenv("INTENT_QA_MIN_PROBABILITY", "0.5"))
)
# 同一问题最多澄清的轮数,用尽后不再追问
intent_max_clarify_rounds: int = field(
default_factory=lambda: int(os.getenv("INTENT_MAX_CLARIFY_ROUNDS", "1"))
)
# 动作自动修正次数,不含首次生成,0 表示不重试,与用户澄清轮数无关
max_action_retries: int = field(
default_factory=lambda: int(os.getenv("MAX_ACTION_RETRIES", "2"))
# screen agent 单次运行的模型调用上限,包括读取 skill、查询物料、提交修正和最终回复
max_agent_steps: int = field(
default_factory=lambda: int(os.getenv("MAX_AGENT_STEPS", "12"))
)
# 物料字段 MCP 服务:只给模型查询字段定义,只监听本机,随应用启动
mcp_material_url: str = field(
default_factory=lambda: (
os.getenv("MCP_MATERIAL_URL") or "http://127.0.0.1:8201/mcp"
)
)
# 单次字段查询的超时(秒)
# 单次 MCP 工具调用的超时(秒),服务列表见 mcp_servers.json
mcp_tool_timeout: float = field(
default_factory=lambda: float(os.getenv("MCP_TOOL_TIMEOUT", "5"))
)
# 生成动作或修正建议时,最多几轮查询字段,之后必须给出结果
max_field_tool_rounds: int = field(
default_factory=lambda: int(os.getenv("MAX_FIELD_TOOL_ROUNDS", "4"))
)
# 没有任何对话的空会话保留时长(秒),超时后视为不存在
conversation_empty_ttl: int = field(
@@ -126,18 +107,12 @@ class Settings:
raise ValueError("CONVERSATION_EMPTY_TTL 必须是正整数")
if self.conversation_history_turns < 0:
raise ValueError("CONVERSATION_HISTORY_TURNS 必须是非负整数")
if type(self.max_action_retries) is not int or self.max_action_retries < 0:
raise ValueError("MAX_ACTION_RETRIES 必须是非负整数")
if self.max_agent_steps < 1:
raise ValueError("MAX_AGENT_STEPS 必须是正整数")
if self.mcp_tool_timeout <= 0:
raise ValueError("MCP_TOOL_TIMEOUT 必须是正数")
if self.max_field_tool_rounds < 0:
raise ValueError("MAX_FIELD_TOOL_ROUNDS 必须是非负整数")
if not 0 <= self.intent_min_probability <= 1:
raise ValueError("INTENT_MIN_PROBABILITY 必须在 0 到 1 之间")
if not 0 <= self.intent_qa_min_probability <= 1:
raise ValueError("INTENT_QA_MIN_PROBABILITY 必须在 0 到 1 之间")
if self.intent_max_clarify_rounds < 0:
raise ValueError("INTENT_MAX_CLARIFY_ROUNDS 必须是非负整数")
settings = Settings()