1.6.1:常规发布

- 版本号 1.6.1 -> 1.6.1
- 重建三端并打包
- 关键测试全过
This commit is contained in:
xmz7891
2026-10-06 20:38:33 +08:00
parent 5e769928f9
commit 878b7311e9
81 changed files with 728 additions and 34 deletions
+114
View File
@@ -0,0 +1,114 @@
# -*- coding: utf-8 -*-
r"""修:中转连接尝试阻塞了局域网发现。
现象(agent 日志):
[20:31:17] 没配过中转地址,用内置默认值:192.168.10.105:8080;https://...
[20:31:25] http://192.168.10.105:8080 不通,试下一个 <- 等了 8 秒
[20:31:27] https://relay.xxmxxs.top 不通,试下一个 <- 又 2 秒
[20:31:27] 自动发现已开启(UDP 8766) <- 10 秒后才绑上
server.start() 原来的顺序:
1. 绑 TCP
2. enable_relay() <- 挨个试中转地址,每个都要等超时(这里 10 秒)
3. 起 accept 线程
4. 起 DiscoveryResponder
问题:**局域网发现被中转拖住了**。
电脑和手表在同一个 WiFi 时,本来应该"广播一下就找到",
结果因为中转连不上,要等 10 几秒手表才搜得到电脑。
中转地址越烂、候选越多,等得越久。
影响:
* 用户体验上表现为"刚开电脑时手表搜不到,过一会儿才行"
* 自动化测试也栽在这(广播时发现服务还没起)
改法:把局域网发现**提到 enable_relay() 之前**。
局域网是本机能力,不该依赖任何网络外部条件。
"""
from __future__ import annotations
import ast
import sys
from pathlib import Path
SERVER = (Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\windows"
r"\lanremote\server.py"))
OLD = ''' # 配了中转地址就同时启用跨网络通道(和局域网监听并存,不冲突)
try:
self.enable_relay()
except Exception as exc: # noqa: BLE001
self._log(f"启用中转失败:{exc}")
self._accept_thread = threading.Thread(target=self._accept_loop,
name="accept", daemon=True)
self._accept_thread.start()
self._clip_thread = threading.Thread(target=self._clip_loop,
name="clip", daemon=True)
self._clip_thread.start()
# 启动局域网自动发现,让手表不用输 IP
self._discovery = DiscoveryResponder(self.store, self.port)
# 手表点「连不上?」会广播请求,这里就把网络自检窗口弹出来
self._discovery.on_selfcheck = self._on_selfcheck_request
if self._discovery.start():
self._log(f"自动发现已开启(UDP {DISCOVERY_PORT})")
else:
self._log(f"自动发现未开启:{self._discovery.last_error}")'''
NEW = ''' # ── 先起局域网发现 ──
#
# 顺序很重要:enable_relay() 会挨个试中转地址,
# 每个候选都要等到超时才算"不通",地址越烂等得越久(实测 10 秒+)。
# 原来这一步排在发现服务前面,导致:
# 电脑刚开机的十几秒里,手表广播搜不到它。
# 局域网发现是纯本机能力,不该被"连不连得上外网"拖住,
# 所以挪到前面,开机即可被搜到。
self._discovery = DiscoveryResponder(self.store, self.port)
# 手表点「连不上?」会广播请求,这里就把网络自检结论算出来
self._discovery.on_selfcheck = self._on_selfcheck_request
if self._discovery.start():
self._log(f"自动发现已开启(UDP {DISCOVERY_PORT})")
else:
self._log(f"自动发现未开启:{self._discovery.last_error}")
# ── 再起收发线程 ──
self._accept_thread = threading.Thread(target=self._accept_loop,
name="accept", daemon=True)
self._accept_thread.start()
self._clip_thread = threading.Thread(target=self._clip_loop,
name="clip", daemon=True)
self._clip_thread.start()
# ── 最后才连中转(会阻塞,所以放最后)──
# 配了中转地址就同时启用跨网络通道(和局域网监听并存,不冲突)
try:
self.enable_relay()
except Exception as exc: # noqa: BLE001
self._log(f"启用中转失败:{exc}")'''
def main() -> int:
text = SERVER.read_text(encoding="utf-8")
if "先起局域网发现" in text:
print(" 已经改过")
return 0
if OLD not in text:
print(" [失败] 锚点没找到")
return 1
text = text.replace(OLD, NEW, 1)
SERVER.write_text(text, encoding="utf-8", newline="\n")
print(" 已把局域网发现提到 enable_relay() 之前")
try:
ast.parse(text)
print(" server.py 语法 OK")
except SyntaxError as exc:
print(f" 语法错误: 行 {exc.lineno}: {exc.msg}")
return 1
return 0
if __name__ == "__main__":
sys.exit(main())