# 建置與修復

以最小、安全的修改逐步修復建置和型別錯誤。

## 步驟 1：偵測建置系統

識別專案的建置工具並執行建置：

| 指標 | 建置指令 |
|-----------|---------------|
| `package.json` 含 `build` 腳本 | `npm run build` 或 `pnpm build` |
| `tsconfig.json`（僅 TypeScript） | `npx tsc --noEmit` |
| `Cargo.toml` | `cargo build 2>&1` |
| `pom.xml` | `mvn compile` |
| `build.gradle` | `./gradlew compileJava` |
| `go.mod` | `go build ./...` |
| `pyproject.toml` | `python -m py_compile` 或 `mypy .` |

## 步驟 2：解析並分組錯誤

1. 執行建置指令並擷取 stderr
2. 依檔案路徑分組錯誤
3. 依依賴順序排序（先修 import/型別，再修邏輯錯誤）
4. 計算總錯誤數以追蹤進度

## 步驟 3：修復迴圈（一次一個錯誤）

對每個錯誤：

1. **讀取檔案** — 使用 Read 工具查看錯誤前後 10 行的情境
2. **診斷** — 識別根本原因（缺少 import、型別錯誤、語法錯誤）
3. **最小修復** — 使用 Edit 工具做最小幅度的修改來解決錯誤
4. **重新建置** — 確認錯誤已消失且未引入新錯誤
5. **繼續下一個** — 處理剩餘錯誤

## 步驟 4：防護機制

遇到以下情況時停止並詢問使用者：
- 修復**引入的錯誤比解決的更多**
- **同一錯誤在 3 次嘗試後仍然存在**（可能是更深層的問題）
- 修復需要**架構變更**（不只是建置修復）
- 建置錯誤源自**缺少依賴**（需要 `npm install`、`cargo add` 等）

## 步驟 5：摘要

顯示結果：
- 已修復的錯誤（含檔案路徑）
- 剩餘的錯誤（若有）
- 引入的新錯誤（應為零）
- 未解決問題的建議後續步驟

## 恢復策略

| 情況 | 行動 |
|-----------|--------|
| 缺少模組/import | 檢查套件是否已安裝；建議安裝指令 |
| 型別不匹配 | 讀取兩個型別定義；修正較窄的型別 |
| 循環依賴 | 用 import 圖識別循環；建議提取 |
| 版本衝突 | 檢查 `package.json` / `Cargo.toml` 的版本約束 |
| 建置工具設定錯誤 | 讀取設定檔；與正常預設值比較 |

為安全起見，一次修復一個錯誤。優先最小差異而非重構。
