iT邦幫忙

0

【新手安裝教學】Windows裝Claude Code並接上Crazyrouter:給第一次用終端機的人

  • 分享至 

  • xImage
  •  

【新手安裝教學】Windows裝Claude Code並接上Crazyrouter:給第一次用終端機的人

如果你從來沒用過終端機,這篇可以照著做完。Claude Code(一套在命令列裡運作的AI編碼工具)本身不難裝,真正讓人停下來的是後面那一步:程式裝好了、版本號也印得出來,一啟動卻被回一句403。以下按「先弄懂名詞、再動手安裝、最後確認裝好」的順序走。

環境以Windows 10/11與Windows PowerShell為例。文中YOUR_OWN_API_KEY、MODEL_ID_HERE都是佔位符,請換成你自己建立的值。

版本號可以正常顯示,啟動時存取api.anthropic.com卻回傳403

同一個視窗裡,查版本成功、啟動被拒——這張圖就是本文要解釋的落差。

一、先弄懂四個名詞,後面才不會填錯

新手最常把這幾樣東西混成一樣,然後對著一個錯誤訊息亂改。先把角色分清楚:

名詞 它的角色 這篇拿它做什麼
Claude Code 裝在你電腦上的命令列工具 安裝它,讓claude這道命令能執行
Node.js 讓npm安裝方式可以運作的執行環境 走npm路線時才需要
Base URL 用戶端要把請求送往哪個根網址 指向Crazyrouter
API Key 向服務端證明身分的一串憑證 寫進設定檔

這裡先記住一句:Claude Code自身不含模型。把它裝好,不代表你已經有可用的模型額度,這兩件事要分開準備。

二、安裝Claude Code

1. 打開終端機

在開始功能表搜尋PowerShell開啟,或在Windows Terminal裡新增一個PowerShell索引標籤。畫面出現PS C:\Users\你的使用者名稱>這類提示字元,就是命令要輸入的地方;提示字元本身不必複製,只複製程式碼區塊裡的內容,一次一行。

若你正停在Claude Code的交談畫面,請先離開回到普通視窗——安裝指令不是聊天內容,貼給模型沒有作用。

2. 兩條安裝路線,選一條走完

路線A:官方原生指令碼

irm https://claude.ai/install.ps1 | iex

下指令前確認網域是claude.ai。原生安裝不要求先有Node.js,所以「沒裝Node.js就裝不起來」這句話只適用於路線B。安裝完成後依提示處理PATH,必要時關掉視窗重開,再驗證一次:

claude --version

路線B:npm套件

先從Node.js官網下載頁取得Windows的LTS安裝檔,依精靈裝好後重開終端機。目前文件要求Node.js 22以上,舊教學裡的版本別沿用。

node --version
npm.cmd --version
npm.cmd install -g @anthropic-ai/claude-code
claude.cmd --version

套件名稱結尾是claude-code,-g和套件名稱中間有一個空格。這裡寫成npm.cmd與claude.cmd是刻意的:npm會同時產生.cmd與.ps1兩個包裝檔,PowerShell有時會挑到.ps1,而它可能被執行原則擋下,指定.cmd等於走命令解譯器那條路。

3. 安裝階段最常見的兩個畫面

官方指令碼回傳HTML,iex把網頁當指令執行,刷出一整頁JavaScript語法錯誤

滿屏紅字裡出現var、<script type="text/javascript">,這些都是JavaScript與HTML的語法。這不是PowerShell故障,而是它被餵了一份網頁原始碼去讀。這通常代表你下載到的不是指令碼,而是被攔截後回傳的頁面。路線A到這裡就停,改走路線B。

兩條npm指令黏在一起,套件名稱變成不存在的claude-codenpm

若錯誤是E404,請把訊息裡的套件名稱逐字讀完。圖中是@anthropic-ai/claude-codenpm,尾巴多掛了npm,因為上一行和這一行黏在同一行了。這跟網路或鏡像來源都無關,清空重打即可。

補充一點:依本次查到的文件,Windows版在沒有Git for Windows的情況下也能透過PowerShell執行Shell指令,需要拉倉庫、管版本時再安裝即可,不必當成前置條件。

三、申請Crazyrouter並建立API Key

用瀏覽器開啟https://crazyrouter.com完成註冊與登入,進入主控台找到金鑰頁面,新建一把Key。名稱取一個日後認得出來的,例如claude-code-windows,順便確認有效期限、額度與可用的模型範圍,再把Key複製保存——離開頁面後通常就看不完整了。

登入密碼、信箱驗證碼與API Key是三樣不同的東西,Claude Code只認最後一個。

四、寫入設定檔

使用者層級的設定檔對任何目錄啟動的Claude Code都生效,路徑是:

%USERPROFILE%\.claude\settings.json

先確認目錄存在,並替可能已有的舊設定留一份備份:

$cfgDir = "$env:USERPROFILE\.claude"
if (-not (Test-Path $cfgDir)) { New-Item -ItemType Directory $cfgDir | Out-Null }
$profileFile = "$cfgDir\settings.json"
if (Test-Path $profileFile) {
    Copy-Item $profileFile "$profileFile.old-$(Get-Date -f yyyyMMddHHmmss)"
}
notepad $profileFile

把下面內容填進去。檔案不存在就新建;存檔時確認副檔名是.json,別留成settings.json.txt。

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://cn.crazyrouter.com",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_OWN_API_KEY"
  }
}

