ClashX 策略组设计指南:自动选择、故障转移与手动覆盖的平衡

节点多不等于体验好。真正决定稳定性的,是策略组如何分层、如何切换、如何回滚。很多配置在测速时很漂亮,但一到晚高峰就反复重选,最终表现为会话抖动、登录失效和业务中断。

这篇文章给出一套可落地、可维护的策略组设计方案。你会得到一份结构模板、分工规则、上线流程和故障转移参数建议,目标是把“不可控的快”改成“可预测的稳”。

为什么节点多但体验不稳

当所有流量都压进单层自动组时,系统会频繁在“当前最优节点”之间跳转。这个跳转不是免费的:连接重建、TLS 重协商、会话迁移都会带来瞬时损耗,长连接业务最容易受影响。

💡
稳定性的关键是控制切换成本

设计策略组时,先思考“哪些流量可以被打断”,再决定自动化边界。把高容错业务放自动层,把低容错业务放手动层,才是长期可用的结构。

切换频率
12-30 次/小时
单层自动组常见区间
延迟波动
40-180ms
晚高峰跨洲线路典型值
会话中断
3%-8%
视频会议与后台最明显

诊断清单

  • 10 分钟内连续两次掉线或重连。
  • 测速正常但网页首包明显变慢。
  • 日志出现连续策略切换记录。
  • SSH、会议、远程桌面比浏览网页更容易卡顿。
  • 改为固定节点后问题明显缓解。

三层策略组结构

推荐结构是:入口层(总开关)→ 区域层(自动收敛)→ 节点层(执行连接)。入口层保证可控,区域层负责弹性,节点层保持清晰。这样能同时得到速度和稳定性。

YAML 模板

proxy-groups:
  - name: "G-ENTRY"
    type: select
    proxies: ["G-AUTO", "G-MANUAL", "G-FAILOVER", DIRECT]

  - name: "G-AUTO"
    type: url-test
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    tolerance: 80
    proxies: ["R-HK-AUTO", "R-SG-AUTO", "R-JP-AUTO"]

  - name: "G-MANUAL"
    type: select
    proxies: ["R-HK-MANUAL", "R-SG-MANUAL", "R-JP-MANUAL"]

  - name: "R-HK-AUTO"
    type: url-test
    url: "http://cp.cloudflare.com/generate_204"
    interval: 240
    tolerance: 100
    proxies: ["HK-01", "HK-02", "HK-03"]

  - name: "R-HK-MANUAL"
    type: select
    proxies: ["HK-01", "HK-02", "HK-03"]
结构 优势 问题 适用
单层 配置最简单 切换噪声大、难排障 临时测试
双层 有一定分组能力 入口职责仍混乱 轻度个人使用
三层 可控、可观测、可回滚 初期搭建稍复杂 长期稳定运行
🧱
架构收益

入口层专注决策,区域层专注质量,节点层专注可达。分层后每次变更都能限定影响范围,避免全局连锁抖动。

三层结构的实际好处

  1. 关键业务可以绑定手动稳定组。
  2. 普通流量继续享受自动优化。
  3. 故障只影响局部层级,不会全局扩散。
  4. 日志与排障路径更可读,团队协作成本更低。

自动与手动如何分工

分工原则很简单:可重试业务优先自动,低容错业务优先手动。不要把“自动最优”误当成“全量自动”。

业务类型 推荐策略 说明
网页浏览 / 社媒 G-AUTO 高容错,适合自动切换
流媒体 区域自动 + 人工兜底 地区稳定性优先
支付 / 企业后台 G-MANUAL 避免切换导致登录态失效
会议 / SSH 固定手动组 长连接对抖动最敏感
下载更新 G-FAILOVER 优先可用性
⚠️
自动切换风险提示

把低容错业务放在自动组,等于把会话稳定性交给网络波动。建议关键域名先固定到手动组,再逐步放权给自动层。

规则示例

rules:
  - DOMAIN-SUFFIX,corp-admin.com,G-MANUAL
  - DOMAIN-SUFFIX,pay.example.com,G-MANUAL
  - DOMAIN-SUFFIX,zoom.us,G-MANUAL
  - DOMAIN-SUFFIX,netflix.com,R-SG-AUTO
  - DOMAIN-SUFFIX,youtube.com,R-HK-AUTO
  - GEOIP,CN,DIRECT
  - MATCH,G-ENTRY

故障转移设计要点

