Skip to content
123hi123Public

About

Claude Code settings.json profile 切換器 — 終端 TUI,一鍵切換 env 設定組

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

Repository files navigation

cs — Claude Code settings.json profile 切換器

Linux / macOS:

curl -fsSL https://raw.githubusercontent.com/123hi123/cs/main/install.sh | bash

Windows(PowerShell):

irm https://raw.githubusercontent.com/123hi123/cs/main/install.ps1 | iex

一個純終端 TUI 工具,快速切換 ~/.claude/settings.json 裡的 env 設定組(API 端點、token、模型選項等),不動其他設定。

特色

  • 只改 profile 提到的鍵:切換時只覆寫 profile 內列出的 env 變數,settings.json 其餘內容(hooks、permissions、平常自己改的設定)完全不動。
  • 自動還原:切換到別的 profile(或 cs off)時,上一個 profile 蓋掉的鍵會還原回套用前的原始值——原本不存在的鍵會被移除,且還原時讀取的是「當下」的檔案,平時手動改過的其他設定不會被倒退。
  • 貼上即解析:建立 profile 時開啟貼上介面,混貼任何格式都能解析,並先預覽確認再儲存:
    export ANTHROPIC_AUTH_TOKEN="joe"
    export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
    "ANTHROPIC_CUSTOM_MODEL_OPTION": "fable",
    { "ANTHROPIC_BASE_URL": "http://localhost:8080" }
    
    甚至整份 settings.json 貼進來也只會擷取 env 區塊。從終端機或 TUI 複製時,過長的值(例如 token)常被硬換行切成兩行,cs 會自動接回並警告;預覽中有任何警告時要按兩次 Enter 才會儲存,憑證值也會標出長度,方便看出是否少了一段。
  • 殘留衝突偵測:切換時若 settings.json 殘留與新 profile 衝突的鍵(例如設定 CLAUDE_CODE_OAUTH_TOKEN 官方登入,但殘留舊的 ANTHROPIC_BASE_URL 指向本地 proxy,OAuth token 會被送去那個端點;或 profile 只改了 ANTHROPIC_BASE_URL 沒設憑證,殘留的舊 token 會被送往新端點——這種情況按 Enter 預設保留,因為遮蔽等於拿掉唯一的憑證,正解是用 cs e 補上 token),會逐鍵說明衝突原因並詢問是否遮蔽——遮蔽的鍵在套用期間暫時移除,切走或 cs off 時自動還原。決定會記住,之後切換不再重複詢問。
  • 模糊搜尋:cs offi → official、cs wk → work;多個候選時列出讓你選。TUI 內按 / 也可即時過濾。

用法

指令 說明
cs 開啟 TUI:↑↓ 選擇、Enter 套用、/ 搜尋、n 新增、e 編輯、u 更新自 env、d 刪除、r 還原、q 離開
cs <名稱> 切換到指定 profile(支援模糊搜尋)
cs t <名稱> 只在目前終端套用 profile(其他終端與全域設定不受影響)
cs t off 取消本終端的 profile,回到全域設定
cs t 查看本終端目前套用的 profile
cs n <名稱> 建立新 profile(開啟貼上介面:Ctrl+S 解析預覽 → Enter 儲存)
cs e <名稱> 編輯 profile:帶入現有內容的編輯介面,Ctrl+S 預覽 → Enter 儲存;編輯的若是使用中的 profile,儲存後自動重新套用到 settings.json
cs u <名稱> 把 profile 更新成目前 settings.json env 的完整內容(重新快照),並列出差異
cs d <名稱> 刪除 profile(若使用中會先還原其變更)
cs r <原名稱> <新名稱> 重新命名 profile(新名稱與現有 profile 衝突時取消)
cs ls 列出所有 profile,● 為使用中
cs off 還原目前 profile 的變更,回到未套用狀態
cs update 檢查 GitHub release,有新版就自動下載更新自己(Linux/Windows)
cs shell-init <bash|zsh|fish|powershell> 輸出 cs t 所需的 shell 整合程式碼(install.sh 會自動加進 rc 檔)

