Files
qiming/qimingclaw/docs/review-lanproxy-sidecar-path.md

3.0 KiB
Raw Permalink Blame History

Code Review: get_lanproxy_bin_path 修改

变更概要

  • 文件: crates/agent-tauri-client/src-tauri/src/lib.rs
  • 函数: get_lanproxy_bin_path
  • 目的: 修复「未找到 qiming-lanproxy-aarch64-apple-darwin 可执行文件」——使 lanproxy 作为 Tauri sidecar 在应用包内可被正确解析。

优点

  1. 逻辑清晰
    先按 sidecar 基名(与 app.shell().sidecar("qiming-lanproxy") 一致)解析,再按带 target triple 的文件名回退,兼顾打包与开发两种场景。

  2. 与 Tauri 行为一致
    tauri-plugin-shellrelative_command_path 使用 base_dir.join(program),即与主程序同目录下的基名;优先用基名查找与官方 sidecar 用法一致。

  3. 跨平台处理正确

    • 非 Windows: qiming-lanproxy
    • Windows: qiming-lanproxy.exe
      resolve_bundled_bin_path 直接使用传入的 bin_name,不自动加 .exe,此处区分是合理的。
  4. 注释到位
    文档注释说明了「sidecar 随包集成、无需安装」以及两步查找顺序,便于后续维护。

  5. 无多余依赖
    未引入新依赖,仅调整查找顺序与命名策略。


潜在问题与建议

1. Linux ARM 的 triple 与仓库文件不一致(既有问题)

  • 代码: target_arch = "arm" 时使用 qiming-lanproxy-arm-unknown-linux-gnueabi
  • 仓库: binaries/ 中实际存在的是 qiming-lanproxy-arm-unknown-linux-gnueabihf(以及 armv5te / armv7 等)。
  • 影响: 在 Linux ARMgnueabihf开发态会先失败基名再失败 triple仍报「未找到」。
  • 建议: 将 arm 分支改为 qiming-lanproxy-arm-unknown-linux-gnueabihf,或在回退逻辑中增加对 gnueabi/gnueabihf 的尝试(若需兼容多种 ARM 变体)。

2. 错误信息未体现「已尝试两种命名」

  • 当前:两次都失败时,错误仅来自第二次 resolve_bundled_bin_path(app, bin_name),例如「未找到 qiming-lanproxy-aarch64-apple-darwin 可执行文件」。
  • 建议(可选):在两次都失败时统一返回更明确的信息,例如:
    「未找到 qiming-lanproxy 可执行文件(已尝试 sidecar 基名与当前平台 triple 名)」
    便于区分「完全找不到」与「只找不到 triple 名」的情况。

3. 未知平台时的重复尝试

  • #[cfg(not(any(target_os = "macos", target_os = "linux", target_os = "windows")))]bin_name = "qiming-lanproxy",与 SIDECAR_BASE_NAME(非 Windows相同会再调用一次 resolve_bundled_bin_path(app, "qiming-lanproxy")
  • 影响:仅多一次相同查找,无功能错误;可视为无害冗余,若追求简洁可在该分支直接 return resolve_bundled_bin_path(...) 避免重复。

结论

  • 修改方向正确,能解决「打包后/开发态下按 sidecar 基名或 triple 名找到 lanproxy」的需求。
  • 建议顺带修复 Linux ARM 的 triple 与 binaries/ 中实际文件名一致gnueabihf其余为可选优化。