填寫時有三處最容易出錯:欄位名稱、網址與金鑰一律用英文雙引號;//這種註解不能出現;最後一個欄位後面不能有逗號。原本已經有env的,補在同一層就好,別產生第二個env。

另外,ANTHROPIC_BASE_URL只填根網址https://cn.crazyrouter.com,不要把/v1或/v1/messages一起寫進去。OpenAI相容用戶端的習慣剛好相反,照抄會讓實際請求變成/v1/v1/messages,換來一個404。機器呼叫的網址不要帶UTM參數。

五、為什麼要挑ANTHROPIC_AUTH_TOKEN

這是整個安裝過程中最關鍵的一個欄位。兩個變數送出的請求標頭不同:

變數 送出的請求標頭 適用對象
ANTHROPIC_API_KEY x-api-key: <你的金鑰> Anthropic官方API
ANTHROPIC_AUTH_TOKEN Authorization: Bearer <你的權杖> 自訂或相容閘道

寫成ANTHROPIC_API_KEY,等於告訴用戶端「我手上是官方金鑰」,它會繼續走官方通道,此時ANTHROPIC_BASE_URL填得再正確也拉不回來。這正是「位址明明改了、卻一直403」的成因。兩把憑證不必為了保險同時放進去。

想確認設定檔讀得進來,可以執行:

$cfg = Get-Content "$env:USERPROFILE\.claude\settings.json" -Raw | ConvertFrom-Json
Write-Host "Base :" $cfg.env.ANTHROPIC_BASE_URL
Write-Host "Token:" (-not [string]::IsNullOrWhiteSpace([string]$cfg.env.ANTHROPIC_AUTH_TOKEN))

兩行都有輸出,只代表語法正確,不代表金鑰有效。也別把整個$cfg印出來截圖,那會讓真實金鑰出現在畫面上。

六、指定一個模型

先取回目前金鑰可用的模型清單:

$apiRoot = ([string]$cfg.env.ANTHROPIC_BASE_URL).TrimEnd('/')
$headers = @{ Authorization = "Bearer $($cfg.env.ANTHROPIC_AUTH_TOKEN)" }
$available = Invoke-RestMethod -Uri "$apiRoot/v1/models" -Headers $headers -Method Get
$available.data | Select-Object id

從回傳的ID裡挑一個,直接複製介面給的字串,不要拿行銷名稱或舊截圖上的名字充當ID。接著把model欄位補進同一份設定(記得在env的收尾大括號後面補上逗號):

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://cn.crazyrouter.com",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_OWN_API_KEY"
  },
  "model": "MODEL_ID_HERE"
}

存檔後離開舊工作階段,重新開啟終端機。

七、第一次提問:怎樣才算裝好

先在個人目錄下建一個練習資料夾,別拿真實專案開刀:

$labDir = Join-Path $env:USERPROFILE 'cc-lab'
New-Item -ItemType Directory -Path $labDir -Force | Out-Null
Set-Location -LiteralPath $labDir
claude -p "請只回我OK,不要讀檔、也不要執行指令。"

若你是走npm路線裝的,指令中的claude請代換成claude.cmd,預期得到一個乾淨的OK。之後回主控台的使用日誌,依時間與金鑰名稱篩選,核對這次呼叫:時間吻合嗎、模型是你選的那個嗎、有請求紀錄與用量嗎。用戶端有回應加上後台有紀錄,才算接通。

想親手送一次請求也可以:

$payload = @{
    model      = 'claude-fable-5-1'
    max_tokens = 32
    messages   = @(@{ role = 'user'; content = 'Reply with exactly OK.' })
} | ConvertTo-Json -Depth 6
Invoke-RestMethod -Uri "$apiRoot/v1/messages" -Method Post -Headers $headers `
    -ContentType 'application/json' -Body $payload

這次實測量到的數字如下:

這一輪量到什麼 數值
作業系統與殼層 Windows 10、Windows PowerShell
執行環境版本 Node.js v22.22.2、npm 10.9.7
Claude Code版本 2.1.281
設定檔狀態 讀取成功,只放ANTHROPIC_AUTH_TOKEN
模型清單端點 HTTP 200,列出161個ID
對話端點 HTTP 200,回傳OK,stop_reason=end_turn
回應ID msg_011CfVJqbN2DVuqoYqgLcdNE
權杖用量 輸入18、輸出4
單次往返 直送11569 ms、經用戶端5103 ms
用戶端判定 exit 0、is_error=false、subtype=success
工作階段ID a7a76f08-fa36-4a36-8787-3f2b24dad626

測試用的是隔離的設定目錄,憑證只透過行程環境傳入,所以它證明的是「這套設定在當時能通」。模型ID與價格會隨通路調整,以你查詢當下的/v1/models與主控台為準。

八、新手最常卡住的三個地方

  1. 把claude --version當成安裝完成的證明。 它只說明命令存在,不代表能接通模型。
  2. ANTHROPIC_BASE_URL多寫了一段/v1。 這是最容易被OpenAI習慣帶偏的地方,會直接換來404。
  3. 設定檔改完沒有重開工作階段。 用戶端在啟動時讀取設定,不重開等於沒改。

參考資料

標籤:ClaudeCode, Windows, 新手教學, Crazyrouter

免責聲明:以下內容為個人安裝與除錯紀錄,並非官方文件。第三方服務、模型代號、費率與可用模型隨時可能調整,請以官方頁面與你自己的主控台為準;API端點與設定檔位置請依查看當下的官方說明。本文未收取任何推薦費、抽成或贊助。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言