生活分享
CLI 寫程式:理解、規劃、修改與測試
用 Gemini CLI 寫程式,可靠的流程是先理解專案與重現問題,再規劃小範圍修改、檢查差異並執行相關測試。本篇用一個簡單的活動人數函式示範完整工作順序。你不需要一開始就交出整個應用程式,也能學會如何給資料、判斷修改是否對題,以及儲存驗證結果。
更新日期: 閱讀時間約 4 分鐘

用 Gemini CLI 寫程式,可靠的流程是先理解專案與重現問題,再規劃小範圍修改、檢查差異並執行相關測試。本篇用一個簡單的活動人數函式示範完整工作順序。你不需要一開始就交出整個應用程式,也能學會如何給資料、判斷修改是否對題,以及儲存驗證結果。
開始前:建立可恢復的練習專案
完成CLI 安裝Gemini CLI 安裝:第一次在終端機對話Gemini CLI 是在終端機使用的 AI 工具,可以讀取專案檔案、協助修改程式與執行工作流程。本篇帶你在 Windows、macOS 或 Linux 完成安裝,確認版本,建立獨立練習資料夾並完成第一次對話。它與 Gemini 網頁、手機 App 的入口不同,適合需要處理本機檔案與程式的人。閱讀全文與檔案操作CLI 檔案與命令:@、! 與路徑Gemini CLI 可以引用檔案,也能執行作業系統命令,但這兩種輸入的效果完全不同。本篇用一份虛構公告示範 @ 檔案引用、! shell 命令、路徑與工具結果核對。學完後,你能清楚知道資料有沒有被讀取、命令有沒有執行,以及下一步應檢查哪個結果。閱讀全文,準備 Node.js 和獨立資料夾。本篇以 CLI 0.59.0 為基準,範例函式與測試可在本機直接執行;模型實際修改的品質,需依你的執行結果核對。若使用既有 Git 專案,先檢視工作目錄差異,不要覆蓋原本未提交的內容。
先讀專案已有的 README、套件腳本與GEMINI.mdGEMINI.md 入門:建立規則與 /initGEMINI.md 是 Gemini CLI 用來取得專案指示的檔案。把專案目的、語言、測試方式與修改界線寫在這裡,就不必每次重新貼同一段背景。本篇用獨立練習資料夾建立最小規則,並檢查載入結果;這套操作適用 CLI,不會讓 Gemini 網頁版自動讀取電腦中的檔案。閱讀全文。你要讓 CLI 知道工作範圍、不能改的部分及完成條件,而不是直接要求「把專案變好」。如果只是修一個計算錯誤,就不應順便更換框架、重排整個目錄或改動無關頁面。
本次需求是「將成人與兒童人數相加,並拒絕負數或非整數」。先把輸入與預期結果寫清楚:兩位成人加一位兒童應為三;負一位成人不合理;小數人數也應拒絕。這些案例來自需求,並非等程式寫完後才照著實作抄一份測試。
理解問題:先請它讀,不急著改
在專案建立 people.mjs 與 people.test.mjs,使用下面有缺陷的函式與需求測試。先在終端機執行測試,確認它真的失敗,再請 CLI 說明原因。若測試根本沒有啟動,應先修正執行方式,而不是立刻修改函式。
export function totalPeople(adults, children) {
return adults + children + 1;
}
import test from "node:test";
import assert from "node:assert/strict";
import { totalPeople } from "./people.mjs";
test("加總成人與兒童", () => assert.equal(totalPeople(2, 1), 3));
test("拒絕負數", () => assert.throws(() => totalPeople(-1, 1)));
test("拒絕小數", () => assert.throws(() => totalPeople(1.5, 1)));
實作:規劃、修改與測試
- 執行 node --test people.test.mjs,儲存原始失敗結果。
- 啟動 Gemini CLI,引用兩個檔案,要求先解釋失敗原因與最小修改計畫。
- 核對計畫是否只處理加總與輸入驗證,再讓 CLI 進行修改。
- 檢視檔案差異,確認沒有改動測試預期值來配合錯誤程式。
- 重跑同一組測試,最後手動檢查空值、字串等額外輸入是否需列入正式需求。
@people.mjs @people.test.mjs
請先說明測試失敗原因,提出只修改 people.mjs 的最小計畫。
需求:成人與兒童都必須是非負整數,回傳兩者相加。
不要修改測試預期值,不新增外部套件。
可使用 /plan 進入規劃模式,或啟動時指定 --approval-mode plan;操作前先確認當前版本與功能開關。規劃模式的目的,是先把方法與影響說清楚,不是保證所有讀取與工具行為完全相同。權限細節請搭配政策與沙箱CLI 權限:忽略檔案、可信任資料夾與沙箱Gemini CLI 能讀取檔案與呼叫工具,因此開始使用前,要理解忽略檔案、資料夾信任與沙箱各控制什麼。本篇在獨立練習專案中建立 .geminiignore,檢查資料夾信任選項,再辨識啟動沙箱所需條件。完成後,你能說明每一層的用途,而不會把文字規則當成檔案存取的完整隔離。閱讀全文核對。
預期結果:測試通過也要看差異
合理修正應先驗證兩個輸入都是非負整數,再回傳相加結果。下面是人工整理的參考解答,方便你核對邏輯,並非宣稱某次模型必然產生完全相同的程式。錯誤訊息可以不同,但有效輸入與拒絕條件必須符合需求。
export function totalPeople(adults, children) {
if (![adults, children].every((value) => Number.isInteger(value) && value >= 0)) {
throw new TypeError("人數必須是非負整數");
}
return adults + children;
}
node --test people.test.mjs
git diff -- people.mjs people.test.mjs
第二行只適用於 Git 專案,尚未使用 Git 時可用編輯器比較檔案。預期三個測試通過,差異只包含需要的函式修正。若 CLI 修改了測試、刪掉輸入檢查或加入不必要套件,即使某次測試變綠,也要重新檢查是否違反原始需求。
從練習移到真正專案
真正專案通常有多層測試與型別檢查。先跑與修改直接相關的檢查,透過後再依專案規範完成必要驗證。不要把「編譯通過」當成「使用者流程正常」,也不要在沒有瀏覽器驗證時宣稱畫面已完成。交付時寫清楚改了什麼、怎麼測、還有哪些限制。
提交前再看一次變更檔案清單,確認沒有把下載資料、個人設定或測試產物混入。若測試需要外部服務而無法執行,記錄缺少的環境與尚未驗證的行為,讓接手者知道要補哪一項證據。
需要編輯器整合時,先檢視 /ide 與官方整合檔案,確認實際連線狀態;設定檔存在不代表編輯器已連上。/setup-github 會開始 GitHub Actions 設定流程,與單純本機測試不同,只有在你要建立該工作流程並理解專案權限時才使用。
若任務變大,先把唯讀調查與具體修改拆開,再考慮子代理Subagents:拆分任務與整合結果Subagents(子代理)讓 Gemini CLI 把範圍明確的工作交給獨立上下文處理,再將結果交回主對話。本篇建立一個只讀指定檔案、找出資料缺漏的子代理,練習任務拆分、工具限制與結果整合。重點是交付可核對的證據,而不是同時開越多代理越好。閱讀全文。多個代理不應同時修改同一批檔案;整合者仍要核對差異與測試證據。重複的工作方法可整理成技能Agent Skills:建立可重用的 SKILL.mdAgent Skills(代理技能)把一套工作方法包成可重複使用的資料夾。你可以讓 Gemini CLI 在整理活動資料時,依固定步驟讀取來源、找出缺漏,再交付可核對的表格。本篇會建立一個不需要額外服務的技能,並教你確認它有被發現、啟用與正確使用。閱讀全文,但每次需求與驗收標準仍要明確提供。
常見問題與交付方式
「模型說測試通過,但我看不到結果」要求列出實際執行命令、退出狀態與重點輸出。沒有工具結果時,只能算建議或預期,不算已驗證。你也可以在自己的終端機重跑相同命令交叉確認。
「一次改太多怎麼辦」先停止擴大範圍,檢視差異,把修改拆成對應需求的小部分。保留原本未提交的內容,再決定撤回或重做哪些檔案;不要用一條全域重設命令清掉整個工作目錄。
「測試一直失敗要讓它反覆修嗎」先判斷是環境、既有錯誤還是本次修改造成。保留第一個可重現失敗,讓修正有明確目標;如果需要換方向,先更新計畫。完成後用交接摘要CLI 對話管理:恢復、壓縮與匯出長對話、工作中斷與切換任務,是使用 Gemini CLI 時常見的情況。本篇教你找回工作階段、儲存命名檢查點、壓縮上下文與匯出資料,並分清楚清除畫面、恢復對話和還原檔案的效果。目標是保留能繼續工作的資訊,也知道哪些狀態必須重新確認。閱讀全文儲存成果,讓下一次工作能從已核對的狀態繼續。
完成後的檢核
| 檢查項目 | 通過條件 |
|---|---|
| 操作 | 能依正文重做一次,說明每一步使用的輸入。 |
| 結果 | 能用原始資料或可重現測試核對輸出,而非只看語氣。 |
| 延伸 | 知道下一篇教學解決的問題,以及什麼時候需要它。 |
接著可以閱讀 GEMINI.md 入門GEMINI.md 入門:建立規則與 /initGEMINI.md 是 Gemini CLI 用來取得專案指示的檔案。把專案目的、語言、測試方式與修改界線寫在這裡,就不必每次重新貼同一段背景。本篇用獨立練習資料夾建立最小規則,並檢查載入結果;這套操作適用 CLI,不會讓 Gemini 網頁版自動讀取電腦中的檔案。閱讀全文、CLI 權限CLI 權限:忽略檔案、可信任資料夾與沙箱Gemini CLI 能讀取檔案與呼叫工具,因此開始使用前,要理解忽略檔案、資料夾信任與沙箱各控制什麼。本篇在獨立練習專案中建立 .geminiignore,檢查資料夾信任選項,再辨識啟動沙箱所需條件。完成後,你能說明每一層的用途,而不會把文字規則當成檔案存取的完整隔離。閱讀全文,把本篇的操作接到下一個工作流程。
返回 Gemini 教學總目錄Gemini 完整教學:電腦、手機、CLI 與 Google AI 應用這裡整理 Gemini、Google AI 與開發工具的教學。可以按分類找功能、按自己的需求走學習路線,也可以搜尋「MD」「手機」「PDF」「/memory」等關鍵字。每篇都提供步驟、可複製範例、結果核對方式與延伸閱讀,不需要從第一篇一路讀到底。閱讀全文
同主題延伸閱讀
生活分享
完整實作:文件摘要與資料擷取工具
這篇把前面學過的提示詞、API 呼叫與 JSON 驗證串成一個可執行的檔案工具。輸入一份 UTF-8 活動公告,程式產生摘要、五個固定欄位、原文引用與待確認問題,再存成待審 JSON。你會練習把模型當作資料處理的一個步驟,讓驗證與儲存仍由程式明確控制。
生活分享
API 額度與錯誤:費用、重試與成本控制
Gemini API 的費用取決於模型、輸入輸出、服務模式及使用的工具;速率限制則決定你的專案在一段時間內能送出多少工作。本篇教你找到真正對應的用量頁面、估算一次檔案處理成本、分類錯誤,並設計有限重試與停止條件,避免把每個失敗都當成多按一次就能解決。
生活分享
API 檔案與 JSON:結構化輸出及驗證
Gemini API 可以讀取 PDF,再把結果整理成指定的 JSON 結構。本篇用虛構活動公告示範檔案輸入、欄位設計與本地驗證。學完後,你會知道「收到合法 JSON」與「內容確實來自檔案」是兩件需要分別檢查的事,並能保留缺漏資訊而不讓模型自行補齊。
生活分享
AI Studio 與第一個 Gemini API 呼叫
Google AI Studio 是試用模型與建立 Gemini API 金鑰的開發入口。本篇從一個簡單提示詞開始,帶你建立獨立專案環境,分別用 Python 與 JavaScript 呼叫 API。完成後,你會知道網頁試跑、程式執行與帳號用量各自在哪裡確認,不再把消費者版 Gemini 的操作直接套程式式。
引用本文的文章
最新旅遊情報攻略

