From a0f19d193d0589e003bd0e97ac7f82cef91461bb Mon Sep 17 00:00:00 2001 From: mojie126 Date: Tue, 10 Nov 2026 12:39:06 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20Windows=20MinGW=20?= =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E6=9E=84=E5=BB=BA=E9=93=BE=E6=8E=A5=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 桌面库只保留 rlib,避免 cdylib 导出全部符号触发 export ordinal too large - 显式声明 agent2api 二进制,使 cargo 产物名与 Tauri 打包名一致 - 不携带本机构建脚本与 fork 专属发布流程 --- desktop-tauri/src-tauri/Cargo.toml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/desktop-tauri/src-tauri/Cargo.toml b/desktop-tauri/src-tauri/Cargo.toml index 20c3c8fd..f5b3e4b9 100644 --- a/desktop-tauri/src-tauri/Cargo.toml +++ b/desktop-tauri/src-tauri/Cargo.toml @@ -28,7 +28,16 @@ default-members = [".", "server"] [lib] name = "workbuddy_proxy_desktop_lib" -crate-type = ["staticlib", "cdylib", "rlib"] +# 只保留 rlib:仓库内没有任何动态库或静态库的消费者(桌面壳以 rlib 静态链接, +# Tauri 桌面打包只需要 bin),而 windows-gnu 下 cdylib 会把全部符号导出, +# 触发「export ordinal too large」链接失败,官方 CI 的 MSVC 工具链不受影响但产物同样无人使用 +crate-type = ["rlib"] + +[[bin]] +# 与 tauri.conf.json 的 mainBinaryName 一致:本地 cargo 构建产物名与 +# Tauri CLI 打包改名后的名字相同,两种构建路径产出同一个 agent2api.exe +name = "agent2api" +path = "src/main.rs" [build-dependencies] tauri-build = { version = "2", features = [] } From 771bc41c20b9049522eb0ba0046a80b081db3dec Mon Sep 17 00:00:00 2001 From: mojie126 Date: Wed, 11 Nov 2026 01:08:07 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20Windows=20=E8=81=94?= =?UTF-8?q?=E8=B0=83=E7=9A=84=E5=B0=B1=E7=BB=AA=E6=B5=8B=E8=AF=95=E6=97=B6?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 就绪闸门测试以固定登记时刻计算寿命,避免真实时钟读取晚于登记造成边界断言偶发失败 --- .../src-tauri/server/src/server/core/providers/readiness.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/desktop-tauri/src-tauri/server/src/server/core/providers/readiness.rs b/desktop-tauri/src-tauri/server/src/server/core/providers/readiness.rs index d07a82cd..0561d72b 100644 --- a/desktop-tauri/src-tauri/server/src/server/core/providers/readiness.rs +++ b/desktop-tauri/src-tauri/server/src/server/core/providers/readiness.rs @@ -322,10 +322,12 @@ mod local_gates { fn a_gate_expires_rather_than_waiting_for_a_release() { let _slot = lock_for_tests(); clear_for_tests(); - assert!(hold("zcode", "令牌池为空")); + // hold 的登记时刻由测试固定,不能在 hold 之后读取真实时钟作为基准, + // 否则调度延迟会缩短剩余寿命并让边界断言偶发失败 + let base = logging::now_ms(); + assert!(hold_at("zcode", "令牌池为空", base)); // 全程用注入时钟做 TTL 判定:真实时钟下这条只能靠睡眠验证,而睡眠要么 // 睡满两分钟、要么睡不到 TTL(后者等于什么都没测)。 - let base = logging::now_ms(); assert!( gated_at("zcode", base + GATE_TTL_MS - 1), "寿命内仍然挡着 —— 比令牌 TTL 还短就放行是白挡"