
看著 AI 瞬間找出 bug、解釋令人困惑的程式碼、生成可執行的腳本,然後學習使用 GitHub Copilot CLI 的三種不同方式。
魔法從這章開始!你將親身體驗為何開發者形容 GitHub Copilot CLI 是「隨時待命的資深工程師」。你將看著 AI 在幾秒內找出安全漏洞、用白話文解釋複雜程式碼、即時生成可執行腳本。接著你將掌握三種互動模式(互動模式、計畫模式和程式化模式),確切知道每種情境該用哪種模式。
⚠️ 前置需求:請先完成 第 00 章:快速開始。執行以下示範前,你需要已安裝並完成驗證的 GitHub Copilot CLI。
完成本章後,你將能夠:
⏱️ 預估時間:約 45 分鐘(閱讀 15 分鐘 + 實作 30 分鐘)

直接上手,看看 Copilot CLI 能做什麼。
在進入精彩示範之前,先試試幾個可以立刻上手的簡單提示。完全不需要程式碼儲存庫!只需開啟終端機並啟動 Copilot CLI:
copilot
試試這些適合初學者的提示:
> Explain what a dataclass is in Python in simple terms
> Write a function that sorts a list of dictionaries by a specific key
> What's the difference between a list and a tuple in Python?
> Give me 5 best practices for writing clean Python code
不用 Python?沒關係!換成你熟悉的程式語言來提問。
感受一下這有多自然——就像和同事說話一樣提問即可。探索完畢後,輸入 /exit 離開工作階段。
核心洞察:GitHub Copilot CLI 是對話式的,不需要特殊語法就能上手,用白話文提問即可。
現在讓我們看看為何開發者稱這是「隨時待命的資深工程師」。
📖 閱讀範例說明:以
>開頭的行是你在互動式 Copilot CLI 工作階段內輸入的提示;不帶>前綴的行則是你在終端機執行的 shell 指令。
💡 關於範例輸出:本課程中展示的範例輸出僅供參考。由於 Copilot CLI 的每次回應都會有所不同,你的結果在措辭、格式和細節上都可能不同。請專注於回傳的資訊類型,而非精確的文字內容。
本課程包含含有刻意設計之程式碼品質問題的範例檔案,讓我們來審查其中一個:
# 若在本機工作且尚未複製,請先 clone 課程儲存庫
git clone https://github.com/github/copilot-cli-for-beginners
cd copilot-cli-for-beginners
# 啟動 Copilot
copilot
進入互動式工作階段後:
> Review @samples/book-app-project/book_app.py for code quality issues and suggest improvements
💡
@是什麼?@符號告訴 Copilot CLI 讀取某個檔案。你將在第 02 章學到所有相關細節。現在只需照著指令複製貼上即可。
重點整理:幾秒鐘完成一次專業程式碼審查。手動審查要花……嗯,比這久多了!
曾盯著程式碼卻不知道它在做什麼嗎?在你的 Copilot CLI 工作階段中試試:
> Explain what @samples/book-app-project/books.py does in simple terms
實際發生的事:(你的輸出會有所不同)Copilot CLI 讀取檔案、理解程式碼,並以白話文說明。
This is a book collection management module using Python dataclasses.
Think of it like a digital bookshelf:
- Book is a dataclass - a simple way to store book information (title, author, year, read status)
- BookCollection manages the entire collection and handles saving/loading
Key components:
1. @dataclass decorator (line 8)
- Automatically creates __init__, __repr__, etc.
- Clean way to define data structures in Python
2. BookCollection class (line 16)
- Maintains a list of Book objects
- Handles persistence with JSON file I/O
- load_books() reads from data.json
- save_books() writes to data.json using asdict()
3. Book operations:
- add_book() - creates and saves new books
- find_book_by_title() - searches collection
- mark_as_read() - updates read status
- find_by_author() - filters by author name
Common pattern: Read from JSON → Work with Python objects → Write back to JSON
重點整理:複雜的程式碼被解釋得就像一位有耐心的導師在說明。
需要一個否則要花 15 分鐘 Google 的函式?繼續在工作階段中操作:
> Write a Python function that takes a list of books and returns statistics:
total count, number read, number unread, oldest and newest book
實際發生的事:幾秒鐘內生成完整可執行的函式,複製貼上即可使用。
探索完畢後,離開工作階段:
> /exit
重點整理:即時獲得成果,而且整個過程都在同一個連續工作階段中完成。

