# 决策分工与验证边界(0.2.1) 运行链路只有一条:桥接状态 → `combat` 已知/未知事实 → `planning` 候选 → `decision` 决策 → `dispatch` 发送与结算。单步和 `plan` 共用发送事务。DSH 插件只注册工具。 | 情况 | 处理方式 | |---|---| | 动画或动作队列尚未结束 | 程序等待,不问模型 | | 可证明的斩杀或唯一保命动作 | 在策略约束内由程序执行 | | 多个有意义的战术选项 | Jev 一次选择,保留结束回合、目标和未知牌的单步选项 | | 有可靠后果的短序列 | 加入候选;选中后逐张读回,不在牌间重新问模型 | | 抽牌、随机结果或选择弹窗 | 停止当前前缀,读取新信息;通常仍可由 Jev 局部重排 | | 低置信度、陌生意图、战略取舍 | 返回主模型;不重复采样来提高置信度 | | 动作结果不明或预测偏离 | 持久停止,不自动重发 | ## 主模型接管后 真实桥接目前只有幕、楼层和进阶等级,没有可靠整局 ID。因此默认把策略与 `expected_state_id` 一起传给 `spire_battle`,只在这一次调用内生效,不写文件,不跨调用或跨局复用。条件失效立即交回主模型,不能默默撤掉约束继续打。 `order` 约束候选菜单,不能替主模型直接选牌;它也不是自动执行的卡牌顺序。未匹配时返回待决策。重复状态缓存同时包含策略的实际条件、失效条件和候选约束:改变名称不能绕过缓存,实际新策略则允许一次新判断。见 [操作合同](AGENT.md)。 ## 计算能力边界 精确前缀目前只支持完整的纯伤害/纯格挡描述、明确整数能量费用,以及已支持的环境。未知能力、未知遗物、附加星星费用、随机、自伤、抽牌、消耗和未解析附加句均不冒充精确预测;它们仍可保留为带原始描述的单步模型选项。 已核对的燃烧之血(ID 和效果描述均匹配)允许基础铁甲战士前缀,并计算战斗结束回复 6 点生命;其他遗物不类推。原始状态、能力和遗物描述仍交给 Jev,不能因删去上下文而让它盲选。 牌面伤害不等于可以忽略格挡或状态。统一计算先扣格挡再扣生命;斩杀后从显示的来袭攻击中移除死亡目标。计划不能复用同张牌、越过目标死亡或超出剩余动作预算。 ## 验收口径 - Jev 固定为已接入验证的 `jev-1.13.0`,避免 `latest` 漂移;切换版本需重新验收。 - 默认置信度门槛 0.5;不是战术正确率,也没有整局胜率保证。 - 同一局面与同一策略不反复问;所有请求尝试记账,失败用量不可得时明确标记。 - 决策来源和执行方式分开:Jev 选择、程序连打仍记为 Jev 决策。 - 核心版本和协议版本分别统计;一个前缀中的每张牌只记一次发送。未完成回合不算完整回合耗时。 - `agent_gap_ms` 包含动作之间的模型等待,不能再与 `inference_ms` 相加。 - 0.2.1 的证明是离线回归和原生工具接入检查。新版整局速度、损血与胜率仍须另外实测;旧实战记录保留在 [VALIDATION.md](VALIDATION.md),不转算为新版成绩。