恢复模型、Auto tier 与传输
设置 Auto 路由偏好,区分 pending 与生效状态,并处理 WebSocket Responses 恢复问题。
恢复会话可以更换模型与 reasoning effort,也可以调整 CAPI Auto 路由偏好和 Responses 传输。恢复历史与更改未来模型调用配置是两个不同动作。
Auto tier
model: "auto" 时,capi.autoTier 可取 efficiency、balance、intelligence 或 fast。它用于 V2 Auto 路由,V1 Auto 请求不受影响。
fast 是 integrator-only 延迟预设,不是第一方 Copilot 产品的通用偏好。SDK 不决定资格,不把它作为默认,也不在旧 runtime 不支持时自动回退;错误按 runtime 返回。
创建与恢复的持久化规则
创建时省略 tier 使用 runtime 默认路由。冷恢复会恢复保存的 tier,显式传入可覆盖本次激活的偏好;旧会话没有保存 tier 时继续默认行为。
恢复已经驻留在 runtime 的会话时,省略值保留当前偏好,相同值无操作,不同值请求安全切换,不能改变正在执行的 turn。session.start 和 session.resume 的可选 data.autoTier 可展示所选偏好。
活动会话切换
const result = await session.setAutoTier("intelligence");
if (result.status === "pending") {
// 请求已接受,尚未生效。
}runtime 等后续使用 auto 的用户轮次成功获得可用模型后才提交变化。pending 不表示生效,新的尚未被轮次领取的请求会替代旧请求。
生效时观察 session.model_change;失败时观察临时事件 session.auto_tier_switch_failed,reason 为 policy_rejected、request_failed、setup_failed 或 unsupported,原偏好保留。该失败事件不保存,也不在恢复时重放。
通过 model.getCurrent RPC 可查看已提交的 autoTier、尚未领取的 pendingAutoTier 和正在激活的 activatingAutoTier。
省略与重置不同
TypeScript session.setAutoTier(null) 回到提供方默认。也可用 setModel("auto", { autoTier: "balance" }) 同时选择 auto 和偏好,autoTier: null 表示重置;非 auto 模型不能携带此选项。
Python 使用 None、Rust 使用其重置变体;Go、.NET、Java 另有 reset flag 区分“未设置”与“重置”。省略始终表示保留当前偏好,不应全部序列化成 null。
WebSocket Responses
capi.enableWebSocketResponses 默认 true;模型声明 ws:/responses endpoint 时使用 WebSocket。代理环境连不上,或恢复时报 400 input item ID does not belong to this connection,可在恢复调用中切到 HTTP:
const session = await client.resumeSession("user-123-task-456", {
capi: { enableWebSocketResponses: false },
});该 false 设置等效于禁用 WebSocket 的 COPILOT_CLI_DISABLE_WEBSOCKET_RESPONSES 环境开关,二者布尔方向相反。它控制传输方式,不是更换模型提供方。