Snippet
snippet 是不依赖 provider 的独立渲染单元:从 source 获取内容 → 用 template 渲染(上下文绑定 s.response.content)→ 写入 filename。典型用途:规则集聚合、静态片段、模板化配置文件。
字段总览
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 否 | 显示名,未指定时用键名 |
template | string | 是 | 渲染模板(相对模板目录 THURGIO_TPL_DIR,默认 tpls/) |
source | string | 否* | URL(http(s):// 开头)或本地文件路径;内容进入 s.response.content |
filename | string 列表 | 否 | 渲染结果写入的文件列表 |
default_output | bool | 回退 p.default_output | 是否同时写默认路径文件 |
ext | string | 回退 p.ext | 默认输出文件的扩展名 |
p | 任意 YAML | {} | 自定义参数,模板中以 s.p.* 或 config.snippet.<key>.p 访问 |
* 无 source 的 snippet 也可用——模板仅依赖 config/p 等全局上下文时可以省略。
source
untagged 枚举,纯字符串:
"https://..."或"http://..."— 远程 URL- 其余 — 本地文件路径(相对配置文件所在目录解析)
与 provider 的区别
- 无解析与规则管线:内容原样作为文本进入模板,不做代理解析、不过滤/改名。
- 上下文不同:provider 绑定
l.proxies,snippet 绑定s.response.content。 - TTL 更长:默认缓存 24 小时(provider 默认 10 分钟),见 setting.ttl。
- snippet 的
p在其他 provider 模板中可经config.snippet.<key>.p读取——这是给其他模板传参数的常用手法(如clash.tpl遍历 snippet 读p.clash_url)。
example
snippet.yaml
example:
name: example
template: snippet.tpl
source: "rules/China.list"
filename:
- prod/list/example.yaml
p:
one: one
two: two