最近在折腾开发环境的时候,遇到了一件特别“灵异”的事情,搞得我一度怀疑是不是中了什么顽固病毒。事情是这样的:我用的是 Codex 配合 cc-switch 这个启动器,之前配置过一个叫做 ace-tool 的 MCP 服务。

后来发现这个服务好像失效了(连接不上或者作者跑路了),我就想着把它彻底清理干净,免得每次启动 Codex 都在那白白浪费时间加载一个不存在的配置。

一场徒劳的“删除”游戏

我开始按常规流程操作:

  1. 先把 npm 全局包里的 ace-tool 卸载了。
  2. 打开 Codex 的配置文件 config.tmol(有些版本可能叫 config.jsonconfig.toml),小心翼翼地把 [mcp_servers.ace-tool] 相关的几行配置全删了,保存。
  3. 打开 cc-switch,在它的 MCP 服务管理器里,也把这个服务给删了。

当时看着配置文件干干净净,心里挺舒坦。结果!只要电脑一重启,或者把 cc-switch 重启一下,再打开 Codex 的配置文件一看——它又回来了!那个 ace-tool 的配置块像牛皮糖一样,死活甩不掉。

深入排查:谁在暗中写文件?

既然手动删不掉,说明肯定有某个进程在启动时强行写入了这个配置。

我首先想到的是是不是删除得不够彻底。于是我再次打开 cc-switch,仔细检查了“编辑供应商”的详细设置。果然,在这个更深层的菜单里,还残留着 ace-tool 的引用。我心想:“这下抓住你了”,果断删除。

火绒安全软件拦截日志界面

图:火绒自定义防护日志显示 cc-switch 正在读写配置文件

然而,残酷的现实再次打脸。 重启后,那个配置依然在 config.tmol 里笑靥如花。

这真的太怪了,简直就是“薛定谔的配置”。这时候我就得祭出大杀器了——火绒安全软件的自定义防护

火绒拦截弹窗提示

图:在火绒中拒绝软件的写入权限后,配置不再自动恢复

借助安全软件“抓现行”

火绒有个很好用的功能,可以对特定文件进行防护,监控谁在读写它。我把 Codex 的 config.tmol 文件添加到了火绒的自定义防护规则里。

重启电脑,观察火绒的日志。果然,cc-switch 一启动,立刻就去读取这个配置文件。虽然日志里显示的是“读取”,但结合配置被还原的现象,基本可以断定:cc-switch 在读取配置后,根据自己的“内置模板”或者“云端同步配置”,认为你应该拥有这个 ace-tool,于是偷偷帮你(或者说强迫你)恢复了这个配置。

更有趣的是,当我在火绒弹窗中拒绝了 cc-switch 读取(或写入)该文件的权限后,那个该死的 ace-tool 居然真的再也没有自动出现了!这就铁证如山了:罪魁祸首就是 cc-switch。

原理分析与解决方案

为什么会出现这种情况?这通常是因为这类启动器或管理软件,在用户首次添加服务时,会将配置写入一个“通用配置”或“模板配置”中。当软件启动时,它会优先用这个模板去覆盖用户的本地配置(可能是设计上的逻辑缺陷,为了防止用户误删导致服务不可用,也有可能是同步功能的 Bug)。

如果你也遇到类似问题,可以尝试以下几步解决:

  1. 版本更新: 我用的是 cc-switch 3.16.2 版本,大概率是因为旧版本的逻辑问题。首先去检查更新,下载最新版试试,开发者可能已经修复了这个强制覆写的 Bug。
  2. 寻找“通用配置”文件: cc-switch 可能会在安装目录或者 AppData 目录下保存一份全局的配置模板。你需要找到那个文件(通常名字里带有 defaulttemplate 或者 global 字样),在那里彻底删除 ace-tool 的引用,这才是治本的方法。
  3. 干练的清理: 如果你不清楚配置文件在哪里,可以使用“Everything”等工具全盘搜索包含 ace-tool 字符串的文件,全部删除后再重启软件,确保没有残留的引用。
  4. 权限大法(临时方案): 像我一样,通过安全软件锁死配置文件的写入权限,或者直接将配置文件设为“只读”。虽然有点暴力,但能有效制止软件乱改东西。

折腾了一圈,虽然浪费了点时间,但通过火绒日志顺藤摸瓜,总算搞清楚了是软件自动同步机制在捣鬼。大家在用这类带有“自动配置”、“云端同步”功能的工具时,如果发现改不掉配置,不妨想想是不是后台有只看不见的手在帮你做“复原”操作。

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