把不稳定的模型调用翻译成稳定的用户体验、错误边界和可观测状态。
type ViewState =
| { kind: "idle" }
| { kind: "streaming"; requestId: string; received: number }
| { kind: "success"; requestId: string; answer: string }
| { kind: "error"; requestId: string; retryable: boolean };
function canRetry(state) {
return state.kind === "error" && state.retryable;
}我会把输出层设计成显式状态机:请求、模型流、工具执行、校验和展示各自有状态;失败时保留 request ID、模型版本、结束原因和可恢复位置,高风险结果在完整校验或人工确认后才展示。