---
title: "程式碼建議"
description: "解釋 GitHub Copilot 在 IDE 中的 ghost text、next edit suggestions、替代建議、區域性接受和模型邊界。"
verifiedAt: "2026-05-06"
---

程式碼建議是 Copilot 最輕量的入口：你寫程式碼時，它在編輯器裡給出自動補全式（autocomplete-style）的建議。它適合短反饋，不適合替你完成沒有邊界的跨模組任務。

GitHub 官方文件把 VS Code 裡的建議分成兩類：ghost text suggestions（灰字內聯建議，跟著游標自動浮現）和 next edit suggestions（下一編輯預測，根據你正在做的編輯預測下一處要改的位置和內容）。

> [!TIP]
> **閱讀目標**：讀完本章，你應該能安全接受、拒絕、切換和審查 Copilot 程式碼建議，而不是看到灰色程式碼就按 `Tab`。

## 1. 支援哪些入口

官方概念頁覆蓋 Visual Studio Code、JetBrains IDEs、Visual Studio、Eclipse、Vim/Neovim、Azure Data Studio 和 Xcode。不同 IDE 的能力不完全一致：

- **VS Code**：支援 ghost text suggestions 和 next edit suggestions。
- **JetBrains IDEs**：提供 inline suggestions as you type。
- **Visual Studio**：支援 ghost text；next edit suggestions 在官方頁中標註為 public preview。
- **Xcode / Eclipse**：支援 ghost text，並有 next edit suggestions 相關說明。
- **Vim/Neovim / Azure Data Studio**：主要是 inline suggestions。

```mermaid
flowchart TD
    Edit["你正在編輯程式碼"] --> Context["當前檔案 / 游標 / 已開啟檔案"]
    Context --> Ghost["Ghost text suggestion"]
    Context --> Next["Next edit suggestion"]
    Ghost --> Accept{"接受?"}
    Next --> Accept
    Accept -->|Tab / partial accept| Diff["檢視相鄰程式碼和 diff"]
    Accept -->|Esc| Continue["繼續手寫或重試"]
    Diff --> Test["執行測試或型別檢查"]

    style Ghost fill:#dbeafe,stroke:#2563eb,stroke-width:2px
    style Next fill:#fef3c7,stroke:#d97706,stroke-width:2px
    style Test fill:#dcfce7,stroke:#16a34a,stroke-width:2px
```

## 2. 什麼時候用程式碼建議

適合：

- 你已經知道要寫什麼，只需要補區域性實現。
- 你要快速寫測試樣板、SQL、API 呼叫、framework boilerplate。
- 你在同一個檔案裡延續已有模式。
- 你想用自然語言註釋描述小目標，讓 Copilot 給出實現草案。

不適合：

- 需求需要先設計方案。
- 改動跨多個目錄或需要查上下游呼叫。
- 需要呼叫工具、執行命令或處理 PR 協作。
- 涉及鑑權、支付、資料刪除、生產指令碼等高風險邏輯。

## 3. 接受、拒絕和替代建議

官方操作頁說明，Copilot 可能對同一輸入給出多個建議。你可以接受當前建議，也可以檢視替代建議，或者全部拒絕。

基礎規則：

- `Tab` 接受建議。
- `Esc` 拒絕建議。
- macOS 上常見替代建議快捷鍵是 `Option` + `]` / `Option` + `[`.
- Windows 或 Linux 上常見替代建議快捷鍵是 `Alt` + `]` / `Alt` + `[`.
- 有些 IDE 支援開啟多個建議的新 tab。
- 只想接受下一詞或下一行時，用 partial accept，不要整段接受。

商業專案裡，不要把“接受建議”當成結束。正確閉環是：

1. 接受一小塊。
2. 看相鄰程式碼是否被破壞。
3. 看格式、命名、錯誤處理是否符合專案。
4. 跑區域性測試或型別檢查。
5. 再決定是否繼續讓 Copilot 補下一塊。

## 4. 模型切換不是萬能開關

官方概念頁說明，某些入口可以切換 inline suggestion 使用的 AI model，但前提是有可用替代模型，並且 IDE 和 Copilot extension 滿足版本條件。

關鍵邊界：

- 模型切換隻影響 ghost text suggestions。
- 它不影響 next edit suggestions。
- 它不影響 Copilot Chat 的模型。
- 可選模型列表會隨時間變化。
- Free plan 的 completions 會計入 quota，不因換模型而繞過。
- Suggestions matching public code 策略不因換模型而失效。

所以模型切換適合微調補全體驗，不適合解決上下文錯誤、需求不清或測試缺失。

## 5. 公開程式碼匹配要單獨看

GitHub 官方說明，Copilot 會檢查建議是否匹配公開可用程式碼。匹配結果會根據個人或組織的 Suggestions matching public code 策略，被丟棄或以 code reference 形式展示。

處理方式：

- 如果組織選擇 block，匹配建議可能不會展示。
- 如果允許展示匹配，開發者需要檢視來源和許可證。
- 如果建議來自常見演算法或樣板，也要按團隊策略處理 attribution。
- 如果你改寫了建議，仍然要對最終程式碼負責。

## 6. 一個安全使用模板

```text
目标：
补当前函数的边界处理

限制：
只改这个函数
不要引入新依赖

验收：
先看 diff
再跑当前测试文件
```

這段不是給 Copilot 的固定模板，而是給使用者的思考順序。程式碼建議越短，越要把驗收放在自己手裡。

<details>
<summary>深讀：為什麼程式碼建議看似低風險，實際需要流程</summary>

程式碼建議進入專案的成本極低，一次 `Tab` 就能把程式碼寫進檔案。風險也在這裡：它不一定理解業務邊界、異常處理、許可證、效能約束和安全要求。

真正可上線的用法，是把 Copilot 當成快速草擬器。它幫你少打字，但你負責判斷它是否符合專案、測試和審查要求。
</details>

## 本章自檢

完成本章後，用這 4 個問題檢查：

1. 當前建議是 ghost text 還是 next edit suggestion？
2. 接受前是否看清它會改哪一段？
3. 接受後是否跑了最小測試、型別檢查或人工 review？
4. 如果出現公開程式碼匹配，你知道該去哪裡看來源和許可證嗎？

透過標準：你能把程式碼建議控制在小步、可回復、可測試的範圍內。

## 官方來源

- [GitHub Copilot code suggestions in your IDE](https://docs.github.com/en/copilot/concepts/completions/code-suggestions) —— 官方概念頁，覆蓋各 IDE、ghost text、next edit suggestions、公開程式碼匹配和模型切換。
- [Getting code suggestions in your IDE with GitHub Copilot](https://docs.github.com/en/copilot/how-tos/get-code-suggestions/get-ide-code-suggestions) —— 官方操作頁，覆蓋接受、拒絕、替代建議和區域性接受。
- [GitHub Copilot features](https://docs.github.com/en/copilot/get-started/features) —— 官方功能頁，用於核對 inline suggestions 在 Copilot 功能體系中的位置。

## 接下來去哪

<Cards>
  <Card title="程式碼引用與匹配" description="繼續學習公開程式碼匹配、引用日誌和許可證審查。" href="/zh-Hant/docs/github-copilot/official/02-code-suggestions-and-chat/code-referencing" />
  <Card title="提示詞寫法" description="當任務超過區域性補全時，繼續學習 Chat prompt 怎麼寫。" href="/zh-Hant/docs/github-copilot/official/02-code-suggestions-and-chat/prompt-engineering" />
</Cards>
