循循 synsoon 課程
13 / 13

特講 它說做完了

上一支 下一支

AI 交回來測試全綠,打開一看它在程式裡加了一行 sys.exit(0)——在自己的考卷上蓋 A+。 本特講從官方研究與 Claude Opus 5 系統卡講起(reward hacking:滿足字面、沒滿足精神), 指出病灶是「你沒有給它可以自己跑的檢查」,再拆官方的四級階梯:同一則提示、/goal、 Stop hook(連擋八次放行)、獨立第二意見;後半回答更難的一題——你給它的檢查怎麼讓它改不掉: 三道寫給它看的叮嚀,與技術上做不到的約束(格式層 strict: true;環境層的權限規則、沙箱、工具呼叫攔截), 收在「要證據不要宣稱;能寫成約束的就不要寫成叮嚀」。

本集章節20

本集心智圖8 組

它說做完了:讓它真的走完,而且檢查本身改不掉
  • 這個行為有名字:reward hacking
    • 定義:騙到高分、沒完成任務——滿足字面不滿足精神
    • sys.exit(0) 關掉測試流程=在自己的作文上寫 A+
    • 研究是刻意挑可被鑽漏洞的環境做的,給的是行為的形狀
    • 系統卡 §6.3 訓練資料審查:十二條行為、「一些實例」
    • 編造執行結果/改刪測試/沒跑就交、心裡對一遍
  • 病灶:你成了驗證迴圈
    • 它在「看起來做完了」時停下來
    • 沒有可跑的檢查,「看起來做完」是唯一訊號
    • 檢查=會回「過/不過」的東西:測試、建置、比對腳本、截圖
    • 長流程:看到進度就宣布完成、沒測就標完成
    • 解法是給它瀏覽器工具、像使用者走一遍
  • 四級階梯:卡「停」卡多死
    • ①同一則提示:提供驗證標準、截圖比對、修根因
    • ②/goal:每回合獨立評估者複查
    • 評估者不跑指令不讀檔→條件要能被輸出展示
    • ③Stop hook:腳本不過就不准結束回合;連擋 8 次放行
    • ④第二意見:做事的不當打分的;找漏洞者必報漏洞
    • 每往上一級,拿前置設定換注意力
  • 叮嚀:寫給它看的話
    • 明講移除或修改測試不可接受
    • 驗收標準存 JSON 不存 Markdown(換擺法)
    • 不寫死答案、測試驗正確性不定義解答、不寫輔助腳本繞路
    • 誠實退路:任務不合理或測試錯就說出來
    • 不拿破壞性動作當捷徑,例如 --no-verify
    • 遵不遵守是它決定的,結構上沒有保證
  • 約束①格式層:鎖在 API 參數
    • strict: true/output_config.format
    • 受約束的解碼:不合 schema 的 token 採樣不出來
    • 保證格式,不保證內容正確
    • 大多數情況;例外:拒答、截斷、列舉值大小寫
    • 大小寫例外不給警訊,比對要不分大小寫
  • 約束②環境層:鎖在跑它的地方
    • 權限拒絕規則:讀取拒絕連帶擋寫入與新建
    • 規則管不到子行程腳本
    • 沙箱:作業系統畫邊界,含所有子行程;denyWrite
    • 沙箱管碰不碰得到,看不出內容
    • 工具呼叫攔截 permissionDecision deny,bypassPermissions 也擋
    • 三者互補不是階梯;攔截要先知道攔什麼
  • 狀態放對位置:接得上
    • 初始化代理:init.sh、claude-progress.txt、第一個 git 提交
    • 每段結束提交 git,訊息寫清楚
    • 每段開始先 pwd
    • 「只能改這個目錄」寫在提示詞是叮嚀,不是鎖
  • 收束:證據,不是宣稱
    • 先相信後驗證的落差
    • 一律提供驗證方式;驗不了就不要出貨
    • 要它拿出測試輸出、指令回傳、截圖
    • 能寫成約束的就不要寫成叮嚀
    • 先問:鎖該裝在哪一層

#ClaudeCode#RewardHacking#StopHook#AI驗證#AI開發