fix: ShadowRocket 策略名去引号,修复规则整条失效

ShadowRocket 的 conf 语法没有引号机制,含空格/emoji 的策略名一律裸写。
此前 quoteName 给策略名加引号,引号被当作名字的一部分,规则指向不存在的
策略组而失效,流量落到默认行为走代理(小红书/微信/抖音配了直连仍走代理)。
改为 policyName 剔除引号与逗号后裸写,补回归测试,并在 CLAUDE.md 记录此约束。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-09-03 16:44:40 +08:00
parent e5a3c70773
commit a30360ab38
3 changed files with 60 additions and 8 deletions

View File

@@ -74,7 +74,7 @@ IR 层承担三件防护,改动时不要绕过:
### ShadowRocket 分两步导入
ShadowRocket 的原生订阅格式只承载节点,因此拆成两个端点:`/shadowrocket`(节点 base64 URI 列表)与 `/shadowrocket-conf`(策略组与规则的 .conf。**ShadowRocket 没有 Surge 的 `use=` 订阅引用语法**(真机验证过:`use=true` 会被当成解析不了的成员残留),策略组收节点只能靠 `policy-regex-filter` 从 App 内全部节点里筛(「收纳全部节点」输出 `policy-regex-filter=.*`),因此订阅名随意,但用户在 App 里挂的其他订阅的节点也会被筛进来。ShadowRocket 不支持 `DOMAIN-SET``AND``URL-REGEX`,生成时跳过并回报 `skippedRules`
ShadowRocket 的原生订阅格式只承载节点,因此拆成两个端点:`/shadowrocket`(节点 base64 URI 列表)与 `/shadowrocket-conf`(策略组与规则的 .conf。**ShadowRocket 没有 Surge 的 `use=` 订阅引用语法**(真机验证过:`use=true` 会被当成解析不了的成员残留),策略组收节点只能靠 `policy-regex-filter` 从 App 内全部节点里筛(「收纳全部节点」输出 `policy-regex-filter=.*`),因此订阅名随意,但用户在 App 里挂的其他订阅的节点也会被筛进来。ShadowRocket 不支持 `DOMAIN-SET``AND``URL-REGEX`,生成时跳过并回报 `skippedRules`**ShadowRocket 的 conf 语法没有引号机制**策略名含空格emoji一律裸写加引号会被当作名字的一部分导致规则指向不存在的策略组而整条失效、流量落到默认行为走代理——Surge 生成器可以加引号ShadowRocket 生成器绝不可以。
### 鉴权与订阅