2026年1月13日 星期二

Gemini CLI 學習筆記 : 與 Claude Code 的比較

以前 Claude Code 是 Vibe coding 的首選, 它在程式碼生成品質與準確性上表現優異, 尤其是在複雜任務, 跨檔案重構, 與深度程式分析上都優於 Gemini CLI 與其它 AI 工具. 但 Google AI 在 2025 年底推出 Gemini 3 後, 在多個軟體工程與程式碼生成的基準上, Gemini 3 都已超越包括 Claude 系列在內的主要競爭者, 本篇旨在整理這兩大工具的性能比較. 

本系列之前的測試文章參考 :



1. 效能與功能比較 : 

為了公平起見, 我用第三方的 M365 Copilot Chat 針對 Vibe coding 開發軟體專案, 評比 Claude Code 與 Gemini CLI (Gemini 3) 的優缺點, 得到下面的比較表 : 


比較項目 Gemini 3 (Pro / Flash) Claude 3.5 Sonnet
代表性程式基準 在 SWE‑bench 場景報告中居領先;LiveCodeBench Pro 得分 2439,高於 GPT‑5.1 與 Claude Sonnet。 在 HumanEval 類型基準中表現穩定,但在 Live/Agentic 類基準不及 Gemini 3。
代理式終端工作 (CLI) Terminal‑Bench 2.0 取得 54.2%,領先 Claude 與 GPT‑5.1;適合 agentic coding。 表現穩定但在代理式任務比例上落後,偏向保守增量修改。
速度/延遲 (CLI 迭代) Gemini 3 Flash 主打低延遲與高吞吐,適合快速反覆嘗試。 速度中等,複雜推理時品質穩定,但迭代時間通常較長。
上下文視窗 可達超長上下文 (100 萬個 token),適合大型專案整體分析。 約 20 萬個 tokens,上下文足夠多數場景,但不及 Gemini 系列。
跨模態能力 在多模態基準領先,對 UI/畫面理解與多媒體輔助程式工作更有利。 跨模態能力有限,偏重文字場景。
工具/平台整合 支援 Gemini CLI、Google AI Studio、Vertex AI、Android Studio,Flash 為預設模型。 支援 Anthropic API、Amazon Bedrock、Vertex AI,但 CLI 官方工具較弱。
行為特徵 (提示遵循) 最新版本在思考與工具調用穩定性強化,格式與上下文管理已改進。 格式一致性與保守變更表現佳,較少過度重構。
適用場景總結 快速迭代、代理式工具使用、跨模態理解、超大上下文,適合 CLI 驅動的 vibe coding。 保守修補、嚴格遵循格式、低風險漸進修改,適合長期維護與精細重構。


摘要如下 :
  1. Gemini 3 Pro (Deep Think/Flash)  在包括程式生成 (LiveCodeBench), 代理編程 (Terminal‑Bench) 以及跨模態與邏輯推理的大型基準中表現領先.
  2. Claude 3.5 Sonnet 依舊可靠 (尤其在格式穩定與多步邏輯上), 但在程式產出量, 效能與大型 context 支援上, 目前已不如 Gemini 3. 
  3. 使用最新的 Gemini CLI + Gemini 3 Flash/Pro 在程式生成速度, 質量與 agentic 工作流方面已普遍被認為比 Claude 3.5 Sonnet 更強.
結論是 : 

目前改用 Gemini 3 CLI  (特別是 Flash 或 Pro 模式) 進行 vibe coding 或程式產出已明顯優於 Claude 3.5 Sonnet, 不僅速度快, 工程維度也更強大. 


2. 操作指令比較 : 

Gemini CLI 與 Claude Code 的操作指令之名稱與功能類似, 對照表如下 :


功能分類 功能描述 Gemini CLI Claude Code
安裝與啟動 全域安裝與基本啟動方式 npm install -g @google/gemini-cli
啟動後使用斜線指令 (/settings、/model)
npm install -g @anthropic-ai/claude-code
claude 啟動 REPL
互動模式 (REPL) 在終端中開啟持續對話 執行 gemini
內建斜線指令管理會話
claude(REPL)
可加初始提示 claude "query"
非互動/單次執行 單次執行並輸出結果
(適合 CI)
支援 Headless/print 模式
輸出 JSON 或文字
claude -p "query"
支援 --output-format json|text
會話續接 續接最近或指定會話 /chat save|resume|list|delete 管理對話 claude -c (續接最近) 
--resume 或 --fork-session
模型選擇 指定或切換模型 /model 選擇 Auto/Pro
支援 Gemini 3 Pro/Flash
--model
支援 --fallback-model
模型路由/容量處理 超載或配額時的回退策略 自動路由與回退
Pro 配額用盡時回退到 Flash
--fallback-model sonnet 等
MCP 整合 連接外部服務/工具 支援 MCP 伺服器與工具(grep, terminal) claude mcp
支援 --chrome 啟動瀏覽器
檔案/目錄存取 指定工作目錄, 附加路徑 /directory 管理範圍 --add-dir ../apps ../lib
權限/安全 控管可執行工具與跳過提示 --allowedTools / --disallowedTools
--dangerously-skip-permissions
系統提示 追加或覆寫系統提示 --append-system-prompt

--system-prompt-file
IDE/代理整合 VS Code/IDE 整合能力 Gemini Code Assist 代理模式與 CLI 聯動 --ide 啟動 IDE
支援 agents
自動化/腳本 CI 友善輸出與腳本化 Headless/print 模式;Cloud Shell 支援 -p/--print 搭配輸出格式
更新 CLI 自我更新 npm 更新至最新版本 claude update


