diff --git a/CONTEXT.md b/CONTEXT.md index 09f73e5..95d174d 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -52,9 +52,21 @@ _Avoid_: provider、机场、订阅链接、节点池 一组线路加一个挑选方式(手动选、自动测速选最快等)。策略组本身也可以作为出站被引用。 _Avoid_: 分组、group、代理组、策略 -**筛选组**: -Patchbay 自动创建的策略组,用筛选条件从订阅里只挑出用户指定的那几条线路。它的存在是为了让入站能固定到具体线路——因为订阅线路无法被直接引用。 -_Avoid_: 隐藏组、临时组、影子组 +**专属组**: +Patchbay 为一路入站自动创建的三个策略组:手动选的 SELECT、自动测速的 AUTO、故障转移的 FALLBACK。入站的 `proxy:` 永久指向 SELECT,日常换线是改 SELECT 的当前选中,属于运行时动作,不改配置文件。名字带 `patchbay:` 前缀。 +_Avoid_: 筛选组、隐藏组、影子组、自动组 + +**链式代理**: +让一路入站的流量先经过一跳入口,再从出口线路离开。在订阅副本上用 `override.dialer-proxy` 实现,因为内核不接受写在策略组上的 `dialer-proxy`。 +_Avoid_: 中转、前置代理、relay + +**入口组**: +链式代理的入口,一个手动选的策略组,订阅副本的 `dialer-proxy` 指向它。它只能引用原订阅,不能引用订阅副本,否则会形成内核查不出来的环。 +_Avoid_: 前置组、跳板组 + +**订阅副本**: +开链式代理时,Patchbay 按「入站乘以来源订阅」的组合生成的订阅。`type: file`,读原订阅的缓存文件,带上指向入口组的 `dialer-proxy`。它不联网,原订阅刷新后内核的文件监视让它自动跟上。和哪个用户订阅共用同一个缓存文件,来源就是哪个。 +_Avoid_: 派生订阅、克隆订阅、镜像订阅 ## 名字与引用 diff --git a/scripts/verify-chain.ts b/scripts/verify-chain.ts index bfcaefb..6c16723 100644 --- a/scripts/verify-chain.ts +++ b/scripts/verify-chain.ts @@ -41,9 +41,9 @@ writeFileSync(out, rewriteYaml(source, pruneGenerated(next)), 'utf8') console.log('生成的策略组:') console.log(JSON.stringify(next['proxy-groups'], null, 2)) -console.log('\n生成的订阅副本(只看结构,url 不回显):') +// 副本是 type: file,makeChainProvider 已去掉 url,整条回显没有泄露订阅地址的风险 +console.log('\n生成的订阅副本:') for (const [name, entry] of Object.entries(next['proxy-providers'] as ConfigObject)) { if (!name.startsWith('patchbay:')) continue - const { url, ...rest } = entry as ConfigObject - console.log(name, JSON.stringify({ ...rest, url: '<同源订阅>' })) + console.log(name, JSON.stringify(entry)) }