不知道你有没有感觉 Claude Code 的配置目录很清晰,反正我觉得特别好。
前两天装了个朋友写的 AI 编辑器,命令行工具,npm 全局安装,跑起来一切正常。但我顺手翻了下配置,发现它把设置文件写在了 ~/Library/Application Support/vibecoding/settings.json。

我当时就问他:哥们,你这跟 Claude Code 同样类型的 CLI 工具,全局配置为啥不学它放 ~/.vibecoding/,并且具体项目可以有独立配置放项目根目录的 .vibecoding/ ?
这问题听起来特小,就是"文件放哪个文件夹"的事,但聊深了才发现,现在 CLI 工具圈儿里,这事儿分歧大得很。大到什么程度呢?基本等于"tab 还是 space"那种级别的宗教战争。下边简单讲讲。
配置文件,一般来说有三个地方可以住。
第一个,最老派,Unix 传统。~/.config/工具名/ 或者直接 ~/.工具名/。Git、Neovim、Starship、gh(GitHub CLI)都这么干。逻辑也简单:我是命令行工具,命令行是 Unix 的产物,Unix 的东西就该待在家目录的隐藏文件里,几十年了,没毛病。看来 Claude Code 就是这种。
第二个,操作系统原生。macOS 上就是 ~/Library/Application Support/,Windows 是 %APPDATA%。
第三个,项目局部。直接在当前项目里建个 .工具名/ 目录,配置跟着代码走。Webpack、ESLint、Prettier 都是这路子,方便团队协作,谁 clone 下来谁就能跑。

为啥这么多新工具,默认都跑去了 Application Support?
我查了一圈,大部分是被跨平台库"带偏"的。
你写 Node.js,大概率会用 env-paths 这种库;写 Rust,可能用 dirs;写 Python,可能用 platformdirs。这些库的设计初衷是好的——帮你屏蔽平台差异,Windows 走 AppData,macOS 走 Library,Linux 走 XDG。但坏就坏在,它们把"命令行工具"和"GUI 应用"当成一回事处理了。
macOS 的 ~/Library/Application Support 这个目录,苹果文档写得明明白白,是给 apps 用的。而且苹果自己区分了 "apps" 和 "command-line binaries"——你系统自带的 bash、zsh、git、vim,哪个会去碰 Application Support?没有。所以一个纯 CLI 工具的配置出现在这里,本质上是用 GUI 的规矩套在了命令行工具头上,属于"误伤"。
开发者社区有一些争论。
你看 Claude Code,它把配置直接扔在 ~/.claude.json 和 ~/.claude/ 里,连 ~/.config 都不进,结果 GitHub 上被用户开 issue 喷,要求支持 XDG Base Directory Specification。为啥?因为很多企业环境会把 ~/.config 指向加密盘或者网络存储,你硬编码家目录路径,直接破坏人家的安全策略。而且容器、沙盒环境(Flatpak、Snap)都重度依赖 XDG 规范来做隔离。
更狠的是 Atmos,他们专门发了一个 breaking change,把 macOS 上的配置路径从 ~/Library/Application Support 改回 ~/.config,理由就一句话:CLI 工具应该跟 gh、docker、terraform 保持一致。
这说明啥?说明现在玩命令行的人,对 ~/.config 这套有强预期。你可以不搭理苹果的 GUI 规范,但最好别打破 Unix 圈的默契。
那 AI 编辑器这种"四不像"怎么办?
它既不是纯 ls 那种原教旨命令行工具,也不是 VS Code 那种完整 GUI。确实尴尬。
如果你的工具主要受众是开发者,主要交互在终端里完成,那默认就该走 XDG,~/.config/工具名/。这是肌肉记忆,用户找配置的时候不会骂娘。
如果你未来要做大量 GUI、面向普通用户,那走 OS 原生标准也说得过去,毕竟 Time Machine 备份什么的对 Library 目录有特殊处理。
但不管走哪条路,请务必给个后门。 支持 工具名_CONFIG_DIR 环境变量,或者 --config 参数。这是最务实的做法,XDG 标准本身也要求先读环境变量再回退默认值。
说白了,配置文件放哪儿,表面是路径之争,本质是你这个工具认哪个文化圈子当大哥。
认 Unix 命令行当大哥,就去 ~/.config;认苹果微软当大哥,就去 Application Support / AppData;认项目协作当大哥,就去代码目录里待着。
对我个人而言,一个 AI 命令行编辑器,默认钻进 ~/Library/Application Support,总有种"穿着西装去搬砖"的违和感。毕竟用户真正关心的不是你遵循了哪家巨头的白皮书,而是——习惯。现在被 Claude Code 调成啥了你也不是不知道。
你说是吧哥?

最后,这工具开源的,对我来说,核心优势是可以作为 Agent 运行时来调用:
https://github.com/startvibecoding/vibecoding