在我們逐步建立起模組化、多技術棧適配的 System Prompt 架構後,問題卻依然會發生——你可能會問:
「為什麼我載入了正確的 Prompt,但 AI 還是回錯風格?」
「AI 忽略測試規則?命名用錯格式?出 bug 了?」
這不是你一個人遇到的問題。今天我們要聚焦在一個現實但容易被忽略的核心議題:
System Prompt 設定後,AI 為什麼仍然不聽話?
我們歸納了團隊在使用 Claude Code 和 Cursor 開發時,System Prompt「無效」的四種常見狀況:
問題類型 | 現象描述 | 典型表現 |
---|---|---|
輸出風格錯誤 | 命名不一致、格式跑掉 | JavaScript 專案卻用 snake_case |
測試規則無效 | 沒有生成測試、測試不符規範 | 回傳 // TODO: add tests |
任務目標偏離 | AI 給出不相干建議或程式碼 | 要求寫 API 卻給前端組件建議 |
規範選擇性遺忘 | 部分規則有效,部分被忽略 | 遵守命名但忽略註解格式 |
以下是一套我們團隊建立的 System Prompt 效果診斷流程:
Claude 與 Cursor 都會參考 System Prompt 中的上下文訊息來理解任務範圍。如果 System Prompt 中的任務背景描述不清或語意含混,AI 會猜錯事情。
** 錯誤的 System Prompt 範例:**
你是一個程式設計助手,請幫助用戶寫程式碼。
** 正確的 System Prompt 範例:**
你是一個專精 PHP 開發的程式設計助手。
## 開發環境與技術棧
- PHP 8.1
- 資料庫:MySQL 8.0
- 前端:Vue.js 3 + Inertia.js
## 程式碼規範
- 嚴格遵循 PSR-12 程式碼風格
- 變數與方法使用 snake_case 命名
- 類別使用 PascalCase 命名
- 所有方法必須包含型別宣告和回傳型別
## 開發原則
- 安全性優先:所有用戶輸入必須驗證
- 可維護性:程式碼必須模組化,單一職責
- 測試覆蓋:核心功能必須有對應的 PHPUnit 測試
當用戶提出開發需求時,請基於以上規範提供解決方案。
Claude Code 的 context window 目前雖大,但System Prompt + 最近對話 + 專案程式碼 + 回應預估一加起來還是可能爆掉,導致「重要規則被截斷」。
判斷方式:
解法: 將 Prompt 模組拆小、優先順序明確、避免冗詞贅字。
狀況: JavaScript 專案,AI 卻產出 snake_case 命名
問題的 System Prompt 設定:
## 載入的規範模組
@prompts/lang/php.md
@prompts/testing/jest.md
## 開發任務
請協助開發前端功能模組
分析問題點:
修正後的 System Prompt:
## 開發環境
你是 JavaScript/TypeScript 前端開發專家
## 技術棧與規範
- 主要語言:JavaScript ES6+
- 框架:React/Vue.js
- 測試框架:Jest
- 載入規範:@prompts/lang/javascript.md
## 命名規範(最高優先級)
- 變數與函數:camelCase
- 常數:UPPER_SNAKE_CASE
- 組件:PascalCase
當用戶請求前端功能開發時,嚴格遵循上述 JavaScript 規範。
狀況: 用戶要求「幫我寫測試」,AI 卻回傳 // TODO: add tests
問題的 System Prompt 設定:
你是程式開發助手,請協助用戶開發功能並確保程式碼品質。
問題來源:
修正後的 System Prompt:
你是程式開發助手,專精於撰寫高品質程式碼和完整測試。
## 測試策略與規範
- 測試框架:Jest (前端) / PHPUnit (後端)
- 測試覆蓋率要求:> 80%
- 載入測試規範:@prompts/testing/jest.md
## 測試產出要求
- 每個功能函數必須有對應測試
- 測試檔案命名:[功能名稱].test.js
- 必須包含:正常情境、邊界情境、錯誤情境測試
- 測試描述必須清晰易懂
當用戶要求撰寫測試時,自動依照上述規範生成完整測試程式碼。
問題輸入結構:
System Prompt (2,000 tokens)
+ 專案現有程式碼 (10,000 tokens)
+ 測試案例說明 (5,000 tokens)
+ 新功能需求 (2,000 tokens)
= 總計 19,000 tokens
結果: AI 生成新 function,但完全忽略命名規範(因為規範在 System Prompt 中,被截斷了)
為降低「AI 不聽話」的風險,我們製作了團隊內部的 Prompt Debug Checklist:
發送需求前檢查:
收到結果後檢查:
根據診斷結果,我們將問題歸納為兩大類:
問題類型 A:語意模糊與規則衝突
問題類型 B:Context 過長問題
System Prompt 不是「設好就不管」的設定,而是一套需要隨任務調整的溝通語言。
AI 不聽話的背後,往往不是 AI 壞掉,而是人類輸入了模糊、矛盾、不完整的指令。透過系統化的診斷流程,我們可以快速定位問題。