Kent Shen
← 所有文章

跟 AI 一起寫程式:我怎麼用一份專案規則檔讓它不踩線

  • AI 協作
  • 開發流程
  • 心得

這幾個月,我大部分的程式都是跟 AI 一起寫的。它很快,也很能幹,但有一件事它做不到:它不知道你的專案裡,哪些事是絕對不能碰的。每次開新的對話,它對你的專案都是從零開始。

我的解法,是在專案根目錄放一份規則檔,把這些規矩寫下來。

規則檔該寫什麼

不是寫一份完整的說明書,而是寫「如果 AI 不知道,就可能出事」的東西。我習慣分成幾個區塊:

1. 不可違反的原則 這是最重要的一塊。舉例來說,在我做的機敏文件遮蔽工具裡,第一條原則是:使用者貼上的文字絕不離開瀏覽器,不可以新增任何接收這些文字的後端介面,也不可以用任何方式把它們送出去。

這種原則如果只存在我腦子裡,AI 哪天為了「加個錯誤回報」或「做個使用統計」就可能順手寫出一個違反它的功能,而且寫得很合理、很漂亮。有了規則檔,它在動手前就會先看到這條界線。

2. 常用指令 怎麼跑測試、怎麼啟動開發伺服器、怎麼部署。省得每次都要重新解釋,也避免 AI 用錯指令(例如把部署用的指令搞混)。

3. 資料與流程的規矩 哪些檔案不能直接改(例如已經套用過的資料庫 migration)、改了某個東西之後必須連帶做哪些事(例如改了規則要重新產生種子檔、要跑測試)。

4. 測試資料的規範 範例資料只能用完全虛構的內容,不可沿用真實的名稱、網址或地址。這一條是為了避免有人不小心把真實資料放進會公開的範例裡。

好規則的特徵

  • 具體,不抽象。 「注意安全」沒有用;「不可在前端使用 fetch 送出使用者貼上的內容」才有用。
  • 附上原因。 規則後面簡短說明為什麼,AI 才能在遇到規則沒寫到的情況時,推論出符合精神的做法。
  • 短。 規則檔太長,重要的反而被淹沒。我只放真的會出事的東西。

它擋不住的事

規則檔不是保險箱。AI 還是可能誤解、忽略或在長對話裡忘記某些規則。所以我仍然會做這幾件事:

  • 看 diff。 AI 改了什麼,我自己要看過,尤其是涉及資料、權限與對外請求的地方。
  • 用測試守住底線。 能自動檢查的規則,就寫成測試。例如「所有範例檔不含真實資料」可以用程式驗證,比靠人記得可靠。
  • 機密永遠不放進對話或程式碼。 規則檔也不例外:它只描述「機密該怎麼處理」,不包含任何機密本身。

這份規則也是給未來的我

這份檔案另一個意外的用途,是給半年後的我看。很多規則背後的原因,我自己都會忘。寫下來之後,我才不會在某天重新發明一次同樣的錯誤。

如果你也在用 AI 輔助開發,我建議從三條規則開始:最不能違反的原則、怎麼跑測試、哪些檔案不能直接改。寫起來只要十分鐘,卻能省下很多次「它怎麼又這樣做」的挫折。