把 Tailscale 塞进 FlClash:用覆写脚本实现「订阅刷新不丢配置」
实测环境:FlClash 0.8.94(Android)。整套流程从零走通,脚本可直接复制使用。方法源自 seewhy.me 的这篇文章,本文在它的基础上补了覆写脚本、脚本挂载和验证这几段实践中踩到的坑。
要解决的两个问题
问题一:FlClash 和 Tailscale 在安卓上打架。
Android 同一时间只允许一个 App 占用系统 VPN 通道。FlClash 要用它跑代理,Tailscale 官方 App 也要用它组网,两个不能同时开。上一篇里我的解法是用 work profile 隔出第二个 VPN 槽位、保留官方 App;这篇是另一条路线:好在 FlClash 的内核 mihomo 从 v1.19.25(2026-05-16 发布)起内置了 Tailscale 出站(基于 tsnet,Tailscale 官方的嵌入式库)——FlClash 自己就能作为一个 Tailscale 节点登录 tailnet,官方 App 可以卸载了。
顺便说清楚两条路线怎么选。work profile 的好处是隔离得非常彻底:两边互相不用改任何东西,各跑各的,维护起来最省心 —— 不想折腾,选它就挺好。本文这条路线适合稍微想折腾一下的人,或者不想为此多装一个 Shelter,又或者 work profile 槽位已经被公司 MDM 占用、ROM 压根不支持的情况。
问题二:直接改订阅配置,一刷新就白改。
seewhy.me 那篇文章的做法是手工编辑订阅下载下来的 YAML,往里加 Tailscale 节点和规则。能用,但订阅文件是机场的,每次刷新订阅都会重新下载覆盖,手工改的部分全部丢失。
第二个问题的正解是 FlClash 自带的覆写脚本:一段独立保存的 JavaScript,每次加载或刷新订阅时,FlClash 都会把下载到的配置传进脚本的 main(config) 函数,脚本在内存里追加自己的内容后返回。订阅文件本身永远不被修改,刷新多少次,脚本都会重新套用一遍。Clash Verge 用户对这套机制应该不陌生(那边叫 Merge / Script 覆写)。
