diff --git a/src-tauri/src/commands/ai/mod.rs b/src-tauri/src/commands/ai/mod.rs index 2c83c41..2eccb20 100644 --- a/src-tauri/src/commands/ai/mod.rs +++ b/src-tauri/src/commands/ai/mod.rs @@ -198,6 +198,13 @@ pub enum AiChatEvent { /// (provider 未报,前端 MessageList 据此标「估算」),false=真实值。仅影响展示, /// 不参与 TokenAccumulator/save 累加路径。 is_estimated: bool, + /// 看板 953:最终收敛回复是否因 provider max_tokens 上限被截断(finish_reason=length)。 + /// true=正常收敛路径文本被腰斩,前端主对话末条 assistant 气泡渲染截断提示条 + 继续输出; + /// false=完整。仅 agentic loop 正常收敛出口可传 true,停止/错误/保文/达轮次上限等 + /// 退出点及零 token 收敛信号恒 false(截断语义与 incomplete 正交,不冒充不完整)。 + /// #[serde(default)]:旧事件缺字段时前端按 false 兜底,向后兼容。 + #[serde(default)] + truncated_by_max_tokens: bool, /// 不完整标记(可选):Some(true)=网络中断保文,None 或 Some(false)=完整回复 incomplete: Option, /// 不完整原因(与 incomplete 配合):Some("max_rounds")=达最大轮次自动收尾,