不知道你有沒有感覺 Claude Code 的配置目錄很清晰,反正我覺得特別好。
前兩天裝了個朋友寫的 AI 編輯器,命令行工具,npm 全局安裝,跑起來一切正常。但我順手翻了下配置,發(fā)現(xiàn)它把設(shè)置文件寫在了~/Library/Application Support/vibecoding/settings.json。
![]()
我當(dāng)時就問他:哥們,你這跟 Claude Code 同樣類型的 CLI 工具,全局配置為啥不學(xué)它放~/.vibecoding/,并且具體項(xiàng)目可以有獨(dú)立配置放項(xiàng)目根目錄的.vibecoding/?
這問題聽起來特小,就是"文件放哪個文件夾"的事,但聊深了才發(fā)現(xiàn),現(xiàn)在 CLI 工具圈兒里,這事兒分歧大得很。大到什么程度呢?基本等于"tab 還是 space"那種級別的宗教戰(zhàn)爭。下邊簡單講講。
配置文件,一般來說有三個地方可以住。
第一個,最老派,Unix 傳統(tǒng)。~/.config/工具名/或者直接~/.工具名/。Git、Neovim、Starship、gh(GitHub CLI)都這么干。邏輯也簡單:我是命令行工具,命令行是 Unix 的產(chǎn)物,Unix 的東西就該待在家目錄的隱藏文件里,幾十年了,沒毛病。看來 Claude Code 就是這種。
第二個,操作系統(tǒng)原生。macOS 上就是~/Library/Application Support/,Windows 是%APPDATA%。
第三個,項(xiàng)目局部。直接在當(dāng)前項(xiàng)目里建個.工具名/目錄,配置跟著代碼走。Webpack、ESLint、Prettier 都是這路子,方便團(tuán)隊(duì)協(xié)作,誰 clone 下來誰就能跑。
![]()
為啥這么多新工具,默認(rèn)都跑去了Application Support?
我查了一圈,大部分是被跨平臺庫"帶偏"的。
你寫 Node.js,大概率會用env-paths這種庫;寫 Rust,可能用dirs;寫 Python,可能用platformdirs。這些庫的設(shè)計(jì)初衷是好的——幫你屏蔽平臺差異,Windows 走 AppData,macOS 走 Library,Linux 走 XDG。但壞就壞在,它們把"命令行工具"和"GUI 應(yīng)用"當(dāng)成一回事處理了。
macOS 的~/Library/Application Support這個目錄,蘋果文檔寫得明明白白,是給apps用的。而且蘋果自己區(qū)分了 "apps" 和 "command-line binaries"——你系統(tǒng)自帶的 bash、zsh、git、vim,哪個會去碰Application Support?沒有。所以一個純 CLI 工具的配置出現(xiàn)在這里,本質(zhì)上是用 GUI 的規(guī)矩套在了命令行工具頭上,屬于"誤傷"。
開發(fā)者社區(qū)有一些爭論。
你看 Claude Code,它把配置直接扔在~/.claude.json和~/.claude/里,連~/.config都不進(jìn),結(jié)果 GitHub 上被用戶開 issue 噴,要求支持 XDG Base Directory Specification。為啥?因?yàn)楹芏嗥髽I(yè)環(huán)境會把~/.config指向加密盤或者網(wǎng)絡(luò)存儲,你硬編碼家目錄路徑,直接破壞人家的安全策略。而且容器、沙盒環(huán)境(Flatpak、Snap)都重度依賴 XDG 規(guī)范來做隔離。
更狠的是 Atmos,他們專門發(fā)了一個 breaking change,把 macOS 上的配置路徑從~/Library/Application Support改回~/.config,理由就一句話:CLI 工具應(yīng)該跟 gh、docker、terraform 保持一致。
這說明啥?說明現(xiàn)在玩命令行的人,對~/.config這套有強(qiáng)預(yù)期。你可以不搭理蘋果的 GUI 規(guī)范,但最好別打破 Unix 圈的默契。
那 AI 編輯器這種"四不像"怎么辦?
它既不是純ls那種原教旨命令行工具,也不是 VS Code 那種完整 GUI。確實(shí)尷尬。
如果你的工具主要受眾是開發(fā)者,主要交互在終端里完成,那默認(rèn)就該走 XDG,~/.config/工具名/。這是肌肉記憶,用戶找配置的時候不會罵娘。
如果你未來要做大量 GUI、面向普通用戶,那走 OS 原生標(biāo)準(zhǔn)也說得過去,畢竟 Time Machine 備份什么的對 Library 目錄有特殊處理。
但不管走哪條路,請務(wù)必給個后門。支持工具名_CONFIG_DIR環(huán)境變量,或者--config參數(shù)。這是最務(wù)實(shí)的做法,XDG 標(biāo)準(zhǔn)本身也要求先讀環(huán)境變量再回退默認(rèn)值。
說白了,配置文件放哪兒,表面是路徑之爭,本質(zhì)是你這個工具認(rèn)哪個文化圈子當(dāng)大哥。
認(rèn) Unix 命令行當(dāng)大哥,就去~/.config;認(rèn)蘋果微軟當(dāng)大哥,就去Application Support/AppData;認(rèn)項(xiàng)目協(xié)作當(dāng)大哥,就去代碼目錄里待著。
對我個人而言,一個 AI 命令行編輯器,默認(rèn)鉆進(jìn)~/Library/Application Support,總有種"穿著西裝去搬磚"的違和感。畢竟用戶真正關(guān)心的不是你遵循了哪家巨頭的白皮書,而是——習(xí)慣。現(xiàn)在被 Claude Code 調(diào)成啥了你也不是不知道。
你說是吧哥?
![]()
最后,這工具開源的,對我來說,核心優(yōu)勢是可以作為來調(diào)用:https://github.com/startvibecoding/vibecoding。
對了,這個 VibeCoding 工具的作者()將在后天直播分享用 AI 摸魚的經(jīng)驗(yàn),歡迎預(yù)約
如果你也對程序員的 AI 感興趣,歡迎加群交流:
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.