Skip to main content
要在同一会话里发多条用户消息,使用 QoderSDKClient——它维护长连接,可以根据模型回复决定下一句。一次性、无状态查询用 query(),见 快速开始

多消息会话

每次调用 client.query(...) 追加一轮输入,再用 client.receive_response() 消费到本轮回复结束:

运行中插话

在消费当前回复时再次调用 client.query(...),即可把新消息发送到同一个长连接会话:
priority 决定消息何时交给会话: 相同优先级的消息按发送顺序处理。priority="now" 适合立即改变当前方向;如果只想停止当前回复、不发送新消息,应使用 client.interrupt()

添加上下文但不触发回复

should_query=False 会把消息加入对话,但不会仅凭这条消息触发回复。消息的处理时机仍由 priority 决定。

中断当前回复

只有 QoderSDKClient 提供运行时中断能力,一次性 query() 迭代器不提供。调用 await client.interrupt() 可以停止当前回复,但不会断开 client,之后仍可继续对话。
interrupt() 不会清空后续消息队列或断开 client,之后仍可发送下一轮输入。

取消排队消息

给需要跟踪的消息设置会话内唯一的 message_uuid,再使用 client.cancel_async_message(message_uuid) 取消尚未开始执行的消息:
取消成功返回 True;消息不存在或已无法取消时返回 False。未设置 UUID 的消息无法通过该方法取消。不要在同一会话内复用 UUID。

管理会话生命周期

QoderSDKClient 的连接生命周期由调用方掌握。两种管理方式:

自动管理(推荐)

适合会话生命周期跟某个函数 / 代码块绑定的场景:

手动管理

适合 client 被长生命周期对象持有、或需要从外部条件(超时、用户取消等)触发关闭的场景: