diff --git a/_build/_b.txt b/_build/_b.txt deleted file mode 100644 index e87bf5e..0000000 --- a/_build/_b.txt +++ /dev/null @@ -1,35 +0,0 @@ -═══ 1. 默认中转地址确实是空 ═══ - [PASS] DEFAULT_RELAY_URL 是空白 - -═══ 2. RelayLink.start('') 的行为 ═══ - [PASS] start('') 返回 False - [PASS] start('') 没有新建线程 - [PASS] start('') 之后 candidates 是空的 - -═══ 3. enable_relay 连续调用两次的返回值 ═══ - 第 1 次 enable_relay() -> False - 第 2 次 enable_relay() -> False - 日志: ['没配中转地址,只走局域网(需要跨网络时在设置里填中转地址)', '没配置中转地址,跳过', '没配中转地址,只走局域网(需要跨网络时在设置里填中转地址)'] - [PASS] 第 1 次调用返回 False(没有中转可连) - [PASS] 第 2 次调用也应返回 False - -═══ 4. 这个返回值会影响谁 ═══ - server.py 里调用 enable_relay 的地方: - 160: # 顺序很重要:enable_relay() 会挨个试中转地址, - 185: self.enable_relay() - - 全仓库搜索 enable_relay 的调用点: - windows\lanremote\relay.py:317: 对外给 server.enable_relay() 判断用 —— - windows\lanremote\server.py:160: # 顺序很重要:enable_relay() 会挨个试中转地址, - windows\lanremote\server.py:185: self.enable_relay() - windows\lanremote\server.py:308: def enable_relay(self, url: str = "") -> bool: - -═══ 5. 空白默认下局域网发现仍可用吗 ═══ - [PASS] discovery 模块能导入(不依赖 DEFAULT_RELAY_URL) - [PASS] discover() 能跑完不抛异常 - [PASS] discover() 返回的是列表 - · 发现到 0 台设备(本机没有 agent 在跑,0 台是正常的) - -============================================================== - 通过 9 项,失败 0 项 -============================================================== diff --git a/_build/_cmsg6.txt b/_build/_cmsg6.txt new file mode 100644 index 0000000..72067e8 --- /dev/null +++ b/_build/_cmsg6.txt @@ -0,0 +1,45 @@ +同步部署脚本智能体的收尾改动 + 恢复被误删的文件 + +== 部署脚本(另一个智能体的收尾)== + +* deploy.sh 默认两个隧道 unit 都 enable: + 主 lanremote-tunnel quic + 8 条 + --metrics :20241 + 副本 lanremote-tunnel-h2 http2 + 2 条 + --metrics :20242 + --protocol 支持 both(默认)/ quic / http2,非法值退出码 2 +* metrics 端口在两个 unit 里都显式钉死 —— + 实测停掉主实例再重启副实例时,副实例会抢 20241, + 于是 watchdog 和所有按端口读指标的脚本全部读错实例 +* MTU/MSS 收成单一出处:net-tune.sh 唯一负责 MSS 1360 + 接口 MTU 1400, + deploy-tune.sh 只管 keepalive + 开机加速并调用 net-tune.sh。 + 这样就不存在"谁后跑谁赢" +* 按需重启:程序和 unit 都用 cmp 比对,一样就不落盘、不重启、 + 不 daemon-reload(幂等重跑不再打断正在服务的连接) +* 顺手修了一个会咬人的坑:单独用 --port 9090 时原来只改 unit 不改 + config.yml,隧道会回源到 8080,现象是"隧道通了但一访问就 502" +* 域名:不传 --hostname 且 config.yml 里没有 hostname 时明确停下来 + 要输入,不猜、不写 config、不启隧道 + +测试(三套全绿,实测数字): + _build/test_deploy_sh.sh 110 通过 / 0 失败(Windows 沙箱) + _build/test_zip_deploy.sh 30 通过 / 0 失败(从发布 zip 解压再跑) + _build/test_deploy_device.sh 39 通过 / 0 失败(真机 Debian aarch64) +真机那套桩掉了 systemctl/iptables/ip/sysctl/nmcli +(--prefix 只隔离写文件,不隔离命令副作用), +第 8 节专门验证线上零影响:relay/tunnel/h2 全 active、 +MTU=1400、MSS 规则数、keepalive 测前测后完全一致。 + +== 恢复被误删的文件 == + +排查过程中有人用通配符清了 $env:TEMP\tmp.*,而 Git Bash 的 /tmp +正映射到那个 Windows 目录,导致两个被 git 跟踪的文件被删: + _build/insert_stub_checks.py + _build/inspect_pathtest.sh +已从 git 恢复。 + +教训:用通配符删临时文件很危险,尤其是 /tmp 在 Windows 上 +映射到共享目录时。改成只删明确列出的文件名。 + +== 清理 == + +删掉这轮调试产生的临时输出(reg3.txt / td1.txt / td2.txt 等), +不让它们进仓库。 diff --git a/_build/_d.txt b/_build/_d.txt deleted file mode 100644 index d0f7e89..0000000 --- a/_build/_d.txt +++ /dev/null @@ -1,55 +0,0 @@ - [PASS] 真中转起来了 - -═══ 场景 1:DEVICE_TTL 清理 + allow_new=False 的死亡组合 ═══ - [PASS] 设备首次注册成功 - [PASS] 关掉「允许新设备接入」成功 - [PASS] 【对照】设备还在 devices 里时,老设备能通过开关 - 等 5 秒让设备超时… - [PASS] 【前提】超时设备已被 snapshot 清出 devices - [PASS] 【前提】该设备的码绑定也已被清(codes 成对清理) - [PASS] 超时清理后老设备仍能重新上线 - [PASS] 【归因】打开开关后同一 deviceId 立刻能注册(证明是被开关挡的) - -═══ 场景 2:改码 A->B->C 后 codes 里有没有留孤儿 ═══ - [PASS] 设备注册(码 A) - [PASS] 改码 A->B 成功 - [PASS] 改码 B->C 成功 - [PASS] 一台设备只占一个码(codeCount 与设备数一致) - [PASS] 设备当前码是 C - [PASS] 旧码 A 已被释放(另一台设备能占用) - -═══ 场景 3:改码之后重启,codes 是否还原成自洽状态 ═══ - [PASS] 再改成 B - [PASS] state.json 里该设备只有一条码绑定 - -═══ 场景 4:deviceId 塞奇怪字符 ═══ - [PASS] 非法 deviceId(超长 200 字符)被拒绝而不是崩溃 - [PASS] 非法 deviceId(控制字符)被拒绝而不是崩溃 - [PASS] 非法 deviceId(路径分隔符)被拒绝而不是崩溃 - [PASS] 非法 deviceId(Unicode)被拒绝而不是崩溃 - [PASS] 非法 deviceId(只有空格)被拒绝而不是崩溃 - -═══ 场景 5:并发改码(两个线程同时改同一台设备)═══ - [PASS] 并发改码没抛异常 - [PASS] 并发后设备还在 - [PASS] 并发后设备当前码是 X 或 Y 之一 - [PASS] 并发改码后输掉的那个码没有变成孤儿(别的设备能占) - -═══ 场景 6:管理接口未鉴权访问 ═══ - [PASS] 未鉴权 POST /v1/admin/allow_new 被拒(401/403) - [PASS] 未鉴权 POST /v1/admin/set_code 被拒(401/403) - [PASS] 未鉴权 POST /v1/admin/delete 被拒(401/403) - [PASS] 未鉴权 POST /v1/admin/delete_all 被拒(401/403) - -═══ 场景 7:设备列表为空时管理页是否 500 ═══ - [PASS] 设备列表为空时管理页仍正常渲染 - [PASS] 空列表页面没有 traceback - -═══ 场景 8:关掉开关后重启中转,开关状态是否还在 ═══ - [PASS] 关掉开关 - [PASS] 重启后中转起来了 - [PASS] 重启后 allowNew 仍为 False(持久化生效) - -============================================================== - 通过 34 项,失败 0 项 -============================================================== diff --git a/_build/_e.txt b/_build/_e.txt deleted file mode 100644 index 2edbc80..0000000 --- a/_build/_e.txt +++ /dev/null @@ -1,55 +0,0 @@ - [PASS] 真中转起来了 - -═══ 场景 1:DEVICE_TTL 清理 + allow_new=False 的死亡组合 ═══ - [PASS] 设备首次注册成功 - [PASS] 关掉「允许新设备接入」成功 - [PASS] 【对照】设备还在 devices 里时,老设备能通过开关 - 等 5 秒让设备超时… - [PASS] 【前提】超时设备已被 snapshot 清出 devices - [PASS] 【前提】该设备的码绑定也已被清(codes 成对清理) - [PASS] 超时清理后老设备仍能重新上线 - [PASS] 【归因】打开开关后同一 deviceId 立刻能注册(证明是被开关挡的) - -═══ 场景 2:改码 A->B->C 后 codes 里有没有留孤儿 ═══ - [PASS] 设备注册(码 A) - [PASS] 改码 A->B 成功 - [PASS] 改码 B->C 成功 - [PASS] 一台设备只占一个码(codeCount 与设备数一致) - [PASS] 设备当前码是 C - [PASS] 旧码 A 已被释放(另一台设备能占用) - -═══ 场景 3:改码之后重启,codes 是否还原成自洽状态 ═══ - [PASS] 再改成 B - [PASS] state.json 里该设备只有一条码绑定 - -═══ 场景 4:deviceId 塞奇怪字符 ═══ - [PASS] 非法 deviceId(超长 200 字符)被拒绝而不是崩溃 - [PASS] 非法 deviceId(控制字符)被拒绝而不是崩溃 - [FAIL] 非法 deviceId(路径分隔符)被拒绝而不是崩溃 —— {'ok': True, 'token': '64c472759d8098f2402a87a5f6d8abd19ec617c6a44ddb93', 'code': '067393', 'note': '', 'pollSeconds': 2.0} - [PASS] 非法 deviceId(Unicode)被拒绝而不是崩溃 - [PASS] 非法 deviceId(只有空格)被拒绝而不是崩溃 - -═══ 场景 5:并发改码(两个线程同时改同一台设备)═══ - [PASS] 并发改码没抛异常 - [PASS] 并发后设备还在 - [PASS] 并发后设备当前码是 X 或 Y 之一 - [PASS] 并发改码后输掉的那个码没有变成孤儿(别的设备能占) - -═══ 场景 6:管理接口未鉴权访问 ═══ - [PASS] 未鉴权 POST /v1/admin/allow_new 被拒(401/403) - [PASS] 未鉴权 POST /v1/admin/set_code 被拒(401/403) - [PASS] 未鉴权 POST /v1/admin/delete 被拒(401/403) - [PASS] 未鉴权 POST /v1/admin/delete_all 被拒(401/403) - -═══ 场景 7:设备列表为空时管理页是否 500 ═══ - [PASS] 设备列表为空时管理页仍正常渲染 - [PASS] 空列表页面没有 traceback - -═══ 场景 8:关掉开关后重启中转,开关状态是否还在 ═══ - [PASS] 关掉开关 - [PASS] 重启后中转起来了 - [PASS] 重启后 allowNew 仍为 False(持久化生效) - -============================================================== - 通过 33 项,失败 1 项 -============================================================== diff --git a/_build/_vt.txt b/_build/_vt.txt deleted file mode 100644 index c73a00f..0000000 --- a/_build/_vt.txt +++ /dev/null @@ -1,27 +0,0 @@ - -═══ 复现:管理员关掉「允许新设备接入」,电脑隔夜再开机 ═══ - [PASS] ① 电脑首次登记成功 - [PASS] ② 管理员关掉「允许新设备接入」 - [PASS] ③ 电脑当场重连仍然可以(开关只挡新设备) - … 电脑关机了。等 4 秒模拟“隔夜”(真实是 6 小时) - [PASS] ④ 中转把超时设备清掉了(设计中如此) - 磁盘 relay_state.json 里还有这台设备的码绑定: False - 内存里 codeCount=0 - [PASS] ⑤ 电脑第二天开机 —— 应该能连上 - -═══ 追问:重启中转能不能救回来? ═══ - 重启后磁盘里这台设备的码绑定: False - 重启后内存 codeCount=0 - 重启后 allowNew=False - [PASS] ⑥ 重启中转后电脑能连上(说明重启能救回来) - -═══ 追问:有没有绕过口子? ═══ - [PASS] ⑦ 换新 deviceId 重装 —— 同样被挡(符合开关语义) - [PASS] ⑧ 新 deviceId + 老配对码 —— 也被挡 - -═══ 对照:打开开关后是否一切恢复 ═══ - [PASS] ⑨ 打开开关后原设备恢复 - -============================================================== - 通过 9 项,失败 0 项 -============================================================== diff --git a/_build/cli_out.txt b/_build/cli_out.txt deleted file mode 100644 index e10703f..0000000 --- a/_build/cli_out.txt +++ /dev/null @@ -1,9 +0,0 @@ -═══ 1. cli_relay_status()(不在 try 里)═══ - 它打印的内容: - (没有抛异常) - -═══ 2. cli_relay(url)(在 try 里)═══ - 它打印的内容: - 返回值: 1 - -═══ 3. 结论 ═══ diff --git a/_build/drb.txt b/_build/drb.txt deleted file mode 100644 index 3c0cfb9..0000000 --- a/_build/drb.txt +++ /dev/null @@ -1,28 +0,0 @@ - 中转端口 59913 被控端端口 59914 - 中转就绪 - 被控端登记: 成功 - - ── 照 bench 的顺序:attach -> pair ── - attach: 0ms ok=True session=223aadf1 - send pair: 1ms status=200 - poll#1: 17ms status=200 收到 102 字节 - ✓ pair 回复: {"ok": true, "token": "83dbc727003b9fb32c896b4a1a6fd55b", "serverName": "基准测试电脑", "protocol": 1} - ping#1: OK - ping#2: OK - ping#3: OK - ping#4: OK - ping#5: OK - - ════ 被控端日志(最后 25 行)════ - - ════ 进程还活着吗 ════ - agent poll = None - - ════ 中转日志(最后 10 行)════ - [10-07 18:18:24] 中转服务器 v1.8.2 启动,监听 127.0.0.1:59913 - [10-07 18:18:24] 长轮询 2 秒 · 队列上限 2048 KB · 数据目录 C:\Users\shu\AppData\Local\Temp\benchdiag_v6uvedpl\r - [10-07 18:18:24] 管理页:http://<本机>:59913/?key=lMvZ9w12vLnidllvR41PFZWg - [10-07 18:18:24] (钥匙也在 C:\Users\shu\AppData\Local\Temp\benchdiag_v6uvedpl\r\admin_key.txt) - [10-07 18:18:25] 被控端上线:基准测试电脑 码 975310 (基准测试电脑-f308c…) - [10-07 18:18:25] 注册请求 -> ok=True - [10-07 18:18:25] 手表接入:基准测试手表 (127.0.0.1) -> 基准测试电脑 diff --git a/_build/ins_out.txt b/_build/ins_out.txt deleted file mode 100644 index 7be0452..0000000 --- a/_build/ins_out.txt +++ /dev/null @@ -1,29 +0,0 @@ - 插桩了 4 处 - 插桩中转起来了 - 被控端登记: 插桩电脑 - 手表接入: ok=True - 1. pair OK 21ms - 2. ping OK 82ms - 3. ping OK 4ms - 4. ping OK 6ms - - ════ 插桩日志(中转侧数据流)════ - [10-07 17:59:09] [INS] agent/poll 进入,to_agent=0B,current_session=- - [10-07 17:59:10] [INS] client/send 70B -> to_agent 现有 0B,会话 d21cd512,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/poll 返回 70B,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/poll 进入,to_agent=0B,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/send 96B,active_session=d21cd512 - [10-07 17:59:10] [INS] client/send 16B -> to_agent 现有 0B,会话 d21cd512,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/poll 返回 16B,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/poll 进入,to_agent=0B,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/send 49B,active_session=d21cd512 - [10-07 17:59:10] [INS] client/send 16B -> to_agent 现有 0B,会话 d21cd512,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/poll 返回 16B,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/poll 进入,to_agent=0B,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/send 50B,active_session=d21cd512 - [10-07 17:59:10] [INS] client/send 16B -> to_agent 现有 0B,会话 d21cd512,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/poll 返回 16B,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/poll 进入,to_agent=0B,current_session=d21cd512 - [10-07 17:59:10] [INS] agent/send 50B,active_session=d21cd512 - - ════ 被控端日志 ════ diff --git a/_build/lanbench.txt b/_build/lanbench.txt deleted file mode 100644 index 52e1fbe..0000000 --- a/_build/lanbench.txt +++ /dev/null @@ -1,19 +0,0 @@ -================================================================== - 局域网直连 vs 跨网络中转 (每种路径 40 次 cmd:ping) -================================================================== -一、起本地中转(端口 59763) - 中转就绪 - 被控端就绪(局域网在听,中转已上线) - - 局域网 握手 16 ms 成功 40/40 (100.0%) 中位 0 P90 0 最小 0 最大 0 ms - 中转 握手 0 ms 成功 0/ 2 ( 0.0%) 中位 0 P90 0 最小 0 最大 0 ms - 连接阶段失败: timed out - -================================================================== - 对比 -================================================================== - 有路径没跑通,无法对比 - 中转 : 连接阶段失败: timed out - -BENCH_RESULT lan_median=0 lan_p90=0 lan_ok=40/40 lan_connect=16 relay_median=0 relay_p90=0 relay_ok=0/2 relay_connect=0 - **有路径没跑通** diff --git a/_build/lanbench2.txt b/_build/lanbench2.txt deleted file mode 100644 index 30a8b5e..0000000 --- a/_build/lanbench2.txt +++ /dev/null @@ -1,19 +0,0 @@ -================================================================== - 局域网直连 vs 跨网络中转 (每种路径 30 次 cmd:ping) -================================================================== -一、起本地中转(端口 59815) - 中转就绪 - 被控端就绪(局域网在听,中转已上线) - - 局域网 握手 17 ms 成功 30/30 (100.0%) 中位 0 P90 0 最小 0 最大 1 ms - 中转 握手 0 ms 成功 0/30 ( 0.0%) 中位 0 P90 0 最小 0 最大 0 ms - 连接阶段失败: timed out - -================================================================== - 对比 -================================================================== - 有路径没跑通,无法对比 - 中转 : 连接阶段失败: timed out - -BENCH_RESULT lan_median=0 lan_p90=0 lan_ok=30/30 lan_connect=17 relay_median=0 relay_p90=0 relay_ok=0/30 relay_connect=0 - **有路径没跑通** diff --git a/_build/lanbench3.txt b/_build/lanbench3.txt deleted file mode 100644 index 1ee8651..0000000 --- a/_build/lanbench3.txt +++ /dev/null @@ -1,19 +0,0 @@ -================================================================== - 局域网直连 vs 跨网络中转 (每种路径 30 次 cmd:ping) -================================================================== -一、起本地中转(端口 60008) - 中转就绪 - 被控端就绪(局域网在听,中转已上线) - - 局域网 握手 2 ms 成功 30/30 (100.0%) 中位 0 P90 0 最小 0 最大 0 ms - 中转 握手 0 ms 成功 0/30 ( 0.0%) 中位 0 P90 0 最小 0 最大 0 ms - 连接阶段失败: timed out - -================================================================== - 对比 -================================================================== - 有路径没跑通,无法对比 - 中转 : 连接阶段失败: timed out - -BENCH_RESULT lan_median=0 lan_p90=0 lan_ok=30/30 lan_connect=2 relay_median=0 relay_p90=0 relay_ok=0/30 relay_connect=0 - **有路径没跑通** diff --git a/_build/lanbench4.txt b/_build/lanbench4.txt deleted file mode 100644 index ada2231..0000000 --- a/_build/lanbench4.txt +++ /dev/null @@ -1,20 +0,0 @@ -================================================================== - 局域网直连 vs 跨网络中转 (每种路径 30 次 cmd:ping) -================================================================== -一、起本地中转(端口 60086) - 中转就绪 - 被控端就绪(局域网在听,中转已上线) - - 局域网 握手 16 ms 成功 30/30 (100.0%) 中位 0 P90 0 最小 0 最大 1 ms - 中转 握手 46 ms 成功 30/30 (100.0%) 中位 15 P90 29 最小 1 最大 32 ms - -================================================================== - 对比 -================================================================== - 中位延迟 局域网 0.0 ms 中转 15.1 ms -> 局域网快 0.0 倍 - P90 延迟 局域网 0 ms 中转 29 ms - 握手耗时 局域网 16 ms 中转 46 ms - 成功率 局域网 100.0% 中转 100.0% - -BENCH_RESULT lan_median=0 lan_p90=0 lan_ok=30/30 lan_connect=16 relay_median=15 relay_p90=29 relay_ok=30/30 relay_connect=46 - 两条路都跑通了 diff --git a/_build/lbg.txt b/_build/lbg.txt deleted file mode 100644 index a56d753..0000000 --- a/_build/lbg.txt +++ /dev/null @@ -1,20 +0,0 @@ - [PASS] 基准脚本存在 - ---- 一、两条路用不同的配对码 ---- - [PASS] 定义了局域网用的 code - [PASS] 定义了中转用的 relay_code - [PASS] 两个码不一样(否则第 2 台会被一码一机规则拒掉) - ---- 二、attach 要用 relay_code ---- - [PASS] 能定位到 relay_connect - [PASS] relay_connect 里用的是 relay_code - [PASS] relay_connect 里没有裸 attach(code) - ---- 三、start_agent 的判据要认码 ---- - [PASS] start_agent 接受码参数 - [PASS] 没有「只看有没有在线设备」的松判据 - [PASS] 判据里比对了配对码 - ---- 四、真跑一遍短基准(两条路都要通)---- - [PASS] 基准跑完并输出了 BENCH_RESULT - [PASS] 局域网那条路通了 - [PASS] 中转那条路通了 - -======================================================== - 通过 13 项,失败 0 项 diff --git a/_build/nt_out.txt b/_build/nt_out.txt deleted file mode 100644 index c5eae34..0000000 Binary files a/_build/nt_out.txt and /dev/null differ diff --git a/_build/reg2.txt b/_build/reg2.txt deleted file mode 100644 index 6329ec0..0000000 --- a/_build/reg2.txt +++ /dev/null @@ -1,294 +0,0 @@ - -====================================================================== - 0/7 清理残留进程与端口 -====================================================================== -端口干净 - 清掉上次测试残留的 4 个文件 - -====================================================================== - 0/7 编码审计(BOM / 行尾 / 乱码) -====================================================================== - -========================================================================== - ✓ 全部通过,没有编码问题 - -====================================================================== - 1/7 Python 被控端协议回归 -====================================================================== - [PASS] 移除后仅剩 1 台 - -==================================================================== -通过 69 项,失败 0 项 - -====================================================================== - 1b/7 防火墙阻止规则检测(真机连不上的根因) -====================================================================== -==================================================================== -通过 43 项,失败 0 项 -==================================================================== - -====================================================================== - 1c/7 连不上?-> 电脑打开网络自检(UDP 链路) -====================================================================== -============================================================ -通过 5 项,失败 0 项 - -====================================================================== - 1e/7 新增功能(电量/磁盘/性能/进程/剪贴板历史/安全边界) -====================================================================== -============================================================== -通过 22 项,失败 0 项 - -====================================================================== - 1f/7 电脑功能注册表(39 个功能 + 安全边界 + 可配置) -====================================================================== -============================================================== -通过 29 项,失败 0 项 - -====================================================================== - 1g/7 功能模糊测试(105 个功能 × 空参数 / 垃圾参数 / 越权路径) -====================================================================== - [崩溃] hand_reset({}) -> FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\shu\\AppData\\Local\\Temp\\tmp8myil6kd\\settings.json' - [崩溃] lesson_timer({}) -> FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\shu\\AppData\\Local\\Temp\\tmp8myil6kd\\settings.json' - [崩溃] loop_play({}) -> FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\shu\\AppData\\Local\\Temp\\tmp8myil6kd\\settings.json' - -====================================================================== - 1h/7 端到端(打包后的 EXE:配对 / 功能列表 / 越权 / 防爆破) -====================================================================== - -============================================================== -通过 13 项,失败 0 项 - -====================================================================== - 1i/7 静默模式(0 窗口 / 无终端 / 认证仍生效) -====================================================================== - -============================================================== -通过 8 项,失败 0 项 - -====================================================================== - 1j/7 配一次→零窗口(令牌重连,全程无窗口) -====================================================================== - -============================================================== -通过 12 项,失败 0 项 - -====================================================================== - 1k/7 首次安装设置窗口(出现一次,之后不再出现) -====================================================================== - -============================================================== -通过 14 项,失败 0 项 - -====================================================================== - 1l/7 开机零窗口(照注册表里的自启命令真跑一遍) -====================================================================== - -============================================================== -通过 7 项,失败 0 项 - -====================================================================== - 2/7 手表屏幕布局适配核算 (490x602) -====================================================================== - -========================================================================== -通过 40 项,失败 0 项 - -====================================================================== - 1z/7 手表分页完整性(防白屏:方法定义了必须被调用) -====================================================================== - sendMedia: 已被 media() 取代 - showInfo: 已被 feature_run 的 info 取代 - sp: 旧的字号辅助,已被 dp() 取代 - -========================================================== -通过 13 项,失败 0 项 - -====================================================================== - 2a2/7 APK 内容(诊断已合并进主程序) -====================================================================== -通过 15 项,失败 0 项 -==================================================================== - -====================================================================== - 2a/7 网络调优(MTU 修复) -====================================================================== - [PASS] 写了接口 MTU 1400 更差的教训 - -========================================================== -通过 21 项,失败 0 项 - -====================================================================== - 2b/7 投图显示方式(屏幕中间 / 全屏 / 自定义大小) -====================================================================== -============================================================== -通过 19 项,失败 0 项 -截图目录: C:\Users\shu\Desktop\deepseekagent\LanRemote\_tests\shots - -====================================================================== - 3/7 屏幕共享可见提示(真实界面 + Win32 窗口枚举) -====================================================================== - -==================================================================== -通过 13 项,失败 0 项 - -====================================================================== - 2b/7 中转 chunked 请求体(防连接错位) -====================================================================== - 通过 9 项,失败 0 项 - -====================================================================== - 3a/7 局域网直连路径(不经中转) -====================================================================== - 通过 29 项,失败 0 项 - -====================================================================== - 3a2/7 局域网优化(网段掩码 / 发现重发 / 回切) -====================================================================== - 通过 42 项,失败 0 项 - -====================================================================== - 3a3/7 手表局域网切换逻辑(源码断言) -====================================================================== - 通过 31 项,失败 0 项 - -====================================================================== - 3a4/7 编码与换行(.java/.py 必须 UTF-8 无 BOM + LF) -====================================================================== - 检查 24 个文件,编码/换行全部符合约定 - -====================================================================== - 3b/7 Python 静态检查(pyflakes) -====================================================================== - ✓ 没有会导致崩溃的问题 - -====================================================================== - 3b3/7 安装包脚本语法(Inno 的注释陷阱) -====================================================================== - [Code] 段落里没有违规写法 ✓ - -====================================================================== - 3b4/7 卸载逻辑(不能杀自己 / 不能阻塞) -====================================================================== - 通过 11 项,失败 0 项 - -====================================================================== - 3b2/7 管理页网络体检 -====================================================================== - 通过 15 项,失败 0 项 - -====================================================================== - 3b5/7 安装包完整周期(装 -> 验 -> 卸 -> 再验) -====================================================================== - 通过 20 项,失败 0 项 - -====================================================================== - 3b6/7 网页响应头(Content-Type / HEAD) -====================================================================== - 通过 12 项,失败 0 项 - -====================================================================== - 3b7/7 对外材料清洁度(不许出现管理后台) -====================================================================== - 通过 15 项,失败 0 项 - -====================================================================== - 3c/7 中转管理端批量删除 -====================================================================== - 通过 24 项,失败 0 项 - -====================================================================== - 3d/7 管理页 JS 合法性(防幽灵按键) -====================================================================== - 结论:JS 合法,删除按钮能正常工作 - -====================================================================== - 3e/7 管理页设备控制(接入开关 + 改配对码) -====================================================================== - 通过 23 项,失败 0 项 - -====================================================================== - 4b/7 手表 Activity 骨架(防白屏) -====================================================================== - 通过 24 项,失败 0 项 - -====================================================================== - 4c/7 编译整个手表 App(含界面代码) -====================================================================== - App 编译通过 - -====================================================================== - 5/7 编译 Java 协议层 -====================================================================== -编译通过 - -====================================================================== - 6/7 Java <-> 桩服务端 跨语言联调 -====================================================================== - [PASS] 关闭后 isConnected 为 false - -==================================================================== -通过 64 项,失败 0 项 - -====================================================================== - 7/7 Java <-> 打包后的 EXE 端到端联调 -====================================================================== -EXE 配对码: 421865 - [PASS] 关闭后 isConnected 为 false - -==================================================================== -通过 64 项,失败 0 项 - -EXE 接收到的文件: - 1,024 B broken.png - 307,207 B java_payload.bin - 202 B java_photo.png - 16,044 B java_sound.wav - -====================================================================== - 验证汇总 -====================================================================== - -项目 结果 --- -- -编码审计 PASS -Python 被控端协议回归 PASS -防火墙阻止规则检测 PASS -自检请求链路 PASS -新增功能 PASS -电脑功能注册表 PASS -功能模糊测试 PASS -端到端(打包 EXE) PASS -静默模式 PASS -配一次→零窗口 PASS -首次设置窗口 PASS -开机零窗口 PASS -手表布局适配 PASS -手表分页完整性 PASS -APK 内容 PASS -网络调优(MTU) PASS -投图显示方式 PASS -屏幕共享强制提示 PASS -中转 chunked 请求体 PASS -局域网直连路径 PASS -局域网优化 PASS -手表局域网切换 PASS -编码与换行 PASS -Python 静态检查 PASS -安装包脚本语法 PASS -卸载逻辑 PASS -管理页网络体检 PASS -安装包完整周期 PASS -网页响应头 PASS -对外材料清洁度 PASS -中转批量删除 PASS -管理页 JS 合法性 PASS -管理页设备控制 PASS -手表 Activity 骨架 PASS -手表 App 整体编译 PASS -Java 协议层编译 PASS -Java <-> 桩服务端 PASS -Java <-> 打包 EXE PASS - - -全部通过 diff --git a/_build/reg_out.txt b/_build/reg_out.txt deleted file mode 100644 index 09f9487..0000000 --- a/_build/reg_out.txt +++ /dev/null @@ -1,294 +0,0 @@ - -====================================================================== - 0/7 ÇåÀí²ÐÁô½ø³ÌÓë¶˿Ú -====================================================================== -¶˿ڸɾ» - ÇåµôÉϴβâÊԲÐÁôµÄ 4 ¸öÎļþ - -====================================================================== - 0/7 ±àÂëÉó¼ƣ¨BOM / ÐÐβ / ÂÒÂ룩 -====================================================================== - -========================================================================== - âœ?全部通过,没有编码问é¢? - -====================================================================== - 1/7 Python ±»¿ضËЭÒé»عé -====================================================================== - [PASS] 移除后仅å‰?1 å�? - -==================================================================== -通过 69 项,失败 0 é¡? - -====================================================================== - 1b/7 ·À»ðǽ×èֹ¹æÔò¼ì²⣨Õæ»úÁ¬²»ÉϵĸùÒò£© -====================================================================== -==================================================================== -通过 43 项,失败 0 é¡? -==================================================================== - -====================================================================== - 1c/7 Á¬²»Éϣ¿-> µçÄԴò¿ªÍøÂç×Լ죨UDP Á´·£© -====================================================================== -============================================================ -通过 5 项,失败 0 é¡? - -====================================================================== - 1e/7 ÐÂÔö¹¦Äܣ¨µçÁ¿/´ÅÅÌ/ÐÔÄÜ/½ø³Ì/¼ôÌù°åÀúʷ/°²ȫ±߽磩 -====================================================================== -============================================================== -通过 22 项,失败 0 é¡? - -====================================================================== - 1f/7 µçÄԹ¦ÄÜע²á±í£¨39 ¸ö¹¦ÄÜ + °²ȫ±߽ç + ¿ÉÅäÖã© -====================================================================== -============================================================== -通过 29 项,失败 0 é¡? - -====================================================================== - 1g/7 ¹¦ÄÜģºý²âÊԣ¨105 ¸ö¹¦ÄÜ ¡Á ¿ղÎÊý / À¬»ø²ÎÊý / ԽȨ·¾¶£© -====================================================================== - [崩溃] hand_reset({}) -> FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\shu\\AppData\\Local\\Temp\\tmp5d758dnb\\settings.json' - [崩溃] lesson_timer({}) -> FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\shu\\AppData\\Local\\Temp\\tmp5d758dnb\\settings.json' - [崩溃] loop_play({}) -> FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\shu\\AppData\\Local\\Temp\\tmp5d758dnb\\settings.json' - -====================================================================== - 1h/7 ¶˵½¶ˣ¨´ò°üºóµÄ EXE£ºÅä¶Ô / ¹¦ÄÜÁбí / ԽȨ / ·À±¬Æƣ© -====================================================================== - -============================================================== -通过 13 项,失败 0 é¡? - -====================================================================== - 1i/7 ¾²Ĭģʽ£¨0 ´°¿Ú / ÎÞÖնË / ÈÏ֤ÈÔÉúЧ£© -====================================================================== - -============================================================== -通过 8 项,失败 0 é¡? - -====================================================================== - 1j/7 Åäһ´ΡúÁ㴰¿ڣ¨ÁîÅÆÖØÁ¬£¬ȫ³ÌÎ޴°¿ڣ© -====================================================================== - -============================================================== -通过 12 项,失败 0 é¡? - -====================================================================== - 1k/7 Ê״ΰ²װÉèÖô°¿ڣ¨³öÏÖһ´Σ¬֮ºó²»ÔٳöÏ֣© -====================================================================== - -============================================================== -通过 14 项,失败 0 é¡? - -====================================================================== - 1l/7 ¿ª»úÁ㴰¿ڣ¨ÕÕע²á±íÀïµÄ×ÔÆôÃüÁîÕæÅÜһ±飩 -====================================================================== - -============================================================== -通过 7 项,失败 0 é¡? - -====================================================================== - 2/7 ÊֱíÆÁϲ¼¾ÖÊÊÅäºËËã (490x602) -====================================================================== - -========================================================================== -通过 40 项,失败 0 é¡? - -====================================================================== - 1z/7 Êֱí·ÖҳÍêÕûÐԣ¨·À°×ÆÁ£º·½·¨¶¨ÒåÁ˱ØÐ뱻µ÷Óã© -====================================================================== - sendMedia: 已被 media() 取代 - showInfo: 已被 feature_run çš?info 取代 - sp: 旧的字号辅助,已è¢?dp() 取代 - -========================================================== -通过 13 项,失败 0 é¡? - -====================================================================== - 2a2/7 APK ÄÚÈݣ¨Õï¶ÏÒѺϲ¢½øÖ÷³ÌÐò£© -====================================================================== -通过 15 项,失败 0 é¡? -==================================================================== - -====================================================================== - 2a/7 ÍøÂçµ÷Óţ¨MTU Ð޸´£© -====================================================================== - [PASS] 写了接口 MTU 1400 更差的教è®? - -========================================================== -通过 20 项,失败 1 é¡? - -====================================================================== - 2b/7 ͶͼÏÔʾ·½ʽ£¨ÆÁĻÖмä / ȫÆÁ / ×Զ¨Òå´óС£© -====================================================================== -============================================================== -通过 19 项,失败 0 é¡? -截图目录: C:\Users\shu\Desktop\deepseekagent\LanRemote\_tests\shots - -====================================================================== - 3/7 ÆÁϹ²Ïí¿ɼûÌáʾ£¨Õæʵ½çÃæ + Win32 ´°¿Úö¾٣© -====================================================================== - -==================================================================== -通过 13 项,失败 0 é¡? - -====================================================================== - 2b/7 ÖÐת chunked ÇëÇóÌ壨·ÀÁ¬½Ӵí룩 -====================================================================== - 通过 9 项,失败 0 é¡? - -====================================================================== - 3a/7 ¾ÖÓòÍøֱÁ¬·¾¶£¨²»¾­ÖÐת£© -====================================================================== - 通过 29 项,失败 0 é¡? - -====================================================================== - 3a2/7 ¾ÖÓòÍøÓŻ¯£¨Íø¶ÎÑÚÂë / ·¢ÏÖÖط¢ / »ØÇУ© -====================================================================== - 通过 42 项,失败 0 é¡? - -====================================================================== - 3a3/7 Êֱí¾ÖÓòÍøÇл»Â߼­£¨ԴÂë¶ÏÑԣ© -====================================================================== - 通过 31 项,失败 0 é¡? - -====================================================================== - 3a4/7 ±àÂëÓ뻻ÐУ¨.java/.py ±ØÐë UTF-8 ÎÞ BOM + LF£© -====================================================================== - 检æŸ?24 个文件,编码/换行全部符合约定 - -====================================================================== - 3b/7 Python ¾²̬¼ì²飨pyflakes£© -====================================================================== - âœ?没有会导致崩溃的问题 - -====================================================================== - 3b3/7 °²װ°ü½ű¾Ó﷨£¨Inno µÄעÊÍÏÝÚ壩 -====================================================================== - [Code] 段落里没有违规写æ³?âœ? - -====================================================================== - 3b4/7 жÔØÂ߼­£¨²»ÄÜɱ×Լº / ²»ÄÜ×èÈû£© -====================================================================== - 通过 11 项,失败 0 é¡? - -====================================================================== - 3b2/7 ¹ÜÀíҳÍøÂçÌå¼ì -====================================================================== - 通过 15 项,失败 0 é¡? - -====================================================================== - 3b5/7 °²װ°üÍêÕûÖÜÆڣ¨װ -> Ñé -> ж -> ÔÙÑ飩 -====================================================================== - 通过 20 项,失败 0 é¡? - -====================================================================== - 3b6/7 ÍøҳÏìӦͷ£¨Content-Type / HEAD£© -====================================================================== - 通过 12 项,失败 0 é¡? - -====================================================================== - 3b7/7 ¶ÔÍâ²ÄÁÏÇå½à¶ȣ¨²»Ðí³öÏֹÜÀíºǫ́£© -====================================================================== - 通过 15 项,失败 0 é¡? - -====================================================================== - 3c/7 ÖÐת¹ÜÀí¶ËÅúÁ¿ɾ³ý -====================================================================== - 通过 24 项,失败 0 é¡? - -====================================================================== - 3d/7 ¹ÜÀíҳ JS ºϷ¨Ðԣ¨·ÀÓÄÁ鰴¼ü£© -====================================================================== - 结论:JS 合法,删除按钮能正常工作 - -====================================================================== - 3e/7 ¹ÜÀíҳÉ豸¿ØÖƣ¨½ÓÈ뿪¹Ø + ¸ÄÅä¶ÔÂ룩 -====================================================================== - 通过 23 项,失败 0 é¡? - -====================================================================== - 4b/7 Êֱí Activity ¹Ǽܣ¨·À°×ÆÁ£© -====================================================================== - 通过 24 项,失败 0 é¡? - -====================================================================== - 4c/7 ±àÒëÕû¸öÊֱí App£¨º¬½çÃæ´úÂ룩 -====================================================================== - App ±àÒëͨ¹ý - -====================================================================== - 5/7 ±àÒë Java ЭÒé²ã -====================================================================== -±àÒëͨ¹ý - -====================================================================== - 6/7 Java <-> ׮·þÎñ¶Ë ¿çÓïÑÔÁªµ÷ -====================================================================== - [PASS] 关闭å�?isConnected ä¸?false - -==================================================================== -通过 64 项,失败 0 é¡? - -====================================================================== - 7/7 Java <-> ´ò°üºóµÄ EXE ¶˵½¶ËÁªµ÷ -====================================================================== -EXE Åä¶ÔÂë: 193406 - [PASS] 关闭å�?isConnected ä¸?false - -==================================================================== -通过 64 项,失败 0 é¡? - -EXE ½ÓÊյ½µÄÎļþ£º - 1,024 B broken.png - 307,207 B java_payload.bin - 202 B java_photo.png - 16,044 B java_sound.wav - -====================================================================== - Ñé֤»ã×Ü -====================================================================== - -ÏîĿ ½á¹û ----- ---- -±àÂëÉó¼Æ PASS -Python ±»¿ضËЭÒé»عé PASS -·À»ðǽ×èֹ¹æÔò¼ì²â PASS -×ԼìÇëÇóÁ´· PASS -ÐÂÔö¹¦ÄÜ PASS -µçÄԹ¦ÄÜע²á±í PASS -¹¦ÄÜģºý²âÊÔ PASS -¶˵½¶ˣ¨´ò°ü EXE£© PASS -¾²Ĭģʽ PASS -Åäһ´ΡúÁ㴰¿Ú PASS -Ê״ÎÉèÖô°¿Ú PASS -¿ª»úÁ㴰¿Ú PASS -Êֱí²¼¾ÖÊÊÅä PASS -Êֱí·ÖҳÍêÕûÐÔ PASS -APK ÄÚÈÝ PASS -ÍøÂçµ÷Óţ¨MTU£© FAIL -ͶͼÏÔʾ·½ʽ PASS -ÆÁϹ²ÏíǿÖÆÌáʾ PASS -ÖÐת chunked ÇëÇóÌå PASS -¾ÖÓòÍøֱÁ¬·¾¶ PASS -¾ÖÓòÍøÓŻ¯ PASS -Êֱí¾ÖÓòÍøÇл» PASS -±àÂëÓ뻻ÐÐ PASS -Python ¾²̬¼ì²é PASS -°²װ°ü½ű¾Ó﷨ PASS -жÔØÂ߼­ PASS -¹ÜÀíҳÍøÂçÌå¼ì PASS -°²װ°üÍêÕûÖÜÆÚ PASS -ÍøҳÏìӦͷ PASS -¶ÔÍâ²ÄÁÏÇå½à¶È PASS -ÖÐתÅúÁ¿ɾ³ý PASS -¹ÜÀíҳ JS ºϷ¨ÐÔ PASS -¹ÜÀíҳÉ豸¿ØÖÆ PASS -Êֱí Activity ¹ǼÜ PASS -Êֱí App ÕûÌå±àÒë PASS -Java ЭÒé²ã±àÒë PASS -Java <-> ׮·þÎñ¶Ë PASS -Java <-> ´ò°ü EXE PASS - - - Ïîʧ°Ü diff --git a/_build/repro_out.txt b/_build/repro_out.txt deleted file mode 100644 index 0e3fa20..0000000 Binary files a/_build/repro_out.txt and /dev/null differ diff --git a/_build/rl_out.txt b/_build/rl_out.txt deleted file mode 100644 index d1bfa3c..0000000 --- a/_build/rl_out.txt +++ /dev/null @@ -1,35 +0,0 @@ -一、准备被控端 - [PASS] 配对码已设 - [PASS] 中转地址已设 - -二、起本地中转服务器 - [PASS] 中转已启动 - -三、起被控端(它会主动连中转) - [PASS] 被控端登记到中转并在线 - [PASS] 中转看到的配对码正确 - [PASS] 中转看到设备名 - -四、模拟手表接入 - [PASS] 接入成功 - [PASS] 看到被控端名字 - -五、经中转发协议命令(这才是真验证) - [PASS] 未配对时 ping 被拒(鉴权仍生效) - [PASS] 配对成功(经中转) - [PASS] 拿到设备令牌 - [PASS] 拿到被控端名字 - [PASS] 配对后 ping 正常 - [PASS] 功能列表经中转返回 - [PASS] 执行功能经中转成功 - [PASS] 功能真的有输出 - [PASS] info 经中转返回 - -六、换一个手表(中转应该踢掉旧的,被控端应认出新会话) - [PASS] 第二个手表能接入 - [PASS] 新会话能用已保存的令牌直接登录 - [PASS] 新会话 ping 正常 - [PASS] 中转上只剩一个会话 - -================================================================== -通过 21 项,失败 0 项 diff --git a/_build/rp_pc_long.tsv b/_build/rp_pc_long.tsv index 5a98346..fab240f 100644 --- a/_build/rp_pc_long.tsv +++ b/_build/rp_pc_long.tsv @@ -173,3 +173,70 @@ time code ms 2026-10-07 18:20:40 200 1432 2026-10-07 18:20:56 200 1468 2026-10-07 18:21:13 200 1462 +2026-10-07 18:21:29 200 1379 +2026-10-07 18:21:45 200 1133 +2026-10-07 18:22:02 200 1317 +2026-10-07 18:22:18 200 1444 +2026-10-07 18:22:35 200 1475 +2026-10-07 18:22:51 200 1275 +2026-10-07 18:23:07 200 1371 +2026-10-07 18:23:24 200 1401 +2026-10-07 18:23:40 200 1379 +2026-10-07 18:23:56 200 1060 +2026-10-07 18:24:12 200 1119 +2026-10-07 18:25:08 200 41240 +2026-10-07 18:25:24 200 849 +2026-10-07 18:25:41 200 1726 +2026-10-07 18:25:57 200 830 +2026-10-07 18:26:13 200 837 +2026-10-07 18:26:29 200 908 +2026-10-07 18:26:44 200 854 +2026-10-07 18:27:25 0 25396 +2026-10-07 18:27:41 200 812 +2026-10-07 18:27:57 200 903 +2026-10-07 18:28:12 200 820 +2026-10-07 18:28:28 200 884 +2026-10-07 18:28:44 200 814 +2026-10-07 18:29:00 200 951 +2026-10-07 18:29:16 200 824 +2026-10-07 18:29:32 200 823 +2026-10-07 18:29:49 200 1882 +2026-10-07 18:30:04 200 822 +2026-10-07 18:30:20 200 816 +2026-10-07 18:30:36 200 742 +2026-10-07 18:31:13 200 22350 +2026-10-07 18:31:51 200 22209 +2026-10-07 18:32:28 200 22508 +2026-10-07 18:33:05 200 22096 +2026-10-07 18:33:21 200 871 +2026-10-07 18:33:37 200 720 +2026-10-07 18:33:53 200 881 +2026-10-07 18:34:08 200 846 +2026-10-07 18:34:24 200 783 +2026-10-07 18:34:40 200 824 +2026-10-07 18:34:56 200 711 +2026-10-07 18:35:33 200 22465 +2026-10-07 18:35:50 200 1671 +2026-10-07 18:36:06 200 998 +2026-10-07 18:36:22 200 1079 +2026-10-07 18:36:38 200 1381 +2026-10-07 18:36:54 200 1097 +2026-10-07 18:37:11 200 1387 +2026-10-07 18:37:27 200 1445 +2026-10-07 18:37:43 200 1116 +2026-10-07 18:38:00 200 1408 +2026-10-07 18:38:16 200 1504 +2026-10-07 18:38:33 200 1488 +2026-10-07 18:38:49 200 1470 +2026-10-07 18:39:06 200 1309 +2026-10-07 18:39:22 200 1394 +2026-10-07 18:39:38 200 1037 +2026-10-07 18:39:55 200 1461 +2026-10-07 18:40:11 200 1001 +2026-10-07 18:40:28 200 2367 +2026-10-07 18:40:44 200 1371 +2026-10-07 18:41:01 200 1404 +2026-10-07 18:41:17 200 1669 +2026-10-07 18:41:34 200 1914 +2026-10-07 18:41:51 200 1286 +2026-10-07 18:42:07 200 1029 diff --git a/_build/rp_wait_log.txt b/_build/rp_wait_log.txt new file mode 100644 index 0000000..e69de29 diff --git a/_build/vcr.txt b/_build/vcr.txt deleted file mode 100644 index 9856c0d..0000000 --- a/_build/vcr.txt +++ /dev/null @@ -1,23 +0,0 @@ -════════ 场景 A:两条路用同一个配对码(复刻 bench 现状)════════ - 第 1 台(跑局域网): 登记=True 设备数=1 - 已停掉第 1 台 - 第 2 台(跑中转): start_agent 认为登记=True - 中转上看到的设备: 验码电脑 码 246813 在线=True 空闲=1s - 场景A pair **超时**(没人回包) - - ── 中转日志里有没有『码被占用』── - [10-07 18:18:56] 配对码 246813 已被 验码电脑-b0dd7aae76ba 占用,拒绝 验码电脑-b6bfc86f574a - [10-07 18:19:02] 配对码 246813 已被 验码电脑-b0dd7aae76ba 占用,拒绝 验码电脑-b6bfc86f574a - [10-07 18:19:08] 配对码 246813 已被 验码电脑-b0dd7aae76ba 占用,拒绝 验码电脑-b6bfc86f574a - -════════ 场景 B:两条路各用不同的配对码(修法)════════ - 第 1 台: 登记=True - 第 2 台: 登记=True - 场景B pair 成功: {"ok": true, "token": "0fe2d1ed61da6cd489230490d4a77a72", "serverName": "验码电脑", - -════════ 结论 ════════ - 场景 A(同一个码): **不通** - 场景 B(不同码) : 通 - → 假设成立:bench 失败是因为两条路用了同一个配对码, - 第 2 台被「一码一机」规则拒掉,而 start_agent - 看到第 1 台还挂在线就以为成功了。**产品没问题。** diff --git a/_tests/shots/1-屏幕中间.png b/_tests/shots/1-屏幕中间.png index 54cc3e7..683dd74 100644 Binary files a/_tests/shots/1-屏幕中间.png and b/_tests/shots/1-屏幕中间.png differ diff --git a/_tests/shots/3-自定义640x400.png b/_tests/shots/3-自定义640x400.png index d404904..4e38939 100644 Binary files a/_tests/shots/3-自定义640x400.png and b/_tests/shots/3-自定义640x400.png differ