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 的输入数量
reasonstopped 或空闲状态的 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: falsereason: "idle",适合让 UI 的停止操作保持幂等。