# 1. 定义策略组 proxy-groups: # 对应 JS: const usFreeNodes = getNodes(/.*(移动|电信|联通|原生|频道|维护).*(WS)/i); - name: "🇺🇸 美国免费" type: url-test url: http://www.gstatic.com/generate_204 interval: 300 tolerance: 50 # Stash 的核心:include-all 把所有节点拉进来,然后用 filter 过滤 include-all: true # 对应你的 JS 正则,(?i) 表示忽略大小写 filter: "(?i).*(移动|电信|联通|原生|频道|维护|US).*(WS)" # 对应 addFallbackOptions,手动添加直连等 proxies: - DIRECT - 🚀 节点选择 # 对应 JS: const usPaidNodes = getNodes(/(美国|US|United States).*中转/i); - name: "🇺🇸 美国收费" type: url-test url: http://www.gstatic.com/generate_204 interval: 300 tolerance: 50 include-all: true filter: "(?i)(美国|US|United States).*中转" proxies: - DIRECT - 🚀 节点选择 # 对应 JS: const selfNodes = getNodesByServer('org'); # ⚠️ 注意:Stash 无法按 Server 地址筛选,只能按名字。 # 这里假设你的节点名字里也包含 'org'。如果不包含,你需要改用 Subconverter 重命名节点。 - name: "😊 自有节点" type: url-test url: http://www.gstatic.com/generate_204 interval: 300 tolerance: 50 include-all: true filter: "(sp|xg|tx|rb|kr)" proxies: - DIRECT - 🚀 节点选择 # 对应 JS: const yidongNodes = getNodes(/移动/i); - name: "☁️ 移动节点" type: select # select 类型通常不需要 url-test 参数,但写了也没事 include-all: true filter: "(?i)移动" proxies: - DIRECT - 🚀 节点选择 # 2. 插入规则 # Stash 的覆盖规则会默认插入到最前面,相当于你的 unshift 操作 rules: - DOMAIN-SUFFIX,gemini.google.com,🇺🇸 美国收费 - DOMAIN-KEYWORD,gemini,🇺🇸 美国收费 - DOMAIN-KEYWORD,youtube,🇺🇸 美国免费 - DOMAIN-KEYWORD,google,🇺🇸 美国收费