第一次執行會請你確認 settings.json 的路徑(預設 ~/.claude/settings.json,可自行輸入其他路徑),接著會問要不要把目前的 env 設定存成一個具名 profile(直接 Enter 跳過)——存了之後隨時可以一鍵切回這個原始狀態。

終端限定切換(cs t)

cs <名稱> 改的是 settings.json,所有終端都會吃到;cs t <名稱> 則只影響目前這個終端:

  • 原理:Claude Code 的 --settings 命令列設定優先序高於 ~/.claude/settings.json(而 shell 環境變數反而會被 settings.json 的 env 蓋過,所以單純 export 沒有用)。cs t 把 profile 寫成一個終端專屬的設定檔(Linux 放 $XDG_RUNTIME_DIR/cs/,重開機自動清),並由 shell 整合裝的 claude wrapper 在啟動時自動帶上 --settings 該檔。
  • 作用範圍由環境變數 CS_TERM_SETTINGS 決定——它只存在於執行過 cs t 的那個 shell,所以其他終端、全域設定完全不受影響;關掉終端就自動失效。
  • 需要 shell 整合(cs 與 claude 兩個 wrapper function)。install.sh/install.ps1 會自動加進 rc 檔;手動安裝:bash/zsh 加 eval "$(cs shell-init bash)"、fish 加 cs shell-init fish | source。
  • 限制:--settings 是合併語意,只能覆寫鍵、不能移除全域已存在的鍵——全域殘留的衝突鍵(如 ANTHROPIC_BASE_URL)若 profile 沒覆寫仍會生效,cs t 會逐鍵警告;需要移除請用全域切換搭配遮蔽。另外只有經 wrapper 啟動的 claude 會吃到終端 profile(絕大多數情況就是你在該終端打的 claude)。

安裝時的名稱衝突偵測

安裝腳本會先掃描系統上是否已有叫 cs 的東西(PATH 上的其他執行檔、bash/zsh/fish 的 alias 或 function),有衝突時會詢問:

  1. 覆蓋 — 繼續安裝,rc 檔裡的 cs alias/function 自動改名為 cs_old(原檔備份為 *.bak-cs-install,原功能保留);安裝完成後會自動重新載入目前終端的 shell,不用開新終端就能直接使用 cs(僅在互動安裝、且確認 cs 已能正確解析到新 binary 時;從腳本或 sudo 呼叫不會觸發,改印手動提示)
  2. 交給 AI agent — 把衝突報告複製到剪貼簿(或存到 /tmp/cs-conflict-report.txt),貼給 AI agent 處理後再重新安裝
  3. 取消

非互動環境(CI、腳本)可用環境變數指定:CS_ON_CONFLICT=overwrite|agent|abort。本工具自己的舊版安裝會直接升級,不算衝突。

運作方式

  • Profile 只儲存「要改的鍵值」,存放於 ~/.config/cs/config.json(Windows 為 %APPDATA%\cs\config.json)。衝突鍵的遮蔽決定存於同檔的 masks 區塊,想改決定可直接編輯。
  • 套用 profile 時,工具會記下每個被蓋掉的鍵的原始值;之後切換或還原時,就把這些鍵寫回原始值(原本不存在的鍵則移除),再套用新 profile。
  • 寫入 settings.json 採「暫存檔 + rename」的原子寫入,不會寫壞檔案。
  • 敏感值(TOKEN/SECRET/PASSWORD)在畫面輸出時會遮蔽,只留頭尾 4 字並附上長度。

從原始碼安裝

git clone https://github.com/123hi123/cs
cd cs
cargo install --path .

License

MIT

About

Claude Code settings.json profile 切換器 — 終端 TUI,一鍵切換 env 設定組

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages