iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0

$40 事故後的止血和路由策略,解決了「當下的錯」。但一個月後我差點重蹈覆轍:某天晚上隨手建一個新的提醒 job,手一快,model 欄位又忘了填。

那一刻我想通了一件事:**問題從來不是 AI 不自律,是我不自律。**規則放在腦子裡,就會敗給「今天很累」「只是個小 job」「下次再改」。人靠意志力遵守規範的成功率,工程師應該最清楚——所以我們才發明了 CI、lint、code review。

於是我把散落的教訓整理成一份成文的「法律」:品質閘道(Quality Gate)。任何排程任務,新建或修改,都要過五道閘門。過不了就不准上線。今天講這五道閘門的內容、違規怎麼處理,以及「法律」要寫在哪裡才真的有效。

五道閘門

https://ithelp.ithome.com.tw/upload/images/20260822/20182865KbLU37KY2W.png

# 閘門 規則 對應的血淚
1 model 白名單 純文字 → Gemini(免費額度);exec 任務 → Claude Haiku;Claude 旗艦一律禁止 $40 事故(Day 22)
2 delivery 目標 推播必須指向唯一合法的群組 ID 曾把通知發進測試群,家人看到一堆亂碼報告
3 topic 有效值 topicId 只接受白名單清單內的值 殭屍 job 靜默空轉兩週(Day 15)
4 時區顯式宣告 schedule 必須帶 tz——沒寫不會報錯,排程器直接當 UTC 「早報」下午兩點準時發、記憶整合挑我用電腦的上午跑(Day 9)
5 fallbacks 必空 fallback 陣列必須是 [] 升級鏈印鈔機(Day 22)

(timeout ≤ 120 秒也在掃描範圍內,它掛在模型規則那份文件下,不佔閘門編號——$40 事故的重試教訓由它看守。)

五道閘門有一個共同特徵:**全部是可機器判定的封閉規則。**不是「模型選擇要合理」這種開放式原則,而是「欄位值必須在這個集合內」。原則靠人詮釋,閘門靠字串比對——後者才擋得住晚上十一點很累的我。

特別說一下第 3、4 道——它們防的是同一族錯誤:靜默失敗。往不存在的 topic 發訊息不會報錯,job 永遠顯示成功;時區沒宣告也不會報錯,排程器安靜地用 UTC 解讀,於是我的「今日能量早報」曾經一個多月都在下午兩點準時送達(Day 9),每一天都「執行成功」。會大聲失敗的錯誤都好辦,閘門真正的價值是攔下那些安靜的。

法律寫在哪:行為協定檔

規則的存放位置比內容更關鍵。我把閘道寫進 Agent 的行為協定檔——那份定義 Agent 核心行為的 Markdown(我的系統裡叫 AGENTS.md),Agent 每次啟動任務都會讀它。

這帶來一個微妙但重要的效果:閘道同時約束人和 AI。

  • 約束 AI:我常直接在對話裡叫 Agent「幫我建一個每天 X 點做 Y 的 job」。因為閘道就在它的協定檔裡,它會自己選對模型、自己拒絕 topic 亂填——甚至有一次我口頭指定用 Claude 旗艦測試,它回我:「依品質閘道規則,排程任務禁止使用該模型,建議改用 Haiku 或改為互動執行。」被自己寫的法條打臉,體驗很奇妙,但這正是要的效果。
  • 約束人:CLAUDE.md/AGENTS.md 這類檔案同時也是我自己的操作手冊。半夜手癢建 job 之前,白名單就在眼前。
## 品質閘道(新建/修改 Cron Job 必過)
| 欄位 | 規則 |
|------|------|
| model      | 文字生成→Gemini;exec→Claude Haiku;Claude 旗艦一律禁止 |
| delivery.to | 必須為 <合法群組 ID> |
| topicId    | 只接受白名單:{投資, 備考, 家居, 開發, 生活…對應的 ID} |
| schedule.tz | 必須顯式宣告(沒寫=排程器當 UTC,且不報錯) |
| fallbacks  | 必須為 [] |

執法:靠掃描,不靠自覺

法律沒有警察就是標語。我的警察是一支每天跑的自我掃描 job:讀出所有排程任務的設定,逐一比對五道閘門,違規就列進報告、發告警。

違規的處理分兩級:

等級 情形 處置
🔴 高風險 model 用到旗艦、fallbacks 非空 告警 + 當天處理(這是錢在漏)
🟡 低風險 topic 不合法、時區未宣告、timeout 沒設 列入報告,週末批次修

分級的依據還是那個老標準——後果的價格。model 違規每小時都在燒錢,必須即刻處理;topic 違規頂多是通知去錯地方,可以攢著修。

掃描器本身也有一條誠實條款:如果它讀不到 job 清單(API 掛了、權限問題),必須回報「無法掃描」,而不是回報「全部合規」。這是監控系統的基本倫理——「我不知道」和「沒問題」是兩個完全不同的答案,混淆它們的監控比沒有監控更危險。

我踩過的坑

**坑一:閘道寫了,舊 job 沒回溯。**立法只管未來,但我有三十幾個「立法前」的存量 job。第一次全量掃描跑下來,違規清單長得讓人臉紅——一半以上的 job 至少踩一條。花了一個週末逐一修完。教訓:新規則上線的第一件事,是拿它掃一遍存量,不然你的法律只保護增量,債都埋在存量裡。

**坑二:把「建議」和「規則」混在同一張表。**初版閘道文件裡混了幾條「盡量」「建議」開頭的軟性條款,結果整份文件的權威性被稀釋——連硬規則都開始被(我自己)通融。後來把文件拆成兩份:閘道只留可機器判定的硬規則,軟性建議移去另一份指南。規則文件裡出現一個「盡量」,整份文件都變成盡量。

小結+明日預告

品質閘道的核心思想:把教訓變成封閉規則、規則寫進協定檔讓人機共守、再用排程掃描執法。從此「又忘了填 model」這類錯誤,從機率事件變成不可能事件。

閘道管的是「不做錯事」,但系統整體的健康還需要一個更宏觀的答案。明天講我的系統每月一次的期末考:健康評分怎麼設計、85 分 B 級是什麼概念,以及一個「誤報 31 次把警報搞到失效」的慘案。


🔑 這篇的關鍵字
品質閘道 / Quality Gate:把教訓寫成可機器判定的規則,而不是記在腦裡或寫在 wiki
封閉規則 vs 開放原則:「禁止 X」可以自動檢查,「要謹慎」不行
人機共守:規則同時綁在人的流程(PR checklist)與機器的流程(每日掃描)上
⚠️ 掃描腳本本身要反向驗證:塞一個假違規進去,確認它會叫(見 Day 28 的慘案)


我是一名金融業資訊工程師,這是我半年來在家自架 AI Agent 系統的實錄。


上一篇
Day 23:不是每個任務都配得上最聰明的模型——三層路由策略
下一篇
Day 25:我的系統每月考試——85 分,B 級
系列文
生活中的 AI 應用:我在家用 NAS 養了一隻 Agent,幫我看盤、顧家、盯備考——30 天自架實錄30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言