你已經看到 Copilot CLI 能做什麼了。現在讓我們理解如何有效運用這些能力。關鍵在於知道三種互動模式各自適用於哪些情境。
💡 備註:Copilot CLI 還有一種 Autopilot 模式,可以不等待你的輸入自行完成任務。它非常強大,但需要授予完整權限,且會自主消耗高級請求配額。本課程聚焦於以下三種模式。等你熟悉基礎後,我們會引導你了解 Autopilot。
把使用 GitHub Copilot CLI 想像成外出用餐。從規劃行程到點餐,不同情境需要不同的方式:
| 模式 | 用餐類比 | 適用時機 |
|---|---|---|
| 計畫模式 | 前往餐廳的 GPS 導航 | 複雜任務——規劃路線、確認停靠點、同意計畫,然後出發 |
| 互動模式 | 與服務員交談 | 探索與迭代——提問、客製化、即時獲得回饋 |
| 程式化模式 | 得來速點餐 | 快速、明確的任務——留在自己的環境中,快速取得結果 |
就像外出用餐一樣,你會自然地學會各種方式的適用時機。

依任務選擇模式:計畫模式用於先規劃再行動,互動模式用於來回協作,程式化模式用於快速一次性取得結果
從互動模式開始。
/clear 輕鬆修正錯誤熟悉後,再嘗試:
copilot -p "<你的提示>")用於快速一次性問題/plan)用於在寫程式前需要更詳細規劃的情境
最適合:探索、迭代、多輪對話。就像與服務員交談——他能回答問題、接受意見、隨時調整訂單。
啟動互動式工作階段:
copilot
如你目前所見,會出現一個提示符讓你自然輸入。若想查看可用指令,只需輸入:
> /help
核心洞察:互動模式會保持上下文,每條訊息都建立在前一條之上,就像真實的對話。
copilot
> Review @samples/book-app-project/utils.py and suggest improvements
> Add type hints to all functions
> Make the error handling more robust
> /exit
注意每個提示如何建立在前一個答案上。你在進行對話,而不是每次都重新開始。

最適合:你想在執行前先審視方法的複雜任務。類似於旅行前用 GPS 規劃路線。
計畫模式幫助你在撰寫任何程式碼前建立逐步計畫。使用 /plan 指令或按 Shift+Tab 切換至計畫模式:
💡 提示:Shift+Tab 循環切換模式:互動模式 → 計畫模式 → Autopilot。在互動式工作階段中隨時按下,即可無需輸入指令直接切換模式。
copilot
> /plan Add a "mark as read" command to the book app
計畫模式輸出:(你的輸出可能不同)
📋 Implementation Plan
Step 1: Update the command handler in book_app.py
- Add new elif branch for "mark" command
- Create handle_mark_as_read() function
Step 2: Implement the handler function
- Prompt user for book title
- Call collection.mark_as_read(title)
- Display success/failure message
Step 3: Update help text
- Add "mark" to available commands list
- Document the command usage
Step 4: Test the flow
- Add a book
- Mark it as read
- Verify status changes in list output
Proceed with implementation? [Y/n]
核心洞察:計畫模式讓你在寫任何程式碼之前先審視並修改方法。計畫完成後,你甚至可以告訴 Copilot CLI 將其儲存為檔案以供後續參考。例如,「Save this plan to mark_as_read_plan.md」會建立一個包含計畫詳情的 Markdown 檔案。
💡 想試試更複雜的? 試試:
/plan Add search and filter capabilities to the book app。計畫模式從簡單功能到完整應用程式都能勝任。
📚 Autopilot 模式:你可能注意到 Shift+Tab 會循環到第三種叫做 Autopilot 的模式。在 Autopilot 模式中,Copilot 會執行整個計畫,每個步驟完成後無需等待你的輸入——就像把任務交給同事並說「完成後告訴我」。典型工作流程是計畫 → 接受 → Autopilot,這意味著你需要先擅長撰寫計畫。先熟悉互動模式和計畫模式,準備好後再查看官方文件。

