AI 程式設計教程中文版
從原理到實戰

Gemini CLI 怎麼完成一個任務

理解 Gemini CLI 的任務迴圈:上下文裝載、計劃、工具呼叫、觀察、迭代和人工確認。

Gemini CLI 完成任務不是"一次回答結束"。更準確的模型是:它在一個 agent loop(代理迴圈:邊推理邊呼叫工具的迴圈)裡不斷讀取上下文、選擇工具、觀察結果,再決定下一步。

讀懂 agent loop 之後,你就能判斷什麼時候該讓 Gemini CLI 只讀、什麼時候該讓它規劃、什麼時候才允許它寫檔案或跑命令。

任務迴圈

flowchart LR
    A["使用者目標"] --> B["讀取上下文"]
    B --> C["形成計劃"]
    C --> D["選擇工具"]
    D --> E["執行或請求確認"]
    E --> F["觀察結果"]
    F --> G{"目標完成?"}
    G -- "否" --> C
    G -- "是" --> H["總結和交付"]

這個迴圈裡,模型不是唯一變數。工具許可權、上下文質量、專案配置和你的確認策略同樣重要。

上下文來自哪裡

Gemini CLI 可以從這些地方理解任務:

  • 當前對話。
  • 當前工作目錄。
  • GEMINI.md
  • settings.json
  • memory。
  • 檔案系統工具讀取到的檔案。
  • MCP、extensions 或 web 工具返回的外部資訊。

上下文越雜,越需要明確“以哪個檔案為準”。否則 agent 容易把臨時討論、舊文件和真實原始碼混在一起。

工具呼叫意味著什麼

工具呼叫是 Gemini CLI 和普通聊天的核心差異。模型可以不只是“建議你執行命令”,而是請求執行讀檔案、寫檔案、shell、web fetch、MCP 等工具。

這帶來兩個結果:

  • 它可以完成真實工作。
  • 它也可能造成真實副作用。

所以要先區分只讀工具、寫入工具和外部副作用工具。

三類任務模式

模式Gemini CLI 應該怎麼做適合場景
只讀解釋讀取檔案、梳理結構、指出風險,不寫入新儲存庫、報錯定位前、併發協作
計劃優先先給檔案範圍、步驟、驗證和停止條件多檔案改動、遷移、釋出、安全任務
執行驗證小批次修改、看 diff、跑檢查、總結影響邊界清楚、可回退、能驗證的任務

這三種模式不要混用。你說“先分析”,它就不應該改檔案;你說“直接執行”,也要先確認任務邊界已經足夠清楚。

什麼時候讓它規劃

複雜任務先規劃,尤其是:

  • 要改多個檔案。
  • 要跑遷移或釋出。
  • 涉及金鑰、賬號、賬單、遠端伺服器。
  • 當前儲存庫有併發編輯。
  • 你還不確定目錄職責。

規劃階段的輸出應該包括檔案範圍、驗證方式、風險邊界和回復點。

什麼時候讓它執行

執行適合邊界清楚、可驗證、失敗可恢復的任務:

  • 補一頁文件。
  • 改一個小 bug。
  • 執行只讀檢查。
  • 生成測試草案。
  • 根據官方文件更新配置。

如果一個任務無法說明驗收標準,就不應該直接執行。

觀察結果為什麼重要

Agent loop 的關鍵不只是“會呼叫工具”,而是每次呼叫後會根據結果調整下一步。比如測試失敗時,它不應該繼續大改,而應該讀失敗資訊、縮小範圍、修最小問題,再重新驗證。

一個健康的迴圈通常長這樣:

提出假设 -> 读取证据 -> 最小改动 -> 验证 -> 根据结果继续或停止

如果它開始在沒有證據的情況下連續改檔案,說明任務邊界或許可權策略需要收緊。

判斷迴圈是否健康

健康的 agent loop 會先拿證據,再做小動作,再驗證。異常迴圈通常有三個訊號:不讀檔案就下結論,測試失敗後連續大改,沒有說明下一步風險。遇到這三種情況,應該收回寫許可權,回到只讀分析或 Plan mode。

理解這點後,你就能把“模型回答不好”拆成具體問題:上下文不足、工具許可權過寬、計劃不清、驗證缺失,還是模型能力不夠。

觀察結果怎麼用

每次工具呼叫後,都應該把輸出變成下一步依據。read_file 的結果決定是否需要繼續讀上下文;shell 的 exit code 決定是否繼續修改;web fetch 的來源決定事實是否可引用;MCP resource 的內容決定是否允許後續寫工具。

如果 agent 忽略工具輸出,繼續按原計劃執行,說明迴圈已經失真。此時應要求它重新總結證據,再決定下一步,而不是繼續追加新需求。

這也是商業級教程必須寫驗證的原因:沒有觀察和驗證,agent loop 只是更長的聊天。

官方資料

最小可控提示

可以用一句話把迴圈拉回可控狀態:

先说明你已经读取了哪些证据,再给下一步计划,不要在没有证据时修改文件。

這句話能逼 agent 把“觀察結果”顯式說出來。它答不上來,就說明還沒到執行階段。

如果它只能給結論,不能列出檔案路徑、命令輸出或官方來源,就先讓它回到只讀證據採集。真實專案裡,證據鏈比回答速度更重要。

下一篇

本頁目錄