Skip to main content

AgentOrchestrator

Struct AgentOrchestrator 

Source
pub struct AgentOrchestrator { /* private fields */ }
Expand description

Agent Orchestrator - 主子智能体协调器

基于事件总线实现统一的监控和控制机制。 默认使用内存事件通讯,支持用户自定义 NATS provider。

Implementations§

Source§

impl AgentOrchestrator

Source

pub fn new_memory() -> Self

创建新的 orchestrator(使用内存事件通讯)

这是默认的创建方式,适用于单进程场景。 SubAgents 将以占位符模式运行,不执行实际的 LLM 操作。 要执行真实的 LLM 操作,请使用 from_agent()

Source

pub fn new(config: OrchestratorConfig) -> Self

使用自定义配置创建 orchestrator(占位符模式)

Source

pub fn from_agent(agent: Arc<Agent>) -> Self

Create an orchestrator backed by a real Agent for LLM execution.

SubAgents spawned by this orchestrator will run the actual agent definition (permissions, system prompt, model, max_steps) loaded from the agent’s configuration and any extra agent_dirs provided in SubAgentConfig.

Source

pub fn from_agent_with_config( agent: Arc<Agent>, config: OrchestratorConfig, ) -> Self

Create an orchestrator backed by a real Agent with custom config.

Source

pub fn subscribe_all(&self) -> Receiver<OrchestratorEvent>

订阅所有 SubAgent 事件

返回一个接收器,可以接收所有 SubAgent 的事件。

Source

pub fn subscribe_subagent(&self, id: &str) -> SubAgentEventStream

订阅特定 SubAgent 的事件

返回一个过滤后的接收器,只接收指定 SubAgent 的事件。

Source

pub async fn spawn_subagent( &self, config: SubAgentConfig, ) -> Result<SubAgentHandle>

启动新的 SubAgent

返回 SubAgent 句柄,可用于控制和查询状态。

Source

pub async fn spawn(&self, slot: AgentSlot) -> Result<SubAgentHandle>

Spawn a subagent from a unified AgentSlot declaration.

Convenience wrapper around spawn_subagent that accepts the unified slot type. The role field is ignored here — for team-based workflows use run_team instead.

Source

pub async fn run_team( &self, goal: impl Into<String>, workspace: impl Into<String>, slots: Vec<AgentSlot>, ) -> Result<TeamRunResult>

Run a goal through a Lead → Worker → Reviewer team built from AgentSlots.

Requires from_agent() mode — returns an error if no backing Agent is configured. Each slot’s role field determines its position in the team; slots without a role default to Worker. Agent definitions are loaded from each slot’s agent_dirs and looked up by agent_type.

Source

pub async fn send_control(&self, id: &str, signal: ControlSignal) -> Result<()>

发送控制信号到 SubAgent

Source

pub async fn pause_subagent(&self, id: &str) -> Result<()>

暂停 SubAgent

Source

pub async fn resume_subagent(&self, id: &str) -> Result<()>

恢复 SubAgent

Source

pub async fn cancel_subagent(&self, id: &str) -> Result<()>

取消 SubAgent

Source

pub async fn adjust_subagent_params( &self, id: &str, max_steps: Option<usize>, timeout_ms: Option<u64>, ) -> Result<()>

调整 SubAgent 参数

Source

pub async fn get_subagent_state(&self, id: &str) -> Option<SubAgentState>

获取 SubAgent 状态

Source

pub async fn get_all_states(&self) -> HashMap<String, SubAgentState>

获取所有 SubAgent 的状态

Source

pub async fn active_count(&self) -> usize

获取活跃的 SubAgent 数量

Source

pub async fn wait_all(&self) -> Result<()>

等待所有 SubAgent 完成

Source

pub async fn list_subagents(&self) -> Vec<SubAgentInfo>

获取所有 SubAgent 的信息列表

Source

pub async fn get_subagent_info(&self, id: &str) -> Option<SubAgentInfo>

获取特定 SubAgent 的详细信息

Source

pub async fn get_active_activities(&self) -> HashMap<String, SubAgentActivity>

获取所有活跃 SubAgent 的当前活动

Source

pub async fn get_handle(&self, id: &str) -> Option<SubAgentHandle>

获取 SubAgent 句柄(用于直接控制)

Source

pub async fn pending_external_tasks_for( &self, subagent_id: &str, ) -> Vec<ExternalTask>

Complete a pending external task for a SubAgent.

Call this after processing an OrchestratorEvent::ExternalTaskPending event. The subagent_id and task_id identify the waiting tool call; result is the outcome produced by the external worker.

Returns true if the task was found and unblocked, false if the subagent or task ID was not found (e.g., already timed out). Return any external tasks currently waiting for the given SubAgent.

Returns an empty list if the SubAgent does not exist or has no pending external tasks (e.g. when running with the default Internal lane mode).

Source

pub async fn complete_external_task( &self, subagent_id: &str, task_id: &str, result: ExternalTaskResult, ) -> bool

Trait Implementations§

Source§

impl Debug for AgentOrchestrator

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more