情報
2026 韓國楓葉預測:雪嶽山 10 月 20 日、首爾近郊 10 月底、內藏山與漢拏山 11 月上旬
韓國山林廳 2026 年 9 月 22 日公布的楓紅高峰預測:雪嶽山 10 月 20 日,春川、國立樹木園到首爾植物園落在 10 月 28 日到 11 月 2 日,內藏山 11 月 4 日、漢拏山 11 月 6 日,整體比最近 5 年晚約 0.8 天。整理各地楓樹與銀杏的預測日、首爾出發怎麼排,以及出發前去哪裡看即時楓況。2026 年 10 月查證。
- 季節活動
- 自然
- 觀景

攻略胡志明市
胡志明市到頭頓一日遊:白藤碼頭搭高速船、船票與班次,下船就是胡梅纜車與耶穌基督像
人在胡志明市挪一天去頭頓看海:市中心的白藤高速船碼頭搭船,航程 120 分鐘到頭頓的胡梅碼頭,平日成人 320,000 越南盾、週末 350,000,回程末班平日 15:00。下船就是胡梅纜車站,同一條路上有白宮,小山頂上是耶穌基督像。平日一天只有兩班船,整天要從末班船倒推著排。
- 交通
- 行程範例
- 海灘

攻略沖繩
沖繩不開車攻略:單軌只到浦添,美麗海水族館要坐兩個多小時的巴士,回那霸的最後一班直達車 17:22 就開走
不租車的沖繩怎麼移動:那霸市區靠沖繩都市單軌電車(ゆいレール),那霸機場站到終點てだこ浦西 19 站、17 公里、37 分鐘,一日券 1,000 日圓;美麗海水族館有那霸機場直達的高速巴士,單程 2,000 日圓起、官方時刻表上 2 小時上下,下車後還要走 10 分鐘;古宇利島要在今帰仁村役場轉車,當天來回光坐車就六個半小時;回程的最後一班直達車 17:22 就從記念公園前開走(2026 年 9 月查證)。
- 交通
- 行程範例
- 預算
資料來源
- Gemini CLI:規劃模式 · 查證日期:
- Gemini CLI:shell 工作流程 · 查證日期:
- Gemini CLI:指令參考 · 查證日期: