戰(zhàn))
我第一次敲下claude命令的時候預(yù)期很低覺得它無非是把網(wǎng)頁聊天框搬進(jìn)終端而已。直到某天我讓它重構(gòu)一個公共函數(shù)它自己翻了十幾個文件改了二十多處引用最后還主動跑了一遍測試把結(jié)果擺到我面前——我才意識到這是個完全不同量級的工具。Claude Code 是新一代的終端編碼智能體而當(dāng)我把它接到 DeepSeek 上之后日常開發(fā)的體驗(yàn)和成本終于達(dá)到了我滿意的平衡。這篇文章把我從零安裝、配置 DeepSeek、到第一次跑通完整流程的每一步都寫了下來適合想用上這套組合、又不想在配置上浪費(fèi)時間的開發(fā)者。1. 為什么我要把 Claude Code 接上 DeepSeek1.1 Claude Code 不是終端里的聊天框第一次在項(xiàng)目目錄里敲下claude的時候我預(yù)期很低一個聊天框而已能回答幾個問題就差不多了。但真正用起來我才發(fā)現(xiàn)它的工作方式完全不一樣。Claude Code 是一個駐留在終端里的編碼智能體它基于當(dāng)前項(xiàng)目目錄做跨文件搜索、讀取關(guān)鍵代碼、修改文件、執(zhí)行 shell 命令并且在每次操作之后繼續(xù)觀察結(jié)果、調(diào)整方案。也就是說它不是只在旁邊給你出主意的軍師而是能直接動手干活的外包工程師。一個典型的場景是重構(gòu)。以前我重構(gòu)一個公共函數(shù)得自己先找出所有調(diào)用點(diǎn)再一個個改。用 Claude Code 的時候我只需要描述需求把這個函數(shù)從 utils 模塊遷到 helpers 模塊更新所有引用保持對外行為不變。它會先用搜索工具把涉及的文件全部撈出來逐個打開確認(rèn)上下文然后動手修改最后讓我去跑測試驗(yàn)證。整個過程中每一步操作都展示在終端里就像有個助理坐在旁邊每干一步跟你匯報一次。也正因?yàn)樗菚哟a的代理而不是純聊天的窗口它背后接的模型的能力就直接決定了實(shí)際產(chǎn)出質(zhì)量。這就是為什么換模型這件事值得折騰。1.2 換模型這件事為什么可行很多人以為 Claude Code 只能用官方模型其實(shí)它對模型后端并不挑食。它把大模型 API 的調(diào)用抽象成了幾個標(biāo)準(zhǔn)環(huán)境變量API 地址、認(rèn)證 token、模型名。只要某個模型服務(wù)商提供了兼容 Anthropic 消息格式的接口把這三個變量指過去就能跑。DeepSeek 恰好提供了 Anthropic 兼容端點(diǎn)所以Claude Code DeepSeek不是強(qiáng)行魔改而是兩邊的設(shè)計剛好對上了。另外成本是我換模型的核心原因。DeepSeek 的 API 按量計費(fèi)價格比主流閉源模型低一大截而且它的對話模型在代碼理解、指令跟隨上的表現(xiàn)相當(dāng)能打日常需求完全夠用。對于一天要在終端里高強(qiáng)度用七八個小時的人來說這個成本差距積累起來非??捎^。如果你的需求只是讓智能體幫你寫測試、做重構(gòu)、查文檔DeepSeek 完全撐得住。1.3 什么人適合這個教程我把適合的人群劃成四類對 API 成本敏感的個人開發(fā)者想給團(tuán)隊(duì)統(tǒng)一配置編碼助手但擔(dān)心賬單失控的負(fù)責(zé)人手上已經(jīng)有 DeepSeek 密鑰、想一 key 多用的開發(fā)者以及單純想搞懂 Claude Code 配置原理、喜歡折騰后端模型的人。反過來如果你的工作流重度依賴 Anthropic 特有的高級能力比如某些多模態(tài)輸入或特殊的高級生成參數(shù)那么兼容端點(diǎn)可能覆蓋不全這點(diǎn)需要提前知道邊界。接下來的內(nèi)容默認(rèn)你已經(jīng)具備基礎(chǔ)的終端操作能力比如會 cd、會跑命令、會編輯配置文件。2. 開工前打地基賬號、密鑰和運(yùn)行環(huán)境那些事2.1 注冊 DeepSeek 賬號并創(chuàng)建 API Key第一步是搞定調(diào)用憑證。打開 DeepSeek 開放平臺用手機(jī)號注冊賬號按平臺要求完成認(rèn)證然后充值。這里有個重要細(xì)節(jié)DeepSeek 的 API 是預(yù)付費(fèi)模式賬戶余額為 0 的時候請求會被直接拒絕所以別等報錯了才想起來充值。充值的金額可以從小額開始跑通流程后再按實(shí)際用量追加。接下來在控制臺里找到「API Keys」頁面點(diǎn)擊創(chuàng)建新密鑰系統(tǒng)會生成一串sk-開頭的字符串。這個密鑰創(chuàng)建后通常只顯示一次一定要立刻復(fù)制保存。我自己的習(xí)慣是復(fù)制到剪貼板后馬上寫進(jìn)本地環(huán)境變量文件而不是粘貼進(jìn)項(xiàng)目代碼或提交到 Git 倉庫。如果你用密碼管理器也可以順手存一份丟了只能重新創(chuàng)建。2.2 確認(rèn) Node.js 版本Claude Code 通過 npm 分發(fā)而 npm 由 Node.js 自帶所以得先確認(rèn) Node 環(huán)境。打開終端執(zhí)行node -vClaude Code 目前要求 Node.js 18 或更高版本。如果提示沒有 node或者版本偏舊去官網(wǎng)下載 LTS 版本安裝即可。我自己習(xí)慣用 nvm 管理 Node 版本切換、升級都方便nvm install --lts nvm use --lts一條龍搞定。裝完記得重新打開一個終端確保node在 PATH 里。順手再檢查一下 npm 本身npm -v。如果遇到 npm 安裝包速度很慢的情況常見做法是臨時切換 npm 鏡像源這屬于常規(guī)操作不影響后續(xù)步驟。但注意不要為了加速而使用來歷不明的第三方源安全第一。2.3 終端環(huán)境差異配置前先認(rèn)清自己用的什么終端因?yàn)椴煌到y(tǒng)的環(huán)境變量寫法不一樣。macOS 下默認(rèn) shell 是 zsh環(huán)境變量寫在~/.zshrc里L(fēng)inux 如果是 bash就寫~/.bashrc。如果你在服務(wù)器上通過 SSH 長時間跑任務(wù)強(qiáng)烈建議配合 tmux 保持會話否則終端連接一斷正在進(jìn)行的任務(wù)就一起沒了重新連上還得從頭再來。Windows 下最好用的方式是用 Windows Terminal 加 PowerShell環(huán)境變量可以通過系統(tǒng)設(shè)置面板設(shè)置也可以在 PowerShell 里用setx命令寫入。不過更推薦的做法是直接裝 WSL2這樣所有命令、路徑規(guī)則都和 Linux 保持一致能少踩很多編碼和路徑的坑。無論哪種系統(tǒng)改完配置文件后記得讓配置生效source ~/.zshrc或直接重開終端。3. 安裝 Claude Code兩條路我都替你試過了3.1 路線 Anpm 全局安裝推薦當(dāng) Node 環(huán)境就緒后安裝其實(shí)就一條命令的事npm install -g anthropic-ai/claude-code裝完直接就能用claude命令。以后更新也很簡單npm update -g anthropic-ai/claude-code就行。npm 方式的優(yōu)點(diǎn)在于依賴關(guān)系清晰、卸載方便沒有任何額外的文件散落在系統(tǒng)里。我建議有 Node 環(huán)境的機(jī)器都用這條路線。這里有個常見的坑如果你是用系統(tǒng)自帶的方式安裝的 Nodenpm 全局目錄可能在系統(tǒng)目錄下普通用戶沒有寫權(quán)限安裝時會報 EACCES 權(quán)限錯誤。遇到這種情況不要急著用 sudo 硬裝全局包更好的解決方式是改用 nvm 安裝 Node讓全局目錄落到自己的用戶目錄下權(quán)限問題自然消失。3.2 路線 B原生安裝腳本如果你不想裝 Node或者機(jī)器上受限于公司策略不方便用 npm可以用官方提供的原生安裝腳本curl -fsSL https://claude.ai/install.sh | bash腳本會把可執(zhí)行文件放到~/.local/bin目錄下。裝完如果提示找不到命令多半是這個目錄不在 PATH 里手動加上就行export PATH$HOME/.local/bin:$PATH兩條路線我都實(shí)際測過。npm 版更新省事原生版更輕量。需要提醒的是用安裝腳本這種方式未來升級也得重新跑腳本所以日常使用還是優(yōu)先 npm。3.3 安裝后的版本驗(yàn)證裝完別急著配置先用下面的命令確認(rèn)命令真的可用claude --version能看到版本號說明核心組件已經(jīng)就位。如果報 command not found按順序檢查三件事PATH 里有沒有對應(yīng)的安裝目錄、終端有沒有重開過、安裝過程有沒有權(quán)限報錯。which claude可以查看可執(zhí)行文件的具體位置方便定位問題。4. 把 DeepSeek 裝進(jìn) Claude Code環(huán)境變量是全部秘密4.1 四個環(huán)境變量逐個解釋Claude Code 對接 DeepSeek 的全部秘密就是環(huán)境變量。下面四個變量是必須配置的環(huán)境變量作用示例值A(chǔ)NTHROPIC_BASE_URLAPI 請求地址https://api.deepseek.com/anthropicANTHROPIC_AUTH_TOKEN認(rèn)證憑證sk-你的密鑰ANTHROPIC_MODEL主力模型deepseek-chatANTHROPIC_SMALL_FAST_MODEL輕量任務(wù)模型deepseek-chat逐個說明一下。ANTHROPIC_BASE_URL是整個替換方案的核心它決定 Claude Code 把請求發(fā)往哪里。DeepSeek 的 Anthropic 兼容端點(diǎn)路徑就是https://api.deepseek.com/anthropic。ANTHROPIC_AUTH_TOKEN是認(rèn)證信息Claude Code 會把它的值以 Bearer Token 的形式放進(jìn)請求頭DeepSeek 端認(rèn)的就是這個。ANTHROPIC_MODEL是主力模型所有對話和編碼任務(wù)默認(rèn)走它。ANTHROPIC_SMALL_FAST_MODEL則用于那些輕量任務(wù)比如生成一句話摘要、給對話起標(biāo)題之類的不需要動用大模型為的是省時間和 token。4.2 配置寫進(jìn) shell 配置文件手動在終端里逐個 export 當(dāng)然可以但只對當(dāng)前會話生效重開終端就沒了。正確做法是寫進(jìn) shell 配置文件# ~/.zshrc 或 ~/.bashrc export ANTHROPIC_BASE_URLhttps://api.deepseek.com/anthropic export ANTHROPIC_AUTH_TOKENsk-你的DeepSeek密鑰 export ANTHROPIC_MODELdeepseek-chat export ANTHROPIC_SMALL_FAST_MODELdeepseek-chat保存后執(zhí)行source ~/.zshrc再echo $ANTHROPIC_BASE_URL確認(rèn)變量已經(jīng)加載。為什么推薦用環(huán)境變量而不是把密鑰寫進(jìn) Claude Code 的設(shè)置文件因?yàn)榄h(huán)境變量可以在不同環(huán)境間靈活注入在服務(wù)器上可以通過 secrets 機(jī)制傳入不用擔(dān)心密鑰被提交到倉庫。我的做法是本地開發(fā)機(jī)寫死在 shell 配置里團(tuán)隊(duì)協(xié)作時則通過各自的環(huán)境變量注入互不干擾。4.3 模型選型deepseek-chat 還是 deepseek-reasonerDeepSeek 在兼容端點(diǎn)上開放了兩個模型標(biāo)識選擇邏輯其實(shí)很簡單模型標(biāo)識對應(yīng)模型特點(diǎn)適合場景deepseek-chatDeepSeek-V3響應(yīng)快、成本低、指令跟隨穩(wěn)日常編碼、重構(gòu)、問答、寫測試deepseek-reasonerDeepSeek-R1推理鏈長、擅長拆解復(fù)雜問題疑難 bug 定位、算法設(shè)計、架構(gòu)取舍我的默認(rèn)配置是deepseek-chat日常 90% 的任務(wù)它都能干凈利落地完成。當(dāng)遇到那種反復(fù)試了幾次都找不到原因的詭異 bug、或者需要做復(fù)雜方案對比時再手動把ANTHROPIC_MODEL切到deepseek-reasoner并重啟 Claude Code。兩個模型在兼容端點(diǎn)上使用相同的消息格式所以對 Claude Code 來說切換只是改一個環(huán)境變量的事。5. 第一次跑通讓組合干一個真實(shí)的活5.1 啟動與首屏確認(rèn)現(xiàn)在進(jìn)入最激動人心的部分。在任意項(xiàng)目目錄下執(zhí)行claude首次啟動會顯示歡迎信息和一些使用提示。因?yàn)榄h(huán)境變量已經(jīng)配好它不會再要求登錄官方賬號。這里有一個容易忽略的細(xì)節(jié)四個環(huán)境變量必須在同一個 shell 會話里生效。如果你之前用官方賬號登錄過 Claude Code只要環(huán)境變量存在優(yōu)先級就更高會直接走 DeepSeek萬一它還是引導(dǎo)你走登錄流程多半是當(dāng)前 shell 沒加載配置檢查一下變量再重開。5.2 從簡單任務(wù)開始讓 Claude Code 給你畫項(xiàng)目結(jié)構(gòu)第一次跑通別上來就讓它干重活先來個摸底任務(wù)幫我對這個項(xiàng)目做一次快速摸底入口文件、構(gòu)建腳本、核心模塊分別有哪些你會看到它在終端里逐條展示工具調(diào)用過程先是列出目錄文件然后逐個打開關(guān)鍵文件閱讀最后組織成一段結(jié)構(gòu)化回答。這個過程既是驗(yàn)證配置是否真的連通也是熟悉權(quán)限交互的好機(jī)會。它會詢問你是否允許執(zhí)行某些讀取操作第一次遇到就選擇允許一次觀察它在干什么慢慢建立信任。5.3 讓它動手改代碼一個具體的 bug 修復(fù)摸底沒問題后讓它真正動手改一行代碼。比如入口文件里處理空數(shù)組時會拋異常幫我定位并修復(fù)然后跑一下測試。這個任務(wù)會觸發(fā)一系列動作搜索入口文件、閱讀相關(guān)代碼、修改文件、執(zhí)行測試命令。第一次執(zhí)行寫文件和跑命令時Claude Code 都會彈出權(quán)限請求選項(xiàng)一般是允許一次、總是允許或拒絕。我的建議是測試命令這類安全的操作可以一路放行但涉及刪除文件、改動全局配置的命令一定要先看清楚路徑和內(nèi)容再決定。提示第一次跑完整流程時全程盯著終端。工具會把每一步的意圖都展示出來別按了回車就不管了。等你對它的行為模式有了把握再考慮放寬權(quán)限。5.4 非交互模式除了交互模式Claude Code 還支持非交互模式適合腳本化和批量場景claude -p 這個倉庫的 README 有哪些可以改進(jìn)的地方-p是 print 模式執(zhí)行完直接輸出結(jié)果不做任何等待。你可以把它接到其他命令的管道里實(shí)現(xiàn)讓智能體寫代碼片段 - 輸出給下一個工具處理的流水線。不過非交互模式?jīng)]有權(quán)限確認(rèn)環(huán)節(jié)風(fēng)險控制完全靠你給它的任務(wù)邊界所以不要讓它執(zhí)行具有破壞性的操作。6. 跑通之后的事記憶、權(quán)限與模型切換6.1 用 CLAUDE.md 建立項(xiàng)目記憶Claude Code 有一個非常實(shí)用的機(jī)制它會自動讀取項(xiàng)目根目錄下的CLAUDE.md文件以及用戶全局目錄~/.claude/CLAUDE.md把里面的內(nèi)容當(dāng)作項(xiàng)目的背景知識。這意味著你可以把構(gòu)建命令、測試命令、代碼風(fēng)格約定、目錄結(jié)構(gòu)說明、容易犯的錯全都寫進(jìn)去它每次啟動都會先讀一遍再開始干活。舉個例子我的一個項(xiàng)目 CLAUDE.md 長這樣# 項(xiàng)目約定 - 使用 pnpm 安裝依賴不要用 npm - 測試命令pnpm test - 組件統(tǒng)一放在 src/components 目錄下 - 不要在構(gòu)造函數(shù)里發(fā)起網(wǎng)絡(luò)請求 - 已廢棄的 API 見 docs/legacy.md不要在新代碼中使用寫完之后Claude Code 的出錯率肉眼可見地下降。以前它偶爾會自作主張用 npm 裝依賴或者把新組件放錯目錄現(xiàn)在這些錯基本絕跡。建議把項(xiàng)目級的 CLAUDE.md 納入版本控制讓團(tuán)隊(duì)成員共享同一套約定全局那個則記錄你自己的通用偏好不用共享。6.2 權(quán)限管理allow / deny 規(guī)則交互模式下頻繁彈權(quán)限框確實(shí)安全但彈多了也影響效率。Claude Code 支持通過 settings.json 預(yù)置權(quán)限規(guī)則指定哪些工具直接放行、哪些命令直接拒絕。配置文件有兩個層級~/.claude/settings.json是用戶級全局生效.claude/settings.json是項(xiàng)目級。我目前項(xiàng)目里用的是這樣一份{ permissions: { allow: [ Read, Glob, Grep, Edit, Bash(npm test:*), Bash(pnpm test:*) ], deny: [ Bash(rm -rf *) ] } }allow 里放的是一些高頻的只讀工具和安全的測試命令deny 里把高危命令擋在門外。這樣日常操作不再頻繁打斷你真正有風(fēng)險的操作依然需要人工確認(rèn)。有一點(diǎn)需要注意不同版本對 permissions 的支持細(xì)節(jié)略有差異如果某條規(guī)則不生效可以在交互界面里用/permissions查看當(dāng)前實(shí)際規(guī)則。6.3 常用命令與上下文管理跑通之后有幾個命令我?guī)缀趺刻於荚谟谩?clear清空當(dāng)前會話上下文和 DeepSeek 搭配時尤其重要因?yàn)閷υ捲介L累計的 token 越多成本和時間都會上升任務(wù)完成就清一下是省錢的好習(xí)慣。/cost可以查看當(dāng)前會話的消耗情況。想打斷它正在執(zhí)行的操作按 Esc 就行。另外ShiftTab 可以切換自動接受權(quán)限的模式但我在不熟悉的項(xiàng)目里一般保持手動確認(rèn)。上下文管理也有門道。DeepSeek 的上下文窗口比官方旗艦?zāi)P鸵∫恍┧悦鎸Υ箜?xiàng)目時別指望它一次性把所有代碼都讀進(jìn)上下文。更好的方式是在 CLAUDE.md 里寫清楚項(xiàng)目的結(jié)構(gòu)和關(guān)鍵文件路徑讓它按需 Read 具體文件而不是把所有文件內(nèi)容都塞進(jìn)去這樣既省 token也降低超限概率。7. 我踩過的坑報錯現(xiàn)象、根因與解決順序7.1 401 Unauthorized 鑒權(quán)失敗這是最常見的報錯現(xiàn)象是 Claude Code 啟動后所有請求都返回 401。排查順序我建議這樣走先確認(rèn)環(huán)境變量真的加載了echo $ANTHROPIC_AUTH_TOKEN看值是否完整。再確認(rèn)ANTHROPIC_BASE_URL沒寫歪注意不要漏掉/anthropic這個路徑。到 DeepSeek 控制臺核對 key 是否一致復(fù)制時最容易帶進(jìn)空格或換行。檢查賬戶余額DeepSeek 是預(yù)付費(fèi)余額為 0 時請求也會被拒報錯可能是 401 也可能是其他 4xx。最后用 curl 直接打一次 DeepSeek 的兼容端點(diǎn)把 Claude Code 排除在外curl https://api.deepseek.com/anthropic/v1/messages \ -H Authorization: Bearer sk-你的密鑰 \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d {model:deepseek-chat,max_tokens:20,messages:[{role:user,content:ping}]}如果 curl 返回了正常的內(nèi)容字段說明密鑰和端點(diǎn)都沒問題問題在 Claude Code 側(cè)的配置如果 curl 也報錯那就是 key、余額或端點(diǎn)的問題逐個排除。7.2 模型不存在或請求 404另一種常見報錯是模型不存在。很多人會憑直覺把ANTHROPIC_MODEL配成deepseek-v3或deepseek-r1但 DeepSeek 的 Anthropic 兼容端點(diǎn)只認(rèn)兩個標(biāo)識deepseek-chat和deepseek-reasoner。使用其他名稱都會導(dǎo)致請求 404。這個問題本身很好解決把環(huán)境變量改回官方標(biāo)識即可。我踩過一次之后就把正確寫法注釋在了 shell 配置里防止下次又手滑。7.3 限流與并發(fā)控制高頻并發(fā)使用時會撞上 429 限流。我遇到的情況是同時在多個終端窗口里開了好幾個會話每個會話又連續(xù)發(fā)出大量請求很快就觸發(fā)了速率限制。解決思路有三個減少同時運(yùn)行的會話數(shù)量遇到限流報錯后等待片刻再繼續(xù)對于不著急的任務(wù)把請求節(jié)奏放慢。另外批量任務(wù)盡量放進(jìn)同一個會話里串行執(zhí)行不要并行開一堆窗口這樣既能避開限流也方便統(tǒng)一觀察和管理。7.4 上下文過長導(dǎo)致請求被拒長會話是隱形的坑。一開始我沒意識到一個任務(wù)接著一個任務(wù)聊聊了很長時間之后突然某個請求就開始報上下文長度超限。這是因?yàn)閷υ挼臍v史記錄一直在累計 token最終頂?shù)搅四P偷拇翱谏舷?。解決方式最簡單有效任務(wù)告一段落就/clear開新會話繼續(xù)。復(fù)雜任務(wù)也不要試圖一次聊完拆成幾步每步一個干凈上下文效果更好。這不光是為了避免超限也是為了控制成本。7.5 工具調(diào)用偶發(fā)異常最后說一個偶發(fā)問題DeepSeek 的兼容端點(diǎn)偶爾會在工具調(diào)用上和 Claude Code 的預(yù)期不完全一致表現(xiàn)為任務(wù)進(jìn)行到一半突然卡住、或者模型返回了 Claude Code 解析不了的結(jié)構(gòu)。畢竟兼容層不可能做到像素級一致這是所有換后端模型方案都要面對的現(xiàn)實(shí)。我遇到時的處理順序是先重試一次很多時候重試就過了如果同樣位置再次失敗就把任務(wù)拆小換一種表述讓它重新嘗試還不行就檢查是否有新版 Claude Code升級后再試。整體來說這種問題出現(xiàn)的頻率不高用兼容方案省下的成本完全覆蓋這點(diǎn)小麻煩。8. 用了一個月之后的幾點(diǎn)體會這套組合我用了大概一個月整體感受是值得折騰。最深的體會是CLAUDE.md 的價值被大多數(shù)人低估了。我花了半小時把項(xiàng)目的約定、命令、易錯點(diǎn)寫清楚之后Claude Code 的輸出質(zhì)量提升了一個臺階甚至比我去研究模型參數(shù)更有效。這也是我反復(fù)在文章里強(qiáng)調(diào)它的原因工具再強(qiáng)背景知識的質(zhì)量直接決定它的發(fā)揮。第二個體會是模型分工。日常開發(fā)默認(rèn)deepseek-chat速度跟手、成本可控遇到真正難纏的問題才切deepseek-reasoner。與其全程用貴的模型不如訓(xùn)練自己判斷這個任務(wù)值不值得上重武器這也是一種成本控制的能力。最后分享一個能提升幸福感的小技巧給 Claude Code 起個別名。alias ccclaude以后在項(xiàng)目里敲cc就能進(jìn)入智能體模式省了三個字母但每天敲十幾次省下的時間的心理滿足感很實(shí)在。另外一個隱藏技巧是在全局~/.claude/CLAUDE.md里寫一句話動手改代碼之前先閱讀 README 和相關(guān)測試再開始修改。這句話讓我的組合行為明顯變得更謹(jǐn)慎、更不容易改壞東西。工具是拿來干活的這套組合真正跑順之后你會發(fā)現(xiàn)原來很多繁瑣的編碼雜活確實(shí)可以放心交給它去做了。