v1.4.1 — Clash 远程管理模块 + mihomo 崩溃防护
一、新功能:Clash 远程管理模块
主页新增独立模块(默认隐藏),与「浏览器代理模式切换」并列分层显示,三按钮组 [规则] [全局] [直连] 切换 Clash 内核代理模式。
- 通过 Clash API
PATCH /configs {mode}实时切换 mihomo 内核 mode - 默认
clashRemoteEnabled=false,需在「设置 → 连接配置」中手动启用 - LAYOUT_VERSION 3 → 4:clash-remote 模块自动加入默认布局
- 「代理模式切换」改名「浏览器代理模式切换」以避免概念混淆
- 9 个新翻译键(zh_CN / en / ja)
二、关键修复(实测发现并解决)
| 问题 | 修复 |
|---|---|
| 切换 mode 后旧连接仍走旧代理 | switchClashMode 成功后调用 DELETE /connections 关闭所有活跃连接 |
| 重启 Clash 后按钮不跳回「规则」 | initPopup 在 await settings 后主动调用 setClashRemoteModuleVisible + renderClashRemoteMode |
| 保存设置后主页不显示模块 | buildTabLayout 重建布局后立即调用 setClashRemoteModuleVisible |
| 「全局」按钮切了不生效(走伪节点) | pickFirstRealProxyNode 过滤 server 为空的伪节点;新增 pickPreferredGlobalNode 优先指向 Selector 类型代理组(通常是「节点选择」组) |
| 重启 Clash 导致 mihomo fatal 退出 | restartClash 新增 Step 0 isMihomoAlive 预检 + Step 2.5 validateRulesAgainstGroups 丢弃引用不存在代理组的规则 |
三、伪节点问题背景
部分机场在订阅开头插入"剩余流量:xxx GB"伪节点(server 字段为空),用于在 Clash UI 显示流量信息。mihomo 隐式 GLOBAL 组会把这些伪节点也加入候选,GLOBAL 默认选中第一个伪节点导致所有流量走伪节点(连接失败后 fallback 到列表首个真实节点,表现为切到 global 后 ip111 显示东京而非节点选择组的香港/新加坡)。
修复后切 global 时:
- 自动跳过伪节点 + 代理组
- GLOBAL 默认指向「🚀 节点选择」组
- 流量跟随用户在节点选择组中切换的节点
- 后续用户切换节点选择组中的节点时,GLOBAL 自动跟随,无需重新点「全局」按钮
四、mihomo 崩溃问题背景
当规则引用的代理组在当前 proxy-groups 中不存在时(例如配置文件被裁剪或某代理组被删除),mihomo 启动时会 fatal 退出:
level=fatal msg="Parse config error: rules[N] [RULE-SET,xxx,SOME_GROUP] error: proxy [SOME_GROUP] not found"
ClashOmega 的「重启 Clash」按钮通过 HTTP API 与 mihomo 通信,但 mihomo 已死时任何 HTTP API 都不可达,导致死循环失败。修复后:
- Step 0 检测 mihomo 是否存活,已死时返回明确提示让用户去 Clash Verge Rev GUI 重启
- Step 2.5 在写入快照前校验规则,丢弃引用不存在代理组的规则,保证写入的快照可被 mihomo 正常加载
五、文件清单
| 文件 | 变更 |
|---|---|
| extension/manifest.json | 1.4.0 → 1.4.1 |
| extension/background.js | restartClash 加 Step 0 + Step 2.5,restartClash 重置 mode |
| extension/lib/clash-api.js | 新增 isMihomoAlive / validateRulesAgainstGroups / pickPreferredGlobalNode,伪节点过滤,closeAllConnections |
| extension/popup/popup.js | 模块显示修复 + initPopup 刷新 + renderClashRemoteMode |
| extension/popup/popup.html | Clash 远程管理模块 UI |
| extension/locales/{zh_CN,en,ja}.json | 9 个新翻译键 |
| docs/index.html | 着陆页 v1.4.1 |
| README.md / README_EN.md | 版本号同步 |
| CHANGELOG.md | v1.4.1 详细变更记录 |
六、升级须知
- 老用户升级后 LAYOUT_VERSION 自动从 3 升级到 4,自定义布局会被重置为默认(新增 clash-remote 模块)
- 升级后需在「设置 → 连接配置」中手动启用「Clash 远程管理」开关
- 升级后需重新加载扩展(chrome://extensions/ → 重新加载),刷新 service worker
详见 CHANGELOG.md