Skip to content
FunCoding

Search

Search docs, Skills and MCP

Steering、排队与消息来源

区分 immediate 与 enqueue,处理接受确认、回退队列和代理来源信息。

This page has not been translated into English yet. The original Chinese version is shown below.

会话工作期间,MessageOptions 的 mode 控制新消息如何投递。默认是 enqueue;immediate 请求在当前工作中纠正方向。

两种投递方式

await session.send({ prompt: "Refactor the database layer" });
await session.send({
    prompt: "Make sure to keep backwards compatibility with the v1 API",
    mode: "immediate",
});
await session.send({
    prompt: "Now add migration scripts for the schema changes",
    mode: "enqueue",
});
模式忙碌时空闲时
immediate在当前工作下次模型请求前尽力注入立即开始新工作
enqueue等当前工作结束后按队列处理立即开始新工作

steering 不会撤销已发生的修改。已经开始的工具调用先完成,再应用新的提示;如果当前工作在注入前结束,未消费的 steering 会移到普通队列前部。

队列与上下文

enqueue 按 FIFO 处理,每条消息启动一次完整代理处理过程;队列清空后发出 idle。文档不同章节对 turn 有“单次模型调用”和“完整代理处理”的用法,计数时以代理循环中的事件定义为准。

排队仍在同一会话里,不等于自动清空历史或为每条消息创建全新 session。需要不相关工作的独立上下文,应另外创建会话。

接受不等于消费

高层 send 返回 message ID,表示消息已接受,不证明接收方已经处理。没有可见回复时,不应自动重发已接受消息。sendAndWait 也可能在没有 assistant message 的情况下因 idle 完成。

UI 可显示待处理消息与投递模式,并处理 steering 转入队列的情况,避免把一次确认显示为最终完成。

标记代理来源

从另一 agent 转发消息时,TypeScript 可设置 source: "agent-sender-id"。sender ID 应来自可信应用元数据,不从消息正文推断。普通人的消息保持 source 未设置以使用 runtime 默认。

类型化 API 还支持 user 和 system;system 用于内部应用上下文,不能拿来掩盖代理来源。source 说明来源,mode 说明投递紧急性;它们都不要求接收方必须产生可见回复,source 也不设置计费标志。

远程传播限制

远程后端不一定端到端保留 source。本地会话 echo 中存在来源,不证明远程 HTTP 请求或 worker 收到了相同信息。应用需要依据实际远程能力处理授权语义,不能把代理输入当作人类批准。