前言:為什麼我要把 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 --versionnpm --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 問題,而不是累積到最後才一次丟一大包。