注意, Gemini CLI 並沒有 Claude Code 那樣的權限/安全與系統提示操作指令, 這反映了兩大工具設計哲學的差異, Claude Code 有點像一個 "外部承包商", 它非常在意是否被授予權限 (例如它會一直問你 Allow?), 並提供操作指令來管理; 而 Gemini CLI 則像是一個 "深度整合的終端機外掛", 它將安全性與權限交給了底層系統 (OS 權限) 與文件化管理, 而不是透過互動式指令來開關.


3. 斜線指令比較 : 

因斜線指令較常用, 所以從上面的操作指令中抽離出來, 對照表如下 :


功能分類 功能描述 Gemini CLI Claude Code
基礎操作 顯示說明 /help /help
清除畫面/清除上下文 /clear /clear
退出程式 /quit /exit 或 Ctrl+D
報告 Bug /bug /bug
上下文管理 初始化專案配置 (重要) /init (建立 GEMINI.md) /init (建立 CLAUDE.md)
壓縮/精簡對話歷史 /compress /compact
查看/管理記憶與規則 /memory /memory
查看 Token 使用量/統計 /stats /cost 或 /stats
對話與任務 儲存/暫存當前對話 /chat save <tag> /rename (命名 Session)
恢復之前的對話 /chat resume <tag> /resume
計畫/思考模式 無專用指令, 需用 Prompt /plan (進入計畫模式)
配置與擴充 開啟設定 /settings /config
管理 MCP /mcp /mcp
檢查安裝健康度 (無直接對應) /doctor
更改介面主題/樣式 /theme /output-style


斜線指令中最主要的差異是 Gemini CLI 沒有 /doctor 與 /plan 指令, 其中 /plan 是 Claude Code 最棒的功能之一, 在此模式下 Claude Code 會先進行深度思考和規劃再開始寫程式, 這在處理複雜重構時非常有用, 也可避免 AI 衝太快直接改動原始碼, 可惜 Gemini CLI 並沒有此指令, 但可以靠提示工程或自訂指令來達成同樣功能. 

在 Gemini CLI 中用提示詞模擬 /plan 指令的方法有如下三種 :

(1). 單次對話提示詞 (One-off Prompt) :

例如 : 我想重構目前的 XXX 架構, 請先不要寫任何程式碼。請先切換到「規劃模式」, 分析目前的專案結構, 並列出你打算執行的具體步驟 (Step-by-step plan), 等我確認這個計畫並回覆「同意」後你再開始寫程式.

(2). 永久生效設定 (寫入 GEMINI.md) :

執行 /init 指令, 編輯 GEMINI.md, 加入以下內容 :

# Coding Guidelines
1. **Thinking First**: 對於涉及多個檔案修改或邏輯複雜的任務, **嚴禁直接產生程式碼**
2. **Plan Mode**: 必須先輸出一個詳細的「執行計畫 (Action Plan)」, 列出預計修改的檔案路徑和邏輯
3. **Approval**: 只有在使用者明確回覆「Go」或「同意」後才可以使用工具寫入檔案

(3). 自製 /plan 指令 :

在家目錄下建立檔案 : ~/.gemini/commands/plan.toml, 在檔案中貼上以下內容 : 

# 這裡定義指令名稱為 /plan
description = "分析需求並產出執行計畫,但不寫入程式碼"
prompt = """
你現在是架構師模式。請針對使用者的需求: "{{args}}"
1. 讀取相關檔案以理解現狀。
2. **不要** 進行任何寫入或修改檔案的操作。
3. 輸出一個詳細的步驟計畫 (Step-by-step Implementation Plan)。
4. 最後詢問使用者是否依此計畫執行。
"""

然後在 Gemini CLI 中輸入 /plan 指令, 例如 : 

/plan 幫我把資料庫從 SQLite 遷移到 PostgreSQL

這樣 Gemini CLI 就會像一個謹慎的工程師一樣執行規劃而不會貿然地直接動手修改檔案. 


3. 在 Gemini CLI 中實現系統提示控制 : 

從上面的比較可知, Gemini CLI 沒有提供 Claude Code 的系統提示與權限/安全指令, Google 的想法是 : 讓 AI 讀文件 (GEMINI.md 檔) 比讓人類背指令更符合自然語言交互的直覺, 只要善用 GEMINI.md (這是 Gemini CLI 的操作手冊, 啟動時會優先閱讀這個檔案), 不需要指令也可以達到 Claude 那種 "嚴格控制安全與行為" 的效果. 總之, Gemini CLI 適合喜歡文件化管理的人, 它沒有繁瑣的權限指令, 因為它希望使用者透過專案目錄和 GEMINI.md 設好防護欄. 

在 GEMINI.md 中加入安全與權限指令的範例如下 (markdown) :

# 專案規範與安全指令

## 行為限制 (System Rules)
1. **禁止操作**: 未經許可,禁止修改 `config/` 資料夾下的任何 .env 檔案。
2. **安全檢查**: 在執行任何 `rm` 或 `delete` 相關指令前,必須先列出檔案清單供我確認。
3. **程式碼風格**: 嚴格遵守 Python PEP 8 規範。

## 自動化權限
- 允許自動執行 `git status` 與 `ls` 等唯讀指令。
- 寫入檔案前,必須先顯示 diff 差異。

這麼做的好處是, 當我們把安全與權限規則寫在 GEMINI.md, 這份規則會跟著 Git 走, 亦即同組的開發者啟動 Gemini CLI 時會獲得相同的安全規範, 不需要每次換一台電腦就要重新 /config 一次. 

雖然最近會聚焦於 Gemini CLI 的探索, 但由於在四月初之前有胡嘉璽老師的 Vibe Coding 課程 (使用 Claude Code), 所以最近應該就會課金購買 Claude Code 月付方案, 同時學習兩套工具也好互相比較. 

沒有留言 :