Spaces:
Sleeping
Sleeping
Commit
·
ef0c5ea
1
Parent(s):
93c0d8a
docs: enhance LLM execution guidelines to prevent common pitfalls and improve task efficiency
Browse files
.github/copilot-instructions.md
CHANGED
|
@@ -51,6 +51,29 @@
|
|
| 51 |
- 優先保持向後相容;新增資料來源或輸入項時參考 `spec/04-extensions.md`。
|
| 52 |
- 避免將關鍵邏輯(如批次策略、資源查詢)分散於多處;若需重構,提供明確的入口函式或工廠(參考 `04-extensions.md` 工廠模式)。
|
| 53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
## 提交前檢查
|
| 55 |
|
| 56 |
commit 前確認以下兩點:
|
|
@@ -87,10 +110,20 @@ commit 前確認以下兩點:
|
|
| 87 |
### `/project.init`(一次性初始化 — 僅用於既有專案無規格文件時)
|
| 88 |
- **目的**:為既有專案(Brownfield)從無規格的狀態,快速生成模塊化規格檔案(`spec/00-overview.md` 至 `spec/04-extensions.md`)與迭代計畫模板(`spec/plan.md`)。
|
| 89 |
- **限制**:此命令為一次性初始化,**應該只產生必要的規格與計畫文件,不產生總結報告或分析文檔**。初始化完成後無需進一步的報告文件。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
- **流程**:
|
| 91 |
1. LLM 掃描現有程式碼結構,分析核心模組與資料流。
|
| 92 |
2. 根據代碼分析,逐一填充 5 份模塊化規格文件(`spec/00-*` 至 `spec/04-*`)與計畫模板。
|
| 93 |
-
3.
|
| 94 |
|
| 95 |
### `/project.spec`(需求改變時用)
|
| 96 |
- **目的**:調整 spec 的大方向、契約或不變條件。與現有程式碼做比較,列出後續工作清單。
|
|
|
|
| 51 |
- 優先保持向後相容;新增資料來源或輸入項時參考 `spec/04-extensions.md`。
|
| 52 |
- 避免將關鍵邏輯(如批次策略、資源查詢)分散於多處;若需重構,提供明確的入口函式或工廠(參考 `04-extensions.md` 工廠模式)。
|
| 53 |
|
| 54 |
+
## LLM 執行防護(預防常見陷阱)
|
| 55 |
+
|
| 56 |
+
### 避免無限驗證迴圈
|
| 57 |
+
- **問題**:執行完檔案操作後,開始重複執行 `ls`, `wc -l`, `find`, `file` 等驗證命令
|
| 58 |
+
- **預防**:
|
| 59 |
+
- 每個主要任務完成後**立即停止**,不進行驗證
|
| 60 |
+
- 若需驗證,由用戶在後續對話中明確要求
|
| 61 |
+
- 單個工具呼叫的驗證可以(如 `get_errors` 檢查編譯),但連環的驗證命令應停止
|
| 62 |
+
|
| 63 |
+
### 避免生成不必要的報告
|
| 64 |
+
- **問題**:執行 `/project.init` 等明確指定「不產生報告」的命令後,卻自動生成總結 markdown
|
| 65 |
+
- **預防**:
|
| 66 |
+
- 明確檢查指令的「限制」與「不做」清單
|
| 67 |
+
- 若指令說「完成後直接返回」,就真的直接返回
|
| 68 |
+
- 報告只有在用戶**明確要求**時才生成
|
| 69 |
+
|
| 70 |
+
### 避免過度消耗 token
|
| 71 |
+
- **問題**:為了「確保完美」而執行多個驗證步驟,造成 token 浪費
|
| 72 |
+
- **預防**:
|
| 73 |
+
- 優先相信檔案操作工具成功(除非有明確錯誤訊息)
|
| 74 |
+
- 避免為了「心安」而重複讀取剛建立的檔案
|
| 75 |
+
- 單輪對話內集中驗證,而非分散於多個工具呼叫
|
| 76 |
+
|
| 77 |
## 提交前檢查
|
| 78 |
|
| 79 |
commit 前確認以下兩點:
|
|
|
|
| 110 |
### `/project.init`(一次性初始化 — 僅用於既有專案無規格文件時)
|
| 111 |
- **目的**:為既有專案(Brownfield)從無規格的狀態,快速生成模塊化規格檔案(`spec/00-overview.md` 至 `spec/04-extensions.md`)與迭代計畫模板(`spec/plan.md`)。
|
| 112 |
- **限制**:此命令為一次性初始化,**應該只產生必要的規格與計畫文件,不產生總結報告或分析文檔**。初始化完成後無需進一步的報告文件。
|
| 113 |
+
- **執行檢查清單**(防止重複驗證與報告生成):
|
| 114 |
+
- ❌ **不做**:生成總結報告、比較表、驗證文檔
|
| 115 |
+
- ❌ **不做**:執行 `ls`, `wc -l`, `file`, `find` 等驗證命令
|
| 116 |
+
- ❌ **不做**:使用 `show_content` / `open_file` 顯示生成結果
|
| 117 |
+
- ❌ **不做**:重複讀取已建立的檔案確認內容
|
| 118 |
+
- ✅ **只做**:
|
| 119 |
+
1. 掃描現有程式碼結構
|
| 120 |
+
2. 建立 5 份規格 + 2 份計畫檔案
|
| 121 |
+
3. 更新 `change-log.md`
|
| 122 |
+
4. 直接結束,不進行任何驗證
|
| 123 |
- **流程**:
|
| 124 |
1. LLM 掃描現有程式碼結構,分析核心模組與資料流。
|
| 125 |
2. 根據代碼分析,逐一填充 5 份模塊化規格文件(`spec/00-*` 至 `spec/04-*`)與計畫模板。
|
| 126 |
+
3. 完成後**直接返回**(無總結、無驗證、無報告);如需驗證規格內容,用戶可在後續對話中執行 `/project.spec` 或 `/project.plan`。
|
| 127 |
|
| 128 |
### `/project.spec`(需求改變時用)
|
| 129 |
- **目的**:調整 spec 的大方向、契約或不變條件。與現有程式碼做比較,列出後續工作清單。
|