---
# System prepended metadata

title: 2. Amazon Q Developer Workshop - 基本功能介紹

---

# Amazon Q Developer Workshop - 基本功能介紹

## 目錄

[1. 實驗環境準備](https://hackmd.io/@Zx9gc3B9R76nDuN1qqwwcA/HknuyDk--e)
[2. 基本功能介紹](https://hackmd.io/@Zx9gc3B9R76nDuN1qqwwcA/B1xH4Xeb-x)
[3. 提示詞工程](https://hackmd.io/@Zx9gc3B9R76nDuN1qqwwcA/B1v1v4l--e)
[4. 探索專案及文件生成](https://hackmd.io/@Zx9gc3B9R76nDuN1qqwwcA/SJ-sUOxWZx)
[5. 開發功能](https://hackmd.io/@Zx9gc3B9R76nDuN1qqwwcA/HyVLCOgZ-g)
[6. 生成測試](https://hackmd.io/@Zx9gc3B9R76nDuN1qqwwcA/rJROwse-Zl)
[7. 程式碼掃描](https://hackmd.io/@Zx9gc3B9R76nDuN1qqwwcA/SJzMislZbx)
[8. 轉換 SOAP 架構成 RESTFul 架構](https://hackmd.io/@Zx9gc3B9R76nDuN1qqwwcA/H1eag2l-Wl)

---

### 對話視窗 (Chat Tab)

對話視窗是 Amazon Q Developer 的核心互動介面,讓開發者可以用**自然語言**與 AI 助理進行對話,獲得程式碼建議、技術解答和開發協助。

![image](https://hackmd.io/_uploads/SJjLvQeWWe.png)

#### VS Code
- **側邊欄**: 點擊左側的 Q 圖示
- **命令面板**: `Cmd/Ctrl + Shift + P` → 輸入 "Amazon Q: Open Chat"

#### CLI
```bash
q chat
```

#### 功能特性
:::spoiler 說明
##### 多輪對話
- 支援連續對話，保持上下文
- 可以追問、澄清或深入探討
- Amazon Q Developer 會記住對話歷史

##### 新增對話
- 點擊 "New Chat" 開始新的對話主題
- 每個對話獨立，不會互相干擾

##### 對話歷史
- 對話會自動儲存
- 可以回顧之前的對話內容
- 方便追蹤開發過程

##### 清除對話
- 需要重新開始時可以清除對話
- 清除後 Amazon Q Developer 不會記住之前的上下文
:::


> [!Tip] 對話管理
> - 基於 Foundation Model 的上下文限制，每個對話會有 Token 上限的問題。例如：Claude Sonnet 為 200K Tokens。但即便是未達到上下文限制，有時我們仍會觀察到回應的內容逐漸不精確，這是由於模型本身會有注意力的問題。
> - 因此經驗上我們在使用 Amazon Q Developer 時會將大任務拆分成小任務，並且在不同的對話視窗中進行。
> - 但不同對話視窗中的上下文是不會相互傳遞的，所以我們可以透過檔案的方式來進行上下文交換，以此來避免上下文限制同時又能完成整體任務。



---

### 規則文件 (Rules)

Rules 是 Amazon Q Developer 的一個強大功能，讓你可以設定 **持續性的指引和規範**，Amazon Q Developer 在每次回應時都會自動參考這些規則。

#### 主要用途
:::spoiler 說明
##### 1. 程式碼風格規範
- 統一團隊的程式碼撰寫風格
- 例如：縮排方式、命名規則、註解格式

#### 2. 專案特定需求
- 設定專案使用的技術堆疊
- 例如:使用 TypeScript、React 18、AWS CDK v2

#### 3. 最佳實踐
- 強制執行安全性規範
- 例如：不在程式碼中硬編碼密鑰、使用參數化查詢防止 SQL Injection

#### 4. 組織政策
- 遵循公司的開發標準
- 例如：必須包含錯誤處理、需要撰寫單元測試
:::

1. 點選對話視窗中的 **「Rules」** 後，點選 **「Create a new rule」**
![image](https://hackmd.io/_uploads/HyNfiXg-be.png)

2. 輸入規則名稱（此處以 **language** 舉例）後點選 **「Create」**
![image](https://hackmd.io/_uploads/HJL_sQg-Ze.png)

3. 編輯 **「規則內容」** 後儲存。
```bash
請在所有對話中以繁體中文進行對話，但在撰寫、修改程式時使用英文。
```
![image](https://hackmd.io/_uploads/rySgh7xWZe.png)

> [!Tip] 使用 Rules 的好處
>
> ✅ **一致性**: 確保整個專案的程式碼風格統一
> ✅ **效率**: 不需要每次都重複說明相同的要求
> ✅ **品質**: 自動遵循最佳實踐和安全規範
> ✅ **協作**: 團隊成員都遵循相同的開發標準
> ✅ **彈性**: 可以針對不同專案設定不同的規則
> 
> ##### 實際應用場景
> - **場景 1: 新團隊成員加入**
新成員使用 Amazon Q Developer 時,會自動遵循團隊的程式碼規範,快速融入開發流程。
> - **場景 2: 多專案管理**
不同專案有不同的技術堆疊和規範,Rules 確保 Q Developer 在各專案中提供正確的建議。


---

### `/` 功能

![image](https://hackmd.io/_uploads/SySYRXxW-x.png)

#### `/transform`

- 可用來進行 Java 版本升級轉換，但相對功能較不彈性，建議以 Prompt 形式進行。
- 每月有 4,000 line-of-code (LOC) 額度，超過會以每行 $0.003 USD 計價。
- 同個 AWS Organization 下的席次可以分享每月 4,000 行的額度。

#### `/clear`

- 清除對話，同關閉對話視窗。

#### `/compact`

- 用於壓縮和精簡對話歷史,釋放 token 空間，讓你可以在同一個對話中繼續進行更多互動。
- **不可逆操作**: 壓縮後無法還原完整歷史
- **可能遺失細節**: 某些詳細說明可能被移除


> [!tip]
> **重要的程式碼、中介資訊或產出的文件，應該儲存到檔案中**


---

### `@` 關鍵字

`@` 關鍵字是 Amazon Q Developer 的**上下文參考功能**，讓你可以在對話中明確指定要參考的檔案、資料夾或工作區內容，使 Amazon Q Developer 提供更精準、更符合專案脈絡的建議。

![image](https://hackmd.io/_uploads/S1CjJNeb-l.png)

#### 1. `@workspace` 參考整個工作區的內容

**用途**:
- 了解專案整體架構
- 跨檔案的重構建議
- 專案層級的問題分析

**範例**:
```
@workspace 請說明這個專案
```

#### 2. `@file` 參考特定檔案

**用途**:
- 分析特定檔案的程式碼
- 針對檔案提供優化建議
- 解釋檔案的功能

**範例**:
```
@pom.xml 請說明這個檔案的內容
```

#### 3. `@folder` 參考特定資料夾

**用途**:
- 分析模組或功能區塊
- 檢查資料夾內的一致性
- 重構整個模組

**範例**:
```
@gamecontroller.java 請說明這個檔案的內容
```

> [!Tip] 使用 @ 的好處
> ✅ 直接參考專案中的檔案  
> ✅ Q Developer 理解專案上下文  
> ✅ 獲得更精準、更相關的建議  
> ✅ 節省複製貼上的時間 

---

### Workspace Index

![image](https://hackmd.io/_uploads/S1cfSslZWe.png)

Amazon Q Developer 的 Workspace Index(工作區索引) 是一個強大的功能，其主要用途包括:

#### 核心功能

建立專案知識庫
- 自動掃描和索引整個工作區的程式碼
- 分析專案結構、檔案關係和程式碼模式
- 建立專案的語義理解模型

#### 主要用途

##### 1. 提升上下文理解
- Amazon Q Developer 能更準確理解專案的整體架構
- 提供更符合專案風格和慣例的建議
- 理解跨檔案的依賴關係和資料流

##### 2. 智慧程式碼建議
- 根據專案現有程式碼提供一致的命名和風格
- 參考專案中類似的實作模式
- 避免與現有程式碼衝突

##### 3. 快速導航和搜尋
- 使用 `@workspace` 快速查詢專案資訊
- 找出特定功能或模式在專案中的位置
- 分析程式碼使用情況和影響範圍

##### 4. 重構支援
- 理解修改對整個專案的影響
- 提供跨檔案的重構建議
- 確保重構的一致性

#### 運作方式

1. 自動索引: 開啟專案時自動在背景建立索引
2. 即時更新: 程式碼變更時增量更新索引
3. 智慧快取: 儲存索引以加快後續存取速度

#### 實際效益

✅ 1. 更精準的程式碼補全
✅ 2. 更相關的聊天回應
✅ 3. 更快的專案理解
✅ 4. 更好的重構建議
✅ 5. 減少手動搜尋時間