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!("执行失败");
}
}
}