故障转移的目标不是“永不切换”,而是“发生切换时影响最小、恢复路径明确”。参数设计要避免过度灵敏。

fallback 配置示例

proxy-groups:
  - name: "G-FAILOVER"
    type: fallback
    url: "http://www.gstatic.com/generate_204"
    interval: 180
    lazy: true
    proxies: ["R-HK-MANUAL", "R-SG-MANUAL", "R-JP-MANUAL"]

  - name: "B-WORK"
    type: select
    proxies: ["G-MANUAL", "G-FAILOVER", DIRECT]

rules:
  - DOMAIN-SUFFIX,corp.example.com,B-WORK
  - DOMAIN-SUFFIX,git.example.com,B-WORK
  - MATCH,G-ENTRY
🩺
健康检查参数建议

interval 推荐 120-300 秒;探测 URL 选轻量且稳定地址;跨洲线路建议适当放宽容忍阈值,减少误切换。

🚨
检查间隔过短会制造假故障

10-30 秒级别探测通常会引入噪声,系统会被“探测波动”而非“真实故障”驱动,最终出现反复横跳。

健康检查间隔
180s
稳定与灵敏平衡点
切换延迟
1-3s
用户可感知但可接受
恢复时间
3-8min
建议观察窗口

可维护的命名规范

策略越复杂,命名越关键。命名混乱会导致“能跑但没人敢改”。建议使用固定前缀,做到名称即用途。

命名约定表

前缀 用途 示例
G- 全局入口组 G-ENTRY / G-AUTO / G-MANUAL
R- 区域组 R-HK-AUTO / R-SG-MANUAL
B- 业务组 B-WORK / B-STREAM
F- 兜底组 F-BACKUP / F-EMERGENCY
🤝
协作收益

统一命名后,值班同学可以直接从日志定位责任层级,新成员也能快速理解配置结构,减少“改动恐惧”。

命名实战示例

proxy-groups:
  - name: "G-ENTRY"
    type: select
    proxies: ["G-AUTO", "G-MANUAL", "F-BACKUP", DIRECT]

  - name: "B-STREAM"
    type: select
    proxies: ["R-SG-AUTO", "R-HK-AUTO", "R-JP-AUTO", "F-BACKUP"]

  - name: "B-WORK"
    type: select
    proxies: ["G-MANUAL", "F-BACKUP", DIRECT]

rules:
  - DOMAIN-SUFFIX,zoom.us,B-WORK
  - DOMAIN-SUFFIX,openai.com,B-STREAM
  - MATCH,G-ENTRY

上线与回滚建议

策略组重构是高影响变更。上线要分阶段,回滚要可一键恢复,避免在生产高峰时做“大爆改”。

上线步骤

  1. 导出当前稳定配置,保存为 stable-snapshot
  2. 在测试设备启用新策略,观察 24 小时。
  3. 优先迁移普通流量,关键业务最后迁移。
  4. 跟踪会话中断率、切换频率、关键业务成功率。
  5. 确认稳定后全量发布,并保留回滚窗口。
⚠️
回滚常见错误

只回滚 rules 不回滚 proxy-groups,会导致组名引用失配。回滚必须使用完整快照,保证规则与策略组定义同步恢复。

📦
快照策略建议

保留三类快照:长期基线、变更前快照、故障现场快照。这样能快速定位问题来源并减少恢复时间。

常见问题 FAQ

Q1:节点只有十几个,仍然要三层吗?

A:要。三层的价值是职责分离,不是节点规模。小规模同样需要稳定入口和明确回滚路径。

Q2:url-test 和 fallback 怎么搭配?

A:一般是区域层用 url-test,关键业务兜底用 fallback,入口层用 select 做人工覆盖。

Q3:自动组让速度变慢,为什么?

A:通常是检查频率太高或阈值太敏感,触发过度切换。先放宽参数再看 24 小时趋势。

Q4:手动组是不是更落后?

A:不是。手动组用于保障关键业务稳定,自动组用于追求普通流量效率,两者是协同关系。

Q5:如何判断命名规范是否合格?

A:如果新同事不看文档也能根据组名判断用途与影响范围,说明命名是合格的。

Q6:上线后异常,第一步做什么?

A:先回滚到最近稳定快照,恢复业务后再分析日志,避免在故障期间叠加改动。

总结

好策略组不是“最激进自动化”,而是“自动与手动各司其职”。把关键业务从切换噪声中隔离出来,再用命名规范和快照回滚托底,节点再多也能跑得稳、改得动、查得清。