跳转到内容

Failed to parse Hermes config: duplicate entry - Hermes

Quick fix

升级 cc-switch 至 v3.16.3+ 以修复 CRLF 换行导致的配置追加 bug,或手动删除 config.yaml 中的重复键。

报错原文
配置错误: Failed to parse Hermes config as YAML: duplicate entry with key "mcp_servers"

在 Windows 系统下,Hermes 生成的 `config.yaml` 默认使用 CRLF (`\r\n`) 换行符。cc-switch 的 Rust 代码在按 `\n` 分割行时,行尾残留的 `\r` 导致顶层键识别函数失效。

这使得 cc-switch 在修改配置时无法找到现有的 `custom_providers`、`model` 或 `mcp_servers` 代码块,从而退化为在文件末尾直接追加新配置,最终产生重复的 YAML 顶层键并引发解析报错。部分情况下,如果供应商内部字段(如 `base_url`)重复,也会引发类似的嵌套键重复报错。

  1. 升级 cc-switch 到 v3.16.3 或更高版本。新版本修复了 CRLF 识别问题,并在读取时自动容忍和清理历史重复键,无需手动修改文件。

  2. 若急需解决且无法升级,请手动打开配置文件,删除重复的 `custom_providers`、`model` 或 `mcp_servers` 代码块(通常保留最后一份即可)。

    ~/.hermes/config.yaml (Windows 下为 %LOCALAPPDATA%\hermes\config.yaml)
    custom_providers:
    - name: 'old_duplicate'
    base_url: '...'
  3. 如果本地并未安装 Hermes,可直接删除 `~/.hermes` 目录以彻底消除报错。

ToolHermes
Version3.13.0 - 3.16.2
PlatformsWindowsmacOSLinux
为什么我手动删除了重复键,下次切换供应商时又报错了?
因为旧版本 cc-switch 的 CRLF 解析缺陷依然存在,每次写入都会再次追加重复块。必须升级到 v3.16.3+ 才能根治此问题。
我根本没有安装 Hermes,为什么会出现这个报错?
cc-switch 默认会尝试管理 Hermes 配置并自动生成 `~/.hermes` 目录。如果不需要此功能,直接删除该目录,或在 `settings.json` 中将 Hermes 从 `visibleApps` 中禁用即可。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。