AI 程式設計工具的幾種形態
補全、對話、編輯器裡的智慧體、命令列智慧體,AI 程式設計工具大致分這四種。講清楚每種在做什麼、適合什麼任務,以及怎麼控制智慧體能動你電腦上的哪些東西。
- 約 30 分鐘
- 難度:入門
- 實測:2026-09-14,產品功能以各自官方文件為準,無需執行
程式碼和執行結果保留原樣(簡體中文),與實際執行時完全一致。
AI 程式設計工具的名字換得很快,每隔幾個月就有新產品、新功能。但如果按"它能替你做多少事"來分,大致只有四種形態。弄清楚每種形態在做什麼,比記住哪個產品有哪個按鈕更有用:換了工具,這些判斷依然成立。
一、補全
你在編輯器裡打字,它在游標後面用灰色的文字預測你接下來要寫什麼,按 Tab 接受,繼續打字就忽略。GitHub Copilot 最早讓很多人熟悉了這種形態,現在大多數編輯器都內建了。以 Cursor 為例,它的補全功能就叫 Tab,官方的說法是根據你最近的修改、周圍的程式碼和程式碼檢查的報錯來給出建議。
從第 01 模組的角度看,這就是"預測下一個詞元"最直接的應用:把游標前後的程式碼作為輸入,預測接下來的一段。
適合:你知道要寫什麼,只是不想一個字一個字敲。補一個函式的剩餘部分、寫重複的樣板程式碼、按照上一行的模式寫下一行。
不適合:你還沒想清楚要寫什麼。補全只會順著你開的頭往下寫,不會幫你想方案。
要注意:它補得很快、看起來很像樣,很容易不經思考就按下 Tab。補全出來的參數名、函式名,是模型"預測"出來的,不一定真的存在(第 01 模組第 2 課的幻覺)。
二、對話
在一個聊天窗口裡提問:"這個報錯是什麼意思?"、"幫我寫一個解析 CSV 的函式"。可以是網頁上的聊天機器人,也可以是編輯器側邊欄裡的對話面板。
它和補全的區別是:你描述需求,它給出一整段程式碼或者一段解釋,由你決定怎麼用。它能看到的只有你貼上給它的內容(編輯器裡的對話面板通常能自動帶上當前檔案)。
適合:解釋一段看不懂的程式碼、問一個概念、寫一個獨立的小函式、討論幾種方案的優劣。
不適合:需要同時瞭解和修改很多個檔案的任務。你得手動把相關的檔案都貼給它,再手動把它的回答改進對應的檔案裡,很容易漏。
三、編輯器裡的智慧體
在編輯器裡給它一個任務,它自己去讀專案裡的檔案、決定改哪些地方、直接修改檔案,有的還能執行命令(跑測試、裝依賴)。Cursor 的 Agent 模式、各種編輯器裡的"智慧體模式"都屬於這一類。
這就是第 05 模組講的智慧體:一個模型加上一組工具(讀檔案、搜尋程式碼、改檔案、執行命令),在迴圈裡自己決定下一步做什麼。第 05 模組第 2 課那個一百多行的迴圈,就是它們的核心。
適合:跨多個檔案的改動、需要先讀懂程式碼才能動手的任務、改完要跑測試驗證的任務。
要注意:它直接修改你的檔案。改動都顯示在編輯器裡,你可以逐個接受或者撤銷。改動一多,就要靠 git 來管理(第 3 課)。
四、命令列智慧體
和上一種一樣是智慧體,只是不在編輯器裡,而是在終端裡執行。截至 2026 年 9 月,常見的有 Anthropic 的 Claude Code、OpenAI 的 Codex CLI 等。以 Claude Code 為例,按官方文件,在 macOS 或 Linux 上安裝,然後在專案目錄裡啟動:
curl -fsSL https://claude.ai/install.sh | bash
cd 你的项目
claude
Codex CLI 的安裝方式之一是 npm install -g @openai/codex,裝好後執行 codex。
命令列智慧體和編輯器沒有繫結,你可以用任何編輯器。它們也更容易放進指令碼和自動化流程裡,比如在持續整合裡讓它跑一個固定的任務。
適合:比較大的任務、需要大量執行命令的任務(跑測試、查日誌、操作 git)、想讓它連續工作一段時間的任務。
要注意:它能在你的電腦上執行命令。這是它最有用的地方,也是最需要小心的地方。
控制智慧體能做什麼
後兩種形態都是智慧體,都能動你的檔案、執行命令。第 05 模組第 8 課講過,能動手的智慧體一定要限制許可權。好在這些工具都提供了控制手段。以兩個命令列工具為例(截至 2026 年 9 月的官方文件):
Claude Code 的許可權模式,可以用 Shift+Tab 切換,也可以在啟動時用 --permission-mode 指定:
| 模式 | 不用問你就能做的事 |
|---|---|
default(介面上叫 Manual) |
只能讀檔案,其他操作都要你確認 |
acceptEdits |
讀檔案、改檔案,以及 mkdir、mv 這類常見的檔案操作 |
plan |
只讀,先提出計劃,你批准之前不改任何檔案 |
auto |
所有操作,由一個單獨的模型在後臺做安全檢查 |
dontAsk |
只能用事先允許的工具,其他一律拒絕,適合自動化指令碼 |
bypassPermissions |
所有操作,不做任何檢查,官方說明只應在隔離的容器或虛擬機器裡使用 |
Codex CLI 的沙箱和審批,兩個維度分開設定。沙箱決定它能動什麼:read-only(只讀)、workspace-write(只能在工作目錄裡寫入,這是預設值)、danger-full-access(不設限制,官方不推薦)。審批策略決定什麼時候要問你:預設的 on-request 在它要寫工作目錄以外的地方或者訪問網路時會問你,never 則從不詢問。
具體的模式名稱以後可能會變,但思路是通用的,而且和第 05 模組第 8 課的結論完全一致:
- 陌生的專案、重要的改動,先用計劃模式或只讀模式。讓它讀程式碼、提出方案,你看過沒問題再放開。
- 只讓它在工作目錄裡寫。不要讓它能隨意改你電腦上的其他檔案。
- 需要"全部放開"時,放進容器或者虛擬機器裡。出了事,影響不到你的真實環境。
- 危險的操作要你確認。推送程式碼、刪除檔案、訪問網路、安裝依賴,這些不應該讓它自己決定。
怎麼選
| 任務 | 合適的形態 |
|---|---|
| 寫程式碼時順手補全 | 補全 |
| 看不懂一段程式碼、一個報錯 | 對話 |
| 寫一個獨立的小函式或指令碼 | 對話 |
| 改一個功能,涉及三五個檔案 | 編輯器裡的智慧體 |
| 修一個要反覆跑測試才能確認的 bug | 編輯器裡或命令列的智慧體 |
| 大範圍的重構、升級依賴 | 命令列智慧體,放在單獨的 git 分支上 |
大多數人會同時用好幾種:寫程式碼時開著補全,遇到問題問對話,大一點的任務交給智慧體。
形態之間的差別,本質上是你交出去的控制權有多少:補全只替你寫幾個字,每一個都要你按 Tab 確認;對話替你寫一段,你決定要不要用;智慧體替你決定改哪些檔案、執行哪些命令。交出去的控制權越多,能省的事越多,你需要檢查的東西也越多。下一課講怎麼讓它更好地理解你的專案,第 3 課講怎麼檢查它做的事。
練習
- 找一個你最近寫過的小功能,分別用對話和智慧體兩種形態讓 AI 實現一遍。比較一下:你花了多少時間描述需求、多少時間檢查結果?
- 在你用的 AI 程式設計工具裡,找到它的許可權設定或沙箱設定。它預設允許做哪些事?哪些事會問你?把它調整到你覺得合適的程度。
- 在一個不重要的專案裡,用計劃模式(或者只讓它讀、不讓它改)給智慧體一個任務,只看它提出的方案,不讓它動手。它的方案和你自己想的有什麼不同?
自測
1. 補全、對話、智慧體這三種形態,最根本的區別是什麼?
交出去的控制權不同。補全只預測接下來的幾個字,每次都要你確認;對話給出一段程式碼,由你決定怎麼用;智慧體自己決定讀哪些檔案、改哪些地方、執行哪些命令。控制權越多,省的事越多,需要檢查的也越多。
2. 第一次讓智慧體處理一個陌生的專案,應該用什麼樣的許可權設定?
先用計劃模式或只讀模式,讓它讀程式碼、提出方案,你檢查過沒問題再允許它修改。寫入範圍限制在工作目錄裡,推送、刪除、聯網、裝依賴這類操作要你確認。
3. 為什麼說智慧體的"全部放開"模式只應該在容器或虛擬機器裡使用?
這種模式下它執行任何命令都不經過檢查。一旦它做出錯誤的決定,或者被讀到的內容誘導(第 05 模組第 8 課的提示詞注入),就可能刪掉檔案、洩露金鑰、改壞系統。放在隔離的環境裡,出了問題也影響不到你真實的電腦和資料。