舊流程裡 Wayne 要在七個步驟插手。改寫後剩兩個——但不是每種改動都是同樣的兩個。
這是一套更大系統裡的一個節點,我之前寫過:一個服務三家民宿業者、五間館、全部在恆春的廣告引擎。每週有一支分析 agent 找出問題,一組 skill 把這些發現變成 Google Ads 帳號上、以及愈來愈多是網站本身上的實際改動。這次動到的是 ads-execute——負責「拿到問題、真的去修」的那支 skill。它現在能做的事比以前廣,但有意思的決定不在「變廣」。在於人的檢查點落在哪裡。
這支 skill 不再只跟報告綁在一起
最早 ads-execute 只有一個入口:你餵它一份 ads-health 報告,它解析發現,轉成帳號改動。契約很乾淨,但對實際工作方式來說太窄了。有一半的時候,問題根本不是從報告來的——是從一次即時對話來的,我跟 agent 一起看數據、一起得出結論。沒有現成的檔案可以餵進去。舊 skill 沒辦法執行這種。
所以現在的範圍涵蓋兩種入口條件:一份健檢報告,或是即時討論得出、背後沒有報告的結論。而且執行的範圍從 Ads 帳號延伸到網站本身——agent 自己做診斷、做分類判斷(否定字 / 比對類型修正 / 關鍵字 harvesting / Final URL / 或真的是網站內容問題)、動手改網站程式碼、做驗證。整件事的重點就是:我下一個指令,然後大致上等它跑完。
為什麼帳號一個檢查點、網站兩個
這裡是真正重要的決定。Ads 帳號改動跟網站程式碼改動的風險性質不同,一視同仁的話,不是太慢就是太危險。
Ads 帳號改動:一個檢查點。 每一筆變更都走 git 追蹤的 YAML,由 ads-mutate.ts 處理,或是走 ads-fix-final-url.ts——兩者都支援 dry-run。一筆機械性變更的 dry-run 不是「可能會發生什麼」的摘要,而是「將會發生什麼」的精確、逐項預覽。看過 dry-run 輸出以後,沒有東西可以再審了。診斷、分類、產出變更計畫、跑 dry-run、把 dry-run 結果當作檢查點 1 的一部分秀給我看,確認後直接執行。再看第二次,是在看同一份資訊兩遍。
網站程式碼改動:兩個檢查點。 一份文字計畫跟一份實際 diff,不是同一個東西,而兩者之間的落差正是錯誤發生的地方。agent 先用文字寫計畫——不動 code——這份計畫進檢查點 1,跟 Ads dry-run 一起。我確認後它才真的寫 code、起 dev server、截圖,然後帶著實際的 diff 和截圖回來走檢查點 2。這就是 Ads 那條路不需要的第二次審查,因為對程式碼來說,「這是我的計畫」跟「這是我實際寫出來的東西」是兩個不一樣的宣稱;對一筆機械性的帳號變更來說不是。
這個不對稱就是整個設計。檢查點的數量不是安心值——是照著「這次審查到底揭露多少東西」校準出來的。同一份 Ads dry-run 審兩次,第二次不會告訴你任何新東西。審一份程式碼計畫、再審程式碼 diff,告訴你的是兩件不同的事。
收尾的那份紀錄
執行完,skill 把改動寫進 sites/<slug>/operator-events.yaml,如果動到網站,也同步更新 handoff 和 worklog 文件。這不是記帳。每週分析 agent 對每個站點的理解,是一份靜態的 context 檔——它只知道上一次有人更新它時被告知的內容,跟得上不了實際介入發生的頻率。這是一個結構性的缺口:一個在評估上週結果的 AI,如果沒有東西告訴它,它根本不知道上週改了什麼。
operator-events.yaml 就是那個東西——一份機器可讀、持續追加的紀錄,寫下做了什麼、為什麼做。下一次分析跑起來會讀它,所以那個在衡量結果的 agent,已經知道結果之前發生過哪些介入。沒有它,分析端會看到詢問量變動,卻無從歸因——它會用猜的,而且會猜錯。這份紀錄不是給人看的備忘錄,是餵給鏈路上下一個 AI 的 context。
那個省下一次白跑的守門
有一個小改動值得點名:如果某個站點的設定檔缺了 Google Ads 帳號區塊,skill 會在最上面直接停下來,而不是讓錯誤在三支 script 之後才冒出來。下游每一支 Ads script——snapshot、health-fetch、mutate——在帳號清單是空的時候都會丟同一個錯,而那些失敗每一個都比在源頭攔下來的那個更難懂。在入口就快速失敗,把確切的修法講清楚(在設定檔加上 10 位數帳號 ID、commit、重跑),就把一個 pipeline 中段的難懂崩潰,變成一行指示。這是 agent 亂撞跟 agent 乾淨停下的差別。
這東西為什麼會存在
老實說:這種等級的服務——逐站診斷、帳號優化、網站修正,加上一份結構化的稽核軌跡餵回下一次分析——對一家小民宿來說,從來就不是划得來的選項。每一塊以前都需要自己的人力,而沒有哪家民宿的預算養得起一個工程師加一個分析師加一個廣告投手。不是有人選擇不做,是這筆帳從來就算不過來。
變的是,現在一支 AI agent 能撐起整條鏈——診斷、分類、跨兩個介面執行、紀錄——而人只在那兩個真正會改變結果的地方出現。設計的功夫不在讓 agent 有能力,在於精準地決定,我還需要在哪裡看。
一個檢查點,dry-run 告訴你全部。兩個檢查點,計畫跟 diff 告訴你不一樣的事。