Claude Code 完整指南
從安裝、權限模式、記憶與 context,到 Skills、MCP、Hooks 擴充,一頁看懂 Claude Code 怎麼運作、怎麼設定。
Claude Code 是什麼
Claude Code 是 Anthropic 官方的 agentic coding 工具:你用一句話交代任務,它自己讀專案、改檔案、跑指令、驗證結果,直到做完。它看得到整個專案,不只是你開著的那個檔案,這是它和行內補全工具最大的差別。
一張圖看懂
你下指令,Claude Code 在 context 裡推理、在迴圈裡動手;每個會改東西的動作都要先過權限關卡,才碰得到你的電腦或外部服務。圖上的數字是講那一塊的章節,安裝方式另外在第 2 章。
一個任務怎麼跑
Claude 在蒐集脈絡、採取行動、驗證結果三個階段之間來回,每次工具回傳的結果決定下一步做什麼。你隨時可以按 Esc 打斷,或直接打字修正方向。用官方文件的例子「修好失敗的測試」走一遍:
問一個關於程式碼的問題,可能只需要第一階段;修 bug 會三個階段繞好幾圈。這個迴圈由兩樣東西撐起來:負責推理的模型,和負責動手的工具(讀寫檔案、搜尋、執行指令、上網查資料)。
它碰得到什麼
| 範圍 | 內容 |
|---|---|
| 專案 | 目前目錄與子目錄的檔案;目錄外的檔案要你允許 |
| 終端機 | 你能在命令列跑的指令它都能跑:build、git、套件管理、腳本 |
| git 狀態 | 目前分支、未 commit 的改動、最近的 commit |
CLAUDE.md | 你寫給它的專案規則,每個 session 開始時載入 |
| Auto memory | Claude 工作時自己記下的偏好與心得 |
| 擴充 | MCP、Skills、Subagents 等你另外裝上的能力 |
在哪裡用
底層的迴圈和工具到處都一樣,差別只在你從哪裡操作、程式碼在哪台機器上執行。
| 入口 | 適合 |
|---|---|
| 終端機 CLI | 完整功能,這頁的指令都以它為準 |
| VS Code、JetBrains | 在編輯器裡看 diff、直接改 |
| Desktop app | 圖形介面管理多個 session |
網頁 claude.ai/code | 在雲端 VM 跑,手邊沒有 repo 也能做 |
| Slack、GitHub Actions、GitLab | 從團隊訊息或 CI 流程觸發 |
需要什麼帳號
Claude 訂閱(Pro、Max、Team、Enterprise)、Claude Console 帳號(API 預付額度),或透過 Amazon Bedrock、Google Cloud Agent Platform、Microsoft Foundry 等雲端供應商使用。
安裝與上手
官方推薦用原生安裝程式,裝好會在背景自動更新。npm 版不再是建議的安裝方式。
1. 安裝
curl -fsSL https://claude.ai/install.sh | bash
irm https://claude.ai/install.ps1 | iex
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
也可以用 brew install --cask claude-code 或 winget install Anthropic.ClaudeCode,這兩種不會自動更新,要自己定期 upgrade。Windows 建議先裝 Git for Windows,Claude 才能用 Bash;沒裝的話會改用 PowerShell。裝完開新的終端機,跑 claude --version 看到版本號就是成功。
2. 第一次進專案
cd your-project claude # 第一次會開瀏覽器請你登入 /init # 分析專案,產生 CLAUDE.md
接著直接用中文問「這個專案在做什麼?」或交代任務。檔案不用自己貼,它會視需要去讀。
3. 先記這些按鍵
| 按鍵 | 作用 |
|---|---|
Shift+Tab | 切換權限模式(下一分頁詳細說明) |
Esc | 中斷 Claude,正在跑的工具呼叫會取消 |
Esc Esc | 清掉輸入草稿,或倒回之前的 checkpoint |
@ | 輸入檔案路徑,有自動完成 |
! | 開頭加 ! 直接跑 shell 指令,輸出會進對話 |
/ | 叫出指令與 skill 清單 |
Ctrl+B | 把正在跑的工作丟到背景 |
Ctrl+R | 搜尋輸入歷史 |
Ctrl+V | 貼上圖片(Windows 是 Alt+V) |
Ctrl+D | 離開 session(也可以打 /exit) |
4. 終端機指令
| 指令 | 作用 |
|---|---|
claude | 開始互動式 session |
claude "task" | 帶著第一句 prompt 開始 |
claude -p "query" | 執行一次就結束,適合腳本 |
cat log | claude -p "explain" | 把管道輸入交給它處理 |
claude -c | 接續這個目錄最近一次對話 |
claude -r | 從清單挑一個舊對話接續 |
claude --model opus | 指定模型 |
claude --permission-mode plan | 以指定的權限模式開始 |
claude update | 手動更新 |
5. Session 內的常用指令
| 指令 | 作用 |
|---|---|
/init | 分析專案,產生 CLAUDE.md 初稿 |
/memory | 編輯記憶檔,開關 auto memory |
/context | 用色塊看目前 context 被什麼佔掉 |
/compact | 把目前對話摘要,騰出 context |
/clear | 清空 context,開新對話 |
/rewind | 把程式碼和對話倒回某個 checkpoint |
/resume | 回到之前的對話 |
/btw | 問旁支問題,不加進主對話 |
/model | 切換模型 |
/effort | 調整思考深度 |
/usage | 看用量(/cost 是別名) |
/permissions | 設定允許、詢問、拒絕規則 |
/mcp | 查看 MCP server 連線狀態 |
/doctor | 檢查安裝與設定,能修的直接修 |
/help | 列出所有指令 |
權限模式與設定
權限模式決定 Claude 哪些動作可以不問你就做。按 Shift+Tab 切換,狀態列會顯示目前是哪個模式;從 Auto 按第一下回到 Manual,之後依序是 Manual → Accept edits → Plan。
同一個任務,換個模式,要你按同意的次數就不一樣:
全部六種模式
| 模式 | 不問你就做的 | 適合 |
|---|---|---|
| Manual(default) | 只有讀檔 | 敏感專案、不熟的程式碼 |
| Accept edits | 讀檔、改檔、mkdir / mv / rm 等檔案指令 | 邊改邊用 diff 檢查 |
| Plan | 讀檔,加上分類器核准的探索指令 | 動手前先看它打算怎麼改 |
| Auto | 全部,由分類器在背景做安全檢查 | 長任務、不想一直按同意 |
| dontAsk | 只有預先允許的工具,其他一律拒絕 | CI 與腳本 |
| bypassPermissions | 全部 | 只在隔離的容器或 VM 裡用 |
Claude Code v2.1.283 起,新開的終端機與 VS Code session 預設就是 Auto 模式。dontAsk 不在 Shift+Tab 循環裡,要用 --permission-mode dontAsk 啟動。
Esc Esc 或 /rewind 就能倒回。但資料庫、API、部署這類影響外部系統的動作沒有 checkpoint,只能靠權限模式和規則事先擋住。用 settings.json 寫死規則
常用又安全的指令可以預先允許,危險的直接拒絕。規則寫在 permissions 底下的 allow、ask、deny 三個陣列:
{
"permissions": {
"allow": ["Bash(npm run *)", "Bash(git diff *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)", "Bash(curl *)"]
}
}比對順序固定是 deny → ask → allow,先符合的算數;deny 在任何模式都有效,包括 bypassPermissions。Bash(npm run *) 的 * 是萬用字元,舊寫法 Bash(npm run:*) 仍然可以用。舊版的 allowedTools / disallowedTools 設定已經改成上面的 permissions 格式。
| 檔案 | 範圍 |
|---|---|
~/.claude/settings.json | 你自己,所有專案 |
.claude/settings.json | 這個專案,commit 進 repo 和團隊共用 |
.claude/settings.local.json | 這個專案,只有你(不進版控) |
記憶與 Context 管理
每個 session 都從空白的 context 開始。能帶到下一個 session 的只有兩種:你寫給它的 CLAUDE.md,和 Claude 自己記下的 auto memory。
記憶檔放在哪
記憶檔一共六層,範圍由大到小疊起來。重點是分清楚哪幾層會跟著 repo 給團隊,哪幾層只留在你的電腦:
這些檔案不會互相覆蓋,而是全部疊起來給 Claude 讀,離你工作目錄越近的越晚讀到。子目錄裡的 CLAUDE.md 要等 Claude 讀到那個目錄的檔案時才載入。專案裡只有 AGENTS.md、沒有 CLAUDE.md 時,Claude 會直接讀 AGENTS.md。
CLAUDE.md 可以用 @path/to/file 引入其他檔案,最多往下四層。/init 產生初稿,/memory 編輯記憶檔、開關 auto memory。
Context 快滿時會發生什麼
Context window 裝著對話、讀過的檔案、指令輸出、CLAUDE.md、載入的 skill。快滿時 Claude Code 會先清掉舊的工具輸出,再把對話摘要;你的需求和關鍵程式碼會留下,但前面交代的細節可能不見。按左邊的動作把 context 填滿,看壓縮後剩下什麼:
| 指令 | 什麼時候用 |
|---|---|
/context | 想知道空間被誰佔掉 |
/compact 聚焦在 API 改動 | 對話變長但任務還沒完,指定摘要要保留的重點 |
/clear | 換到不相關的新任務 |
/btw | 臨時問個小問題,不想弄髒主對話 |
| Subagent | 要讀大量檔案的支線任務,交給它用自己的 context,只回傳摘要 |
一定要記住的規則寫進 CLAUDE.md,不要只講在對話裡;壓縮時要保留的東西,也可以在 CLAUDE.md 加一段「Compact Instructions」。
模型與思考深度
| 別名 | 用途 |
|---|---|
opus | 最新 Opus,複雜推理。Pro、Max、Team、Enterprise 與 API 的預設是 Opus 5.5 |
sonnet | 最新 Sonnet,日常開發 |
haiku | 快又便宜,簡單任務 |
fable | 能力最強,適合最長的任務 |
opusplan | Plan 模式用 Opus,執行時換 Sonnet |
sonnet[1m] | Sonnet 搭配 100 萬 token context(opus[1m] 同理) |
思考深度用 /effort 調,從 low、medium、high、xhigh 到 max;也可以在啟動時加 --effort high。只想讓某一句多想一點,在 prompt 裡寫 ultrathink,只影響那一輪。以前流傳的 think、think hard、think harder 現在都只會被當成一般文字。
擴充:Skills、Subagents、MCP、Hooks
內建工具已經能處理大部分開發工作。擴充用來補三種缺口:Claude 不知道的事、它碰不到的系統、每次都要你提醒的動作。不用一開始全部裝,遇到下面的情況再加。
遇到什麼情況,加什麼
每種擴充的差別,在於它佔不佔主對話的 context、什麼時候被載入。挑一個你遇到的情況:
MCP:接上外部服務
MCP(Model Context Protocol)是讓 Claude 連外部服務的標準介面,連上之後它就多了那個服務的工具可用。遠端服務用 HTTP,本機程式用 stdio:
# 遠端 HTTP server(以 Context7 文件查詢為例) claude mcp add --transport http context7 https://mcp.context7.com/mcp # 本機 stdio server:-- 後面是要執行的指令 claude mcp add --env API_KEY=你的金鑰 my-server -- npx -y @example/mcp-server
SSE 傳輸已經 deprecated,新的 server 一律用 --transport http。用 --scope(或 -s)決定設定存在哪:
| scope | 存在哪 | 誰能用 |
|---|---|---|
local | ~/.claude.json | 只有你,只在這個專案(預設) |
project | .mcp.json | 進版控,團隊共用 |
user | ~/.claude.json | 只有你,所有專案 |
project scope 會在專案根目錄產生 .mcp.json,也可以直接手寫:
{
"mcpServers": {
"context7": {
"type": "http",
"url": "https://mcp.context7.com/mcp"
}
}
}claude mcp list # 列出所有 server claude mcp get context7 # 看單一 server 設定 claude mcp remove context7 # 移除 claude mcp reset-project-choices # 重設 .mcp.json 的核准紀錄 /mcp # session 內看連線狀態