失败与停止
一轮回答失败时默认显示失败卡片,运行中提供停止入口,无需额外开启。
失败
后端给出失败结论时,这一轮以失败卡片结束,已经产出的内容保留。后端一开始就失败(还没有任何回答)也有失败卡片。
失败的信息统一是 { code, message, retryable? }:code 由适配器或运行时提供,可能来自后端,也可能描述本地执行错误;retryable 是重试建议,不会触发自动重试,也不保证重试成功。传输连接断开还可能显示断连与恢复提示,不一定表示远端任务失败。
按错误码换失败卡片(比如配额用完时引导升级),见失败卡片与系统提示。
停止
运行中,输入框没有待发内容时显示停止按钮。默认允许继续发送,有文字或已上传附件时切回发送按钮,把新消息加入队列;关闭 allowSendWhileSending 后,生成期间按钮保持停止状态。
- 停下的一轮由运行状态行显示「已中断」,执行过程固定展开。
- 调用后端 abort 后继续接收输出并保留执行位;终态事件或历史明确终态确认后才结束运行。失败或未确认不能伪造中止;缺少 abort 时不显示停止按钮。
运行中继续发送
默认情况下,回答生成中可以继续发送,新消息按顺序等待执行。只想禁止从输入框继续发送时可关闭:
配置项
配置项类型默认说明
settings.composer.allowSendWhileSending
booleantrue回答生成中是否允许继续发送。发送队列由 ChatKit 管理;设为 false 时,生成中按钮固定为停止,回车变成换行。说明
- 已派发的一轮被用户停止后,事件中的
outcome通常为aborted;停止时已判定卡住则为interrupted,尚未派发就取消则为cancelled。运行状态run.status则是interrupted,不能把它与事件结论混用。见指标。 allowSendWhileSending: false不会删除已排队消息,也不阻止useChatkitActions().send等程序调用排队。- 排队、停止、结论判定是核心交互,不能定制。