58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
"""演化候选领域纯逻辑(level 分类、自动应用策略、类型/作用域枚举)。
|
|
|
|
本模块是演化候选相关常量与纯谓词的单一源,禁止 IO。
|
|
枚举取值以 [契约字典](../../docs/contracts/contract-glossary.md) §12 为准。
|
|
"""
|
|
|
|
from app.models.evolution import EvolutionCandidate
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Level 常量与自动应用策略
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# 半自动应用的 level 范围(L0-L3 写入程序记忆/人格权重等轻量参数,L4 核心变更需人工审核)
|
|
AUTO_LEVELS: set[str] = {"L0", "L1", "L2", "L3"}
|
|
|
|
# 所有可选 level,按风险升序排列
|
|
LEVELS: tuple[str, ...] = ("L0", "L1", "L2", "L3", "L4")
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Type / Scope 枚举
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# 演化候选类型
|
|
TYPES: tuple[str, ...] = (
|
|
"personality",
|
|
"personality_weights",
|
|
"retrieval_strategy",
|
|
"tool_affinity",
|
|
"memory",
|
|
"tool_strategy",
|
|
"safety_rule",
|
|
"world_model",
|
|
"procedural",
|
|
"mood",
|
|
)
|
|
|
|
# 演化候选作用域
|
|
SCOPES: tuple[str, ...] = (
|
|
"character_scope",
|
|
"user_scope",
|
|
"task_scope",
|
|
"global_scope",
|
|
)
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# 策略谓词
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
def should_auto_apply(candidate: EvolutionCandidate) -> bool:
|
|
"""判断演化候选是否可半自动应用。
|
|
|
|
满足任一条件即可自动应用:
|
|
1. level 在 AUTO_LEVELS 范围内(L0-L3 低风险调整)
|
|
2. auto_apply_allowed 为 True(模型+系统共同判定允许自动应用)
|
|
"""
|
|
return candidate.level in AUTO_LEVELS or candidate.auto_apply_allowed
|