先看报错停在哪一层
Stash 的报错可以粗分成两层:YAML 语法层和资源加载层。语法层没过时,后面的 rule-set、provider、策略组命中都不用急着查。
| 报错片段 | 更可能卡点 | 先做什么 |
|---|---|---|
unknown anchor | 引用了不存在的锚点 | 找到对应 *name,改成完整字段 |
unknown alias | alias 写法或作用域不被接受 | 删除 *name,把列表展开 |
unknown tag | 配置里有自定义 YAML 标签 | 删除标签,保留标签后的真实值 |
cannot unmarshal | 字段类型不符合预期 | 对照 Stash / Mihomo 配置文档改类型 |
rule-set failed | 外部规则资源失败 | YAML 通过后再单独测 URL |
anchors 到底要怎么展开?
anchors 的本质是“先定义模板,再在别处引用”。桌面端配置里常见写法是把公共节点参数、分组参数或 provider 参数放进 &default,后面再用 *default 复用。
排错时先牺牲文件长度,换取可读性:每个 group 都明确写 type、proxies 或 use,每个 provider 都写完整字段。等 Stash 能保存配置,再考虑要不要保留少量简单复用。
哪 3 个符号优先删?
优先删这 3 类符号:&、*、<<:。
& 是定义锚点,* 是引用锚点,<<: 是合并键。只要其中一处名字拼错、缩进变了,或者解析器不接受合并方式,整份 YAML 就会在进入规则阶段前失败。
从桌面 Clash 迁到 Stash,哪些字段先别带?
先只保留 3 块:proxies、proxy-groups、rules。这 3 块能跑起来,说明基础结构没问题。
script、profile、部分 experimental 字段、复杂 provider 和外部 rule-set 最容易把问题混在一起。迁移第一轮把它们注释掉,第二轮再按一块一个变量加回。
如果同一份配置要给多个客户端共用,最麻烦的不是节点数量,而是不同客户端对 YAML 扩展写法的容忍度不同。多端共用时,用兼容 Clash / Singbox / V2Ray 的订阅承载基础配置,通常比手写 anchors 再逐端修补更省事。
rule-set 报错要和 anchors 一起修吗?
不要一起修。YAML parser 报错时,rule-set 还没有真正进入下载、解析、命中阶段;这时看到的资源报错很可能只是连带噪音。
先做一个最小配置:1 个 DIRECT 分组、1 个节点分组、2 条规则。最小配置能在 Stash 保存并显示策略组后,再把 rule-set 一个一个加回。
怎么确认已经修好?
看 4 个信号就够了。
- Stash 能保存配置,不再弹 YAML parser 错误。
- 策略组里能看到节点或 provider 展开的节点。
- 日志里不再出现
anchor、alias、unknown tag。 - 刷新规则资源后,剩下的错误只和 URL、404、超时或资源格式有关。
如果第 1 步还没通过,继续删 YAML 扩展写法;如果第 1 步通过但第 4 步失败,再去查 rule-set 地址和资源格式。
主编补充:执行前后怎么留痕
Stash 导入 YAML 提示 anchors 错误怎么改这类问题,读完「先看报错停在哪一层」之后,先写下当前状态:谁在操作、用的哪个账号或设备、最近改过什么。再对照「anchors 到底要怎么展开?」每次只改一个变量,成功和失败都截图或保存日志。客户端配置要先保存原文件和日志,再改订阅、DNS 或规则。这样下次同类问题出现时,团队不用重新猜原因。
交付前再做一次复核
Stash 导入 YAML 提示 anchors 错误怎么改处理完以后,不要只看页面是否恢复。先把这次改过的客户端配置、DNS、路由规则和日志列成一行记录,写清楚原值、新值、操作人和时间点。再回到「先看报错停在哪一层」和「anchors 到底要怎么展开?」两处,对照正文里的判断条件复测一次。
如果复测结果和预期不同,先回滚最近一次修改,再看日志或后台提示是否变化。这样做会多花几分钟,但能避免下次同类问题出现时,只剩一句「之前好像改过」。团队协作时,这条记录也能直接变成客服回复、工单备注或内部 SOP 的证据。
相关阅读
FAQ
Stash 不支持 YAML anchors 吗?
不是所有 anchors 都一定失败,但排错时不要依赖解析器容错。把 &、* 和合并键展开后,配置更接近普通 Clash YAML,也更容易判断问题是不是来自规则资源。
桌面 Clash 能用的配置为什么 Stash 不行?
桌面端内核、扩展字段和资源加载方式不一定与 Stash 一致。迁移时先保留 proxies、proxy-groups、rules 三块,脚本、provider 和 experimental 字段稍后再加。
anchors 错误会影响规则吗?
会。YAML 解析还没通过时,rule-set 不会进入下载和命中阶段。先让本地配置保存成功,再处理规则资源的 404、超时或格式问题。