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

59 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-shell``relative_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其余为可选优化。