Sessions
停止 Turn
使用 session.stop() 中止当前执行并清空尚未吸收的输入队列
停止 Turn
session.stop() 停止当前运行的 Turn,并取消尚未被该 Turn 吸收的排队输入。
const turn = await session.prompt({ query: "执行一个长任务" });
const stop_result = await session.stop();
console.log(stop_result);
const result = await turn.finished;返回结果
type AgentSessionStopResult = {
stopped: boolean;
turnId?: string;
cancelledQueuedPrompts: number;
reason: "stopped" | "idle";
};| 字段 | 含义 |
|---|---|
stopped | 是否停止了活跃 Turn 或清空了排队输入 |
turnId | 被停止的活跃 Turn;仅有活跃 Turn 时存在 |
cancelledQueuedPrompts | 尚未绑定到 Turn 的输入数量 |
reason | stopped 或空闲状态的 idle |
输入队列语义
当用户连续提交输入时,有些输入已经作为 steering 并入当前 Turn,有些仍在等待下一 Turn。停止的边界是:
当前 Turn 已吸收的输入 -> 随当前 Turn 一起停止
尚未吸收的排队输入 -> 取消,不会自动启动下一 Turn因此“停止”按钮不会因为队列里还留有文字而立刻开始下一轮。如果产品需要保留草稿,应在调用 stop() 前把输入保存在 UI 草稿状态,而不是依赖 SDK 队列。
最终状态
被停止的 Turn 仍会完成 turn.finished:
const result = await turn.finished;
console.log(result.success); // false
console.log(result.error); // 通常为 Turn stopped订阅流也会收到 variant: "turn", type: "finish", status: "stopped"。不要因为 stop 而让等待 finished 的 Promise 永远挂起。
空闲 Session 调用 stop() 不抛错,会返回 stopped: false 与 reason: "idle",适合让 UI 的停止操作保持幂等。