jimmy60504 commited on
Commit
ef0c5ea
·
1 Parent(s): 93c0d8a

docs: enhance LLM execution guidelines to prevent common pitfalls and improve task efficiency

Browse files
Files changed (1) hide show
  1. .github/copilot-instructions.md +34 -1
.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. 完成後直接返回(無總結文檔);如需驗證規格內容,用戶可在後續對話中執行 `/project.spec` 或 `/project.plan`。
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 的大方向、契約或不變條件。與現有程式碼做比較,列出後續工作清單。