Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Snippet

snippet 是不依赖 provider 的独立渲染单元:从 source 获取内容 → 用 template 渲染(上下文绑定 s.response.content)→ 写入 filename。典型用途:规则集聚合、静态片段、模板化配置文件。

字段总览

字段类型必填说明
namestring显示名,未指定时用键名
templatestring渲染模板(相对模板目录 THURGIO_TPL_DIR,默认 tpls/
sourcestring否*URL(http(s):// 开头)或本地文件路径;内容进入 s.response.content
filenamestring 列表渲染结果写入的文件列表
default_outputbool回退 p.default_output是否同时写默认路径文件
extstring回退 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