From f970950292bae3c900d2f7c2442f78cbd06bbac4 Mon Sep 17 00:00:00 2001 From: xintaofei Date: Wed, 18 Mar 2026 10:21:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BE=E7=BD=AE=E7=95=8C?= =?UTF-8?q?=E9=9D=A2agents=E7=AE=A1=E7=90=86=E9=87=8C=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/src/commands/acp.rs | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src-tauri/src/commands/acp.rs b/src-tauri/src/commands/acp.rs index 4756e5c..e7afba2 100644 --- a/src-tauri/src/commands/acp.rs +++ b/src-tauri/src/commands/acp.rs @@ -78,19 +78,6 @@ fn package_name_from_spec(package: &str) -> String { normalized.to_string() } -async fn detect_global_cmd_version(cmd: &str) -> Option { - let output = crate::process::tokio_command(cmd) - .arg("--version") - .output() - .await - .ok()?; - if !output.status.success() { - return None; - } - let raw = String::from_utf8_lossy(&output.stdout).trim().to_string(); - normalize_version_candidate(&raw) -} - /// Check whether a command is available on the system PATH. /// Uses `which` on unix and `where` on windows — lightweight and does not /// invoke the target binary itself, avoiding side-effects or slow startups. @@ -113,8 +100,12 @@ async fn is_cmd_available(cmd: &str) -> bool { async fn detect_local_version(agent_type: AgentType) -> Option { let meta = registry::get_agent_meta(agent_type); match meta.distribution { - registry::AgentDistribution::Npx { cmd, .. } => { - detect_global_cmd_version(cmd).await + registry::AgentDistribution::Npx { cmd, package, .. } => { + if is_cmd_available(cmd).await { + version_from_package_spec(package) + } else { + None + } } registry::AgentDistribution::Binary { cmd, .. } => { binary_cache::detect_installed_version(agent_type, cmd)