执行通道队列

默认情况下,A3S Code 会在进程内运行每一个任务,没有任何队列。lane 队列属于可选基础设施:为某条 lane 注册一个外部 handler 后,路由到该 lane 的工具不会由 agent 执行,而是排入队列、等待外部 worker 取走。随后你自己排空这些待处理任务,按需运行它们,再把结果回报回来。只有当外部 worker 确实是你架构的一部分时,才需要用到它。

共有四条 lane:control、query、execute 和 generate。每个 handler 的 mode 可以是 internal(默认)、external 或 hybrid。

Rust
Node.js
Python
Go

说明:

  • 默认路径不含队列。 仅当会话创建时传入 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 使用同步方法。