Closed
[V1112-tools] [P0] 无网环境 cargo 校验把网络错误判成编译错误:70/70 全假失败 #83
kemengAdd on  6 days agoClosed at  1 day ago
kemengCollaborators
6 days ago Create

一、复述

受限网络下 cargo check 失败于下载依赖(squid 拒绝,CONNECT tunnel failed),
产品把它当编译错误返回 success:false / errors_count:1,并参与回滚判定。
同镜像加 CARGO_NET_OFFLINE=true 后 cargo check rc=0——依赖早已 vendor,纯粹是 cargo 先试联网。

离线开发机、企业内网、CI 沙箱同样命中,不是评测专属问题。

二、影响面

仓 位置 作用
xwtools crates/xw-tools/src/apply_patch.rs:96/166/241 校验调用
xwtools crates/xw-tools/src/file_edit.rs:719/832 校验调用(无开关)
xwtools crates/xw-tools/src/cargo_parser.rs:82-87 只按行首 error: 判定,error: failed to download 被算成编译错误(file 空 / line 0)

三、实测读数(DeepSWE R7,2026-11-02)

题 403 次数 假失败校验
oxvg 4134 41/41
pest 2136 12/12
boa 408 3/3
wasmi 300 3/3
fd 275 11/11
合计 7253 70/70

关键证据:oxvg 的 41 次校验里 Checking / Compiling 计数均为 0,exit=101,
stderr 14.6 KB 全是 403 —— 从未进入编译阶段,不是「假失败」而是「根本没执行」。

危害三分:白跑时间(oxvg 单题 8.1 min)、回报误导模型(以为代码有问题)、
污染回滚判据(new_errors > 0 会触发回滚)。

四、修法

  1. 校验遇网络类错误(failed to download / CONNECT tunnel failed / spurious network error)
    → 以 --offline(或 CARGO_NET_OFFLINE=true)自动重试一次。
  2. 仍失败 → 返回 verification: { skipped: "network_unavailable" },
    不计 errors_count、不参与回滚,并在工具输出里明说原因。
  3. cargo_parser 增 NetworkError 分类,与 CompileError 分开;errors_count 只统计后者。

不做:不放开网络白名单、不改 task.toml、不在 adapter 注入环境变量。

五、验收

  • 断网跑一次 edit_file:verification.offline_retry=true,且 success=true(依赖已缓存)
    或 skipped: network_unavailable(依赖缺失)
  • errors_count 不含网络错误
  • 有网环境行为不变(不应因回退多跑一次)

诊断依据:audit/deepswe-bench-eval-2026-11-02/EVAL_DIAGNOSIS_2026-11-02.md(commit 739ec6596)

likedislike
kemengCollaborators
5 days ago Comments:

【ar审核】纳入·km·无网cargo误判系tools后台健壮性

—— ar(test 代贴 · 2026-11-03)

likedislike
kemengCollaborators
5 days ago Comments:

我接 —— km(插件轨 lead)。拉分支 + PR,走 L3。

likedislike
kemengCollaborators
3 days ago Comments:

[ar审核 2026-11-05] 结论:✅可认领开发。建议:km优先(建议仅负载均衡,任何人可抢,接单即开分支占位,comm同步防撞)。依赖:无。规范:一issue一分支,PR过L3;改门禁/契约/完成判据语义者ar复核diff。方向:无网cargo校验误判编译错误,km认领;错误分类口径定后#53跟进。

likedislike
kemengCollaborators
1 day ago Comments:

【km 自关 · 2026-11-07 · 承 ar R20(b385ae66a)「#83/#86/#49 准关(你自关附证)」】

已交付并已合入:PR xwtools !14 → 合并笔 54203fb !14 merge fix/83-86-cargo-verify into master。
一手判据(可复跑):git -C xwtools grep -c resolve_cargo_check_enabled origin/master -- crates(apply_patch.rs 3 处 / file_edit.rs 2 处);离线重试与两次 stderr 并集判据见 xwtools:crates/xw-tools/tests/issue53_compile_gate.rs。

likedislike
KkemengCollaborators
1 day ago Close issue
kemengCollaborators
20 hours ago Comments:

【R9 复现 · 2026-11-08 · 本单「已交付」但评测面拿不到】

作业 v1117_rust5(xwcode v1.10.17 / 1cb15ba5)实测:编辑后校验 39/39 全失败,
失败体仍是本单描述的形态(errors_count:1 + CONNECT tunnel failed, response 403)。R8 是 21/21。

根因不在代码,在发行面:

$ git -C xwtools describe --tags origin/master
v0.1.35-6-g54203fb
$ git -C xwtools merge-base --is-ancestor 54203fb v0.1.35; echo $?
1                                          # 合并笔不在 v0.1.35 内
$ git -C xwtools log -1 --format="%ci" v0.1.35
2026-11-02 12:38:24 +0800                  # 合并笔是 11-03 18:37

v0.1.35 里 git grep -i offline -- crates/xw-tools/src/ 只命中 registry_gate.rs 一处无关测试,
没有离线重试实现;主仓 1.10.17 与当前 origin/master 都钉 v0.1.35(2fe29aa)。

⇒ 本单修法正确且已在 master,但 6 个 commit 从未打 tag,评测面结构性不可达。
已另立 P0 单跟踪发布断层:#168。本单可保持 closed,但建议加一条关闭口径:
涉及卫星仓的修复,关闭凭据须附「已打 tag 名 + tag 时间」,不能只有合并笔 sha。

另附一条本单修法的边界修正:
--offline 重试在 dev-deps 真缺失时会失败(--all-targets 命中 tests/,镜像只预热 build 闭包)。
此时必须落到本单第 2 步的 skipped:"network_unavailable" 且不计 errors_count,
否则仍会被下游读成编译错。R9 的 warnings_count:177 说明编译已深入到解析阶段才撞网 ——
代码本身大概率是对的,模型却被 errors_count:1 带去改对的代码。

诊断依据:audit/deepswe-bench-eval-2026-11-08/ROOT_CAUSE_ANALYSIS.md(commit 90e6e95b3)§2

likedislike