Applied AI School
v0 · 規劃中
Anthropic

Tool use 心智模型

LLM 不會自己改檔案,是透過 tool definitions 跟 harness 協作。為什麼 Claude 在 tool use 上特別強。

TL;DR

  • LLM 只會「吃 text 吐 text」——它連讀檔都做不到
  • 真的去讀檔、跑 cmd、改檔的是 harness(Claude Code 本體),LLM 只負責「決定要呼叫哪個 tool」
  • Claude 在 tool use 上特別穩:訓練時就教過格式,幻覺 tool name / argument 的機率低

一個直覺檢查:Claude Code 真的有打開你的 terminal 嗎

你叫 Claude Code 跑 npm test,它真的打開了一個 terminal、執行 npm、把結果讀回來嗎?

是,但動手的不是 LLM

LLM——不管是 Claude、GPT、Gemini——本質上都只做一件事:吃 text in、吐 text out。它沒有手指、沒有檔案系統、沒有 process。

所以 Claude Code 看起來會用 terminal,是因為有一套協作協定讓 LLM 跟「真的能動手的程式」溝通。這套協定叫 tool use

三層分工

把 Claude Code 拆開來看:

是誰負責什麼
ModelClaude(Opus / Sonnet / Haiku)想:要做什麼、用哪個 tool、傳什麼參數
HarnessClaude Code CLI 本體動:真的去讀檔、跑 cmd、改檔
You給目標、看 plan、批准動作

Tool use 就是把「想」跟「動」分離的協定。

一個 turn 長什麼樣

從你按 enter 那刻起:

  1. 你的 prompt 進去:例如「main.go 裡寫了什麼?」
  2. Harness 包 tool definitions 一起送:附上一張 menu「你可以用 ReadFile、Bash、Edit……每個 tool 的 schema 是這樣」
  3. Model 回 tool call:不是回答你,而是「我要用 ReadFile,參數是 main.go」這樣的格式化文字
  4. Harness 真的跑:開檔、把內容讀出來
  5. 結果塞回對話:harness 把檔案內容當成 tool result 餵回去
  6. Model 看到結果,產出最終答案:「main.go 裡是 ...」

整個過程裡 model 只負責輸出格式正確的 tool call。動手永遠是 harness 在做。

講白一點:「LLM 讀檔」這件事是一種 UI 錯覺。LLM 從來沒讀過檔,它只是寫了「我想讀檔」這句話。

為什麼 Claude 特別強

Tool use 不是 Claude 獨有——所有 frontier model 都有。但 Claude 在這件事上有訓練上的優勢:

  • 格式幻覺率低:tool name 拼錯、argument schema 不對的機率比同級競品低
  • 會選工具:給它 10 個 tools,它能挑對的組合,不會每次都用同一個
  • 沒看過的 tool 也用得來:你裝個 MCP server 進來,它讀完 description 就會用

這對 Claude Code 有三個直接好處:

好處為什麼重要
接得住複雜 task一個 task 拆成 5 個 tool call 也不會中途亂套
容易擴充MCP server / hooks / custom commands 加進來都能用
安全性高用 grep / glob 找東西,不用先把整個 repo 上傳到 indexing service

第三點容易被忽略:很多競品需要把 codebase 上傳到雲端做 vector index,Claude Code 全部用本地 tools(grep、find、read),程式碼從不離開你的機器(除了傳給 model 的那段對話本身)。

接下來

下一篇把這個抽象的「3 層分工」具象化——一個真實 session 從 prompt 到 commit,每一步發生什麼事?