执行通道队列
默认情况下,A3S Code 会在进程内运行每一个任务,没有任何队列。lane 队列属于可选基础设施:为某条 lane 注册一个外部 handler 后,路由到该 lane 的工具不会由 agent 执行,而是排入队列、等待外部 worker 取走。随后你自己排空这些待处理任务,按需运行它们,再把结果回报回来。只有当外部 worker 确实是你架构的一部分时,才需要用到它。
共有四条 lane:control、query、execute 和 generate。每个 handler 的 mode 可以是 internal(默认)、external 或 hybrid。
说明:
- 默认路径不含队列。 仅当会话创建时传入
queueConfig/queue_config/QueueConfig,hasQueue()/has_queue()/HasQueue()才返回true。未配置 queue 时,lane handler 没有可修改的队列。 - 每个待处理任务都带有
task_id、session_id、lane、command_type、payload和timeout_ms。工作完成后,把task_id传回给completeExternalTask/complete_external_task/CompleteExternalTask。 - 结果结构为
{ success, result?, error? }——result可承载任意可 JSON 序列化的载荷,error是失败时的可选消息。completeExternalTask/complete_external_task在找到并完成任务时返回true,否则返回false。 - 在 Python 中这些队列方法是同步的;在 Node 中
setLaneHandler、pendingExternalTasks和completeExternalTask返回 promise,而hasQueue是同步的。 - Go 队列调用接收
context.Context;Node 返回 promise;Python 使用同步方法。