perf(agent): eksekusi tool read-only paralel seperti Claude Code
Sebelumnya loop utama mengeksekusi semua tool call satu-per-satu (sequential for loop). Seperti Claude Code, tool read-only yang independen dalam satu pesan assistant (read/grep/glob/semantic_search dsb.) kini dijalankan konkuren dengan bounded parallelism (max 8), mengurangi latensi per turn secara signifikan untuk beban coding. - feat(registry): tool_is_parallel_safe() — whitelist tool read-only yang aman dijalankan paralel; tool mutating/shell tetap sequential - feat(executor): is_parallel_safe() delegasi ke registry; ToolExecutor trait Default=false (konservatif) - fix(application): execute_tool_calls_in_parallel() — join_all + semaphore bounded 8, hasil dikumpulkan dalam URUTAN panggilan asli (kontrak OpenAI/Anthropic tool-result ordering) - loop utama: batch paralel hanya jika SEMUA tool parallel-safe; jika ada satu tool mutating, jatuh balik ke jalur sequential aman - test: +2 registry test, +2 application test (konkurensi & urutan, fallback batch mutating)
This commit is contained in:
@@ -59,7 +59,7 @@ pub mod workflow;
|
||||
// like `crate::tools::{Tool, ToolCtx}` continue to work.
|
||||
pub use context::{ToolCtx, ToolCtxBuilder};
|
||||
pub use graduated::{check_graduated_checks, GraduatedCheck};
|
||||
pub use registry::{all_tools, tool_defs, tool_is_risky};
|
||||
pub use registry::{all_tools, tool_defs, tool_is_parallel_safe, tool_is_risky};
|
||||
pub use util::{arg_str, execute_cmd, log_write_edit_tool, resolve_path};
|
||||
|
||||
/// Common interface every agent-invocable tool implements.
|
||||
|
||||
Reference in New Issue
Block a user