Skip to main content

ExecutionCallback

Trait ExecutionCallback 

Source
pub trait ExecutionCallback: Send + Sync {
    // Required methods
    fn on_step_start(&self, step_id: &str, step_name: &str, total_steps: usize);
    fn on_step_complete(&self, step_id: &str, output: &str);
    fn on_step_error(&self, step_id: &str, error: &str, will_retry: bool);
    fn on_complete(&self, success: bool, final_output: Option<&str>);
}
Expand description

执行回调 trait(应用层实现,用于 UI 进度展示)

定义执行过程中的进度回调接口,应用层可实现此 trait 来展示执行进度。

§回调时机

  • on_step_start: 步骤开始执行时调用
  • on_step_complete: 步骤成功完成时调用
  • on_step_error: 步骤执行失败时调用
  • on_complete: 整体执行完成时调用

§线程安全

实现必须是 Send + Sync,以支持在异步上下文中使用。

§示例

use aster::skills::executor::ExecutionCallback;

struct ConsoleCallback;

impl ExecutionCallback for ConsoleCallback {
    fn on_step_start(&self, step_id: &str, step_name: &str, total_steps: usize) {
        println!("[{}/{}] 开始: {}", step_id, total_steps, step_name);
    }

    fn on_step_complete(&self, step_id: &str, output: &str) {
        println!("[{}] 完成: {}...", step_id, &output[..50.min(output.len())]);
    }

    fn on_step_error(&self, step_id: &str, error: &str, will_retry: bool) {
        if will_retry {
            println!("[{}] 失败,将重试: {}", step_id, error);
        } else {
            println!("[{}] 失败: {}", step_id, error);
        }
    }

    fn on_complete(&self, success: bool, final_output: Option<&str>) {
        if success {
            println!("执行成功!");
        } else {
            println!("执行失败");
        }
    }
}

Required Methods§

Source

fn on_step_start(&self, step_id: &str, step_name: &str, total_steps: usize)

步骤开始

§Arguments
  • step_id - 步骤唯一标识符
  • step_name - 步骤显示名称
  • total_steps - 总步骤数
Source

fn on_step_complete(&self, step_id: &str, output: &str)

步骤完成

§Arguments
  • step_id - 步骤唯一标识符
  • output - 步骤输出内容
Source

fn on_step_error(&self, step_id: &str, error: &str, will_retry: bool)

步骤失败

§Arguments
  • step_id - 步骤唯一标识符
  • error - 错误信息
  • will_retry - 是否将进行重试
Source

fn on_complete(&self, success: bool, final_output: Option<&str>)

整体完成

§Arguments
  • success - 是否执行成功
  • final_output - 最终输出内容(成功时有值)

Implementors§