全局配置页没有规定配置文件必须使用哪个文件名。要避免测试配置与日常配置混淆,需要让两份声明在「工作目录加路径」和「可观察全局项」上都不相同,并避免外部界面目录、GEO 下载地址和 API 监听撞车。只在文件名里写上测试字样、内容却与日常相同,运行时仍然无法分辨。
适用条件
适用于另外准备一份试验用 YAML、可能与日常实例轮换启动或同时存在的场合。适用于会用到 external-ui、外部控制或 GEO 自动更新的情况。不适用于只改一条规则、两份文件其余全局项完全相同却希望靠文件名隔离的想法。
用路径和全局项做身份
- 不要只靠容易重复的相对路径。external-ui 等可以是 Clash 工作目录的相对路径;不同工作目录下的同名相对路径不是同一文件。测试用路径应在文件名与工作目录的组合上可区分。路径若不在工作目录,必须按操作系统 PATH 规则把目录加入 SAFE_PATHS(Windows 用分号,其他系统用冒号),否则该路径不会按你的命名设想进入安全路径。
- 给测试实例单独的外部界面名字。external-ui-name 会合并为 external-ui 下的子目录;更新时会更新到指定文件夹,不配置则直接更新到 external-ui 目录。测试与日常若共用同一目录和同一 external-ui-url,界面资源会互相覆盖,看起来像改错了配置。
- 用全局项标记身份。测试文件应使用与日常不同的 external-controller 端口、不同的 secret,以及明确写出的 log-level(例如日常用 info、测试用 debug)。authentication 用户列表也可以不同。这样即使文件被复制到日常目录,运行时的监听和日志仍能暴露此刻是哪一份。mode 若测试要用 direct,日常文件不要同样省略 mode(省略则默认 rule)。
- GEO 与出站不要 silently 共用。测试若使用不同的 geox-url 或关闭/开启 geo-auto-update,应写清楚,以免自动更新把日常 GEO 数据换成测试地址。测试里若设置 interface-name 或 routing-mark,也应能与日常出站接口区分。
- 判断依据:不能只看磁盘文件名。能同时从路径(含工作目录与 SAFE_PATHS)和运行观察(端口、日志级别、UI 子目录)认出这是测试那一份,隔离才成立。
失败时下一步
两份配置仍互相干扰时,先查是否共用 external-controller 地址、Unix socket 名或 namedpipe 名,以及是否共用 external-ui 目录。store-selected 会把 API 对策略组的选择存到下次启动,测试期间改过的选择可能在随后启动日常配置时被读回,这一缓存与 YAML 叫什么名字无关。不要在测试文件里把 secret 留空同时又把监听改为 0.0.0.0。仍无法分清时,停掉其中一个内核再对照实际监听地址,而不是继续复制同名文件。