前言:為什麼我要把 AI 搬進終端機
寫了十多年 code,我愈來愈發現自己花在瀏覽器分頁之間切換的時間,比實際寫 code 還多。ChatGPT、Claude、各種 copilot,每個都開一個 tab,腦袋跟著被切成碎片。最近試了 Claude Code —— Anthropic 出的 CLI 工具,讓你在終端機裡直接跟 AI 協作 —— 配上 Kimi Code 的 API,整個 workflow 縮在一個視窗裡完成。這篇文章記錄我從零設定到跑通的完整過程,給同樣想簡化工具鏈的人參考。
這個組合的核心想法是:Claude Code 的介面和互動設計做得很好,但透過環境變數,它可以連上任何支援 Anthropic API 格式的 endpoint。Kimi Code 正好提供這個相容層,而且價格和速度對日常開發來說相當實用。
你需要準備什麼
- Linux 或 macOS 的 shell 環境
- 穩定的網路連線
- 一組 Kimi Code API key(格式為
sk-kimi-*)
Windows 用戶可以透過 WSL2 使用,但我這次是在 macOS 上測試的,以下步驟以 Unix-like 環境為準。
快速設定:六步驟總覽
如果你已經熟悉 nvm 和 npm,想直接跳過說明,這裡是完整指令。後面會逐段解釋每一個決定的原因。
# 1. 安裝 Node.js(透過 nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install --lts && nvm use --lts
# 2. 安裝 Claude Code
npm install -g @anthropic-ai/claude-code
# 3. 建立獨立路徑,避免 nvm 未載入時找不到指令
mkdir -p ~/.local/bin
ln -sf "$(which claude)" ~/.local/bin/claude
# 4. 設定 Kimi Code 環境變數
mkdir -p ~/.bashrc.d
cat > ~/.bashrc.d/claude-code-kimi.sh <<'EOF'
export ANTHROPIC_BASE_URL="https://api.kimi.com/coding/"
export ANTHROPIC_MODEL="kimi-for-coding"
export ANTHROPIC_API_KEY="sk-kimi-YOUR_KIMI_CODE_API_KEY_HERE"
export CLAUDE_CODE_SIMPLE=1
EOF
chmod 600 ~/.bashrc.d/claude-code-kimi.sh
# 5. 載入設定
source ~/.bashrc
# 6. 啟動
claude
逐段拆解:我為什麼這樣設定
Node.js 與 nvm:不要直接裝系統版本
Claude Code 需要 Node.js 18 以上。我習慣用 nvm 管理版本,一來可以隨時切換,二來不用動到系統層的 node。這對經常要在不同專案之間切換的人特別重要。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install --lts
nvm use --lts
裝完後用 node --version 和 npm --version 確認版本。我當時裝到的是 v20.x,完全足夠。
Claude Code 本體:全域安裝即可
npm install -g @anthropic-ai/claude-code
claude --version
這裡沒什麼特別,就是標準的 npm global install。但要注意一個坑:nvm 的 global package 有時候在 minimal shell(比如某些 IDE 內建的 terminal,或者 SSH 進去的 session)裡不會自動載入。
那個容易忽略的 PATH 問題
這是我卡最久的地方。第一次裝完,關掉 terminal 重開,claude 指令竟然找不到。原因是 nvm 的初始化腳本寫在 ~/.bashrc 或 ~/.zshrc 裡,但某些情境下這個檔案不會被執行。
我的解法:建立一個獨立的 symlink,把 claude 放到 ~/.local/bin,而這個路徑通常已經在大多數系統的預設 PATH 裡。
mkdir -p ~/.local/bin
ln -sf "$(which claude)" ~/.local/bin/claude
這樣即使 nvm 完全沒載入,claude 還是找得到。這個小步驟省下我之後很多「為什麼又說找不到指令」的 debug 時間。
取得 Kimi Code API Key
到 Kimi Code 官方文件頁面,進入 console 建立 API key。有幾個重點:
- key 只會顯示一次,複製後要立刻存好
- Kimi Code 專屬 channel 的 key 開頭是
sk-kimi-,不要跟 Moonshot 開放平台的 key 搞混 - 兩者的 endpoint 不同,用錯會拿到 401 或 403
環境變數:為什麼我選 ~/.bashrc.d 而不是直接改 ~/.bashrc
我喜歡把不同工具的設定拆開,像模組一樣管理。建立 ~/.bashrc.d/claude-code-kimi.sh,未來要調整或移除都很清楚,不會在 ~/.bashrc 裡面長出一團找不到頭尾的設定。
mkdir -p ~/.bashrc.d
cat > ~/.bashrc.d/claude-code-kimi.sh <<'EOF'
# Claude Code + Kimi Code API
export ANTHROPIC_BASE_URL="https://api.kimi.com/coding/"
export ANTHROPIC_MODEL="kimi-for-coding"
export ANTHROPIC_API_KEY="sk-kimi-YOUR_KIMI_CODE_API_KEY_HERE"
# 跳過 Anthropic OAuth,直接使用 API key
export CLAUDE_CODE_SIMPLE=1
EOF
chmod 600 ~/.bashrc.d/claude-code-kimi.sh
最後那個 chmod 600 很重要。API key 放在 shell script 裡,權限設成只有 owner 可讀,是基本的安全習慣。
如果你的 ~/.bashrc 本來就會自動載入 ~/.bashrc.d/*.sh,那這樣就夠了。如果沒有,需要加這段:
if [ -d ~/.bashrc.d ]; then
for rc in ~/.bashrc.d/*; do
[ -f "$rc" ] && . "$rc"
done
fi
unset rc
載入與驗證
執行 source ~/.bashrc 後,先確認環境變數有進來:
env | grep -E 'ANTHROPIC_BASE_URL|ANTHROPIC_MODEL|CLAUDE_CODE_SIMPLE'
預期輸出:
ANTHROPIC_BASE_URL=https://api.kimi.com/coding/
ANTHROPIC_MODEL=kimi-for-coding
CLAUDE_CODE_SIMPLE=1
再用 curl 測試 endpoint 是否通:
curl -s -o /dev/null -w "%{http_code}" \
https://api.kimi.com/coding/v1/models \
-H "Authorization: Bearer $ANTHROPIC_API_KEY"
回傳 200 代表連線沒問題。如果是 401 或 403,先檢查 key 是不是 Kimi Code 專屬的 sk-kimi-* 格式,以及有沒有複製完整。
啟動與確認
進到你的專案目錄,執行 claude。進去之後打 /status,確認三項資訊:
- Base URL:
https://api.kimi.com/coding/ - Model:
kimi-for-coding - API key: 顯示
ANTHROPIC_API_KEY(不會露出完整 key,只確認來源)
這三項都對,就可以開始用了。我第一個測試是讓它幫我 refactor 一個舊專案的 utility function,反應速度跟直接在網頁版用 Kimi 差不多,但不用離開 terminal,整個 context 都在視線範圍內。
我踩過的坑:Troubleshooting 對照表
| 問題現象 | 原因 | 解法 |
|---|---|---|
claude: command not found |
nvm 未載入,或 PATH 沒包含 npm global 路徑 | 開新 shell,或手動執行 nvm 初始化;長遠解法是用 symlink 到 ~/.local/bin |
連線錯誤 ERR_BAD_REQUEST 或無法連到 Anthropic |
Claude Code 預設先嘗試 Anthropic OAuth | 確認 CLAUDE_CODE_SIMPLE=1 已匯出 |
| API 測試回傳 401 / 403 | key 或 endpoint 用錯 | Kimi Code 專屬 key 配 https://api.kimi.com/coding/;Moonshot 開放平台 key 則用 https://api.moonshot.cn/anthropic 與 model kimi-k2.5 |
Claude 要求輸入 sk-ant-... 的 Anthropic key |
殘留的 ANTHROPIC_AUTH_TOKEN 或舊 key 干擾 |
unset ANTHROPIC_AUTH_TOKEN,只保留 Kimi 的 key |
/status 顯示錯誤的 model |
環境變數未正確載入 | 執行 source ~/.bashrc 後重試 |
幾個值得注意的設計細節
Kimi Code 同時支援 OpenAI 和 Anthropic 的 wire protocol,這點很聰明。Claude Code 既然預期跟 Anthropic API 溝通,我們就透過 ANTHROPIC_* 系列的環境變數來「欺騙」它,讓它以為在跟 Anthropic 伺服器說話,實際上走的是 Kimi 的 endpoint。這個 abstraction 做得乾淨,不需要改 Claude Code 的任何 code。
另一個關鍵是 CLAUDE_CODE_SIMPLE=1。沒有這個設定,Claude Code 啟動時會先嘗試連 api.anthropic.com 做 OAuth 或 keychain 認證,即使你已经指定了自訂 base URL。這個行為在文件裡沒有特別強調,但對第三方 API 來說是必須的開關。
一個可以立刻行動的小建議
如果你已經有 Kimi Code 的 API key,今晚就可以試:挑一個你最近正在改的小專案,在 terminal 裡跑 claude,然後直接說「幫我看看這個 function 有沒有比較乾淨的寫法」。不用複製貼上到瀏覽器,不用切換 context,就這樣開始第一輪對話。這個微小的 friction 減少,會讓你更願意頻繁地問 AI 問題,而不是累積到最後才一次丟一大包。