最適合:自動化、腳本、CI/CD、一次性指令。就像使用得來速快速點餐,無需與服務員交談。
使用 -p 旗標執行不需要互動的一次性指令:
# 生成程式碼
copilot -p "Write a function that checks if a number is even or odd"
# 快速取得說明
copilot -p "How do I read a JSON file in Python?"
核心洞察:程式化模式給你一個快速答案然後退出。沒有對話,只有輸入 → 輸出。
這些指令在互動模式中使用。先從以下四個開始——它們涵蓋了 90% 的日常需求:
| 指令 | 功能 | 適用時機 |
|---|---|---|
/help |
顯示所有可用指令 | 忘記某個指令時 |
/clear |
清除對話並重新開始 | 切換話題時 |
/plan |
在寫程式前先規劃工作 | 處理較複雜的功能時 |
/research |
使用 GitHub 和網路來源深度調查 | 需要在寫程式前先研究某個主題時 |
/model |
顯示或切換 AI 模型 | 想更換 AI 模型時 |
/exit |
結束工作階段 | 完成工作時 |
入門部分到此為止!隨著你越來越熟練,可以繼續探索更多指令。
📚 官方文件:CLI 指令參考 — 取得完整指令與旗標列表。
是時候將所學付諸實踐了。
---
## ▶️ 自行嘗試
### 互動式探索
啟動 Copilot 並使用後續提示逐步改善書籍應用程式:
```bash
copilot
> Review @samples/book-app-project/book_app.py - what could be improved?
> Refactor the if/elif chain into a more maintainable structure
> Add type hints to all the handler functions
> /exit
```
### 規劃一個功能
使用 `/plan` 讓 Copilot CLI 在撰寫任何程式碼前先規劃實作方案:
```bash
copilot
> /plan Add a search feature to the book app that can find books by title or author
# 審查計畫
# 核准或修改
# 看著它一步步實作
```
### 使用程式化模式自動化
`-p` 旗標讓你直接從終端機執行 Copilot CLI,無需進入互動模式。從儲存庫根目錄將以下腳本複製貼上到終端機(不是在 Copilot 內部),以審查書籍應用程式中所有 Python 檔案。
```bash
# 審查書籍應用程式中所有 Python 檔案
for file in samples/book-app-project/*.py; do
echo "Reviewing $file..."
copilot --allow-all -p "Quick code quality review of @$file - critical issues only"
done
```
**PowerShell(Windows):**
```powershell
# 審查書籍應用程式中所有 Python 檔案
Get-ChildItem samples/book-app-project/*.py | ForEach-Object {
$relativePath = "samples/book-app-project/$($_.Name)";
Write-Host "Reviewing $relativePath...";
copilot --allow-all -p "Quick code quality review of @$relativePath - critical issues only"
}
```
---
完成示範後,試試這些變化:
1. **互動挑戰**:啟動 `copilot` 並探索書籍應用程式。詢問 `@samples/book-app-project/books.py` 並連續請求改善 3 次。
2. **計畫模式挑戰**:執行 `/plan Add rating and review features to the book app`。仔細閱讀計畫,它合理嗎?
3. **程式化挑戰**:執行 `copilot --allow-all -p "List all functions in @samples/book-app-project/book_app.py and describe what each does"`。第一次就成功了嗎?
---
## 📝 作業
### 主要挑戰:改善書籍應用程式工具函式
實作範例專注於審查和重構 `book_app.py`。現在對另一個檔案 `utils.py` 練習相同的技能:
1. 啟動互動式工作階段:`copilot`
2. 請 Copilot CLI 摘要這個檔案:`@samples/book-app-project/utils.py What does each function in this file do?`
3. 請它加入輸入驗證:「Add validation to `get_user_choice()` so it handles empty input and non-numeric entries」
4. 請它改善錯誤處理:「What happens if `get_book_details()` receives an empty string for the title? Add guards for that.」
5. 請它加入 docstring:「Add a comprehensive docstring to `get_book_details()` with parameter descriptions and return values」
6. 觀察上下文如何在提示之間延續。每次改善都建立在上一次的基礎上
7. 以 `/exit` 離開
**成功標準**:你應該得到一個改善後的 `utils.py`,包含輸入驗證、錯誤處理和 docstring,全部透過多輪對話完成。