假設你交代 AI 代理一件事:把客戶名單裡標了「已停業」的公司移到另一張表,再寄一封通知給業務同事。過一陣子它回報:「已完成,名單已整理、通知已寄出。」你打開表格,只搬了一部分;寄件備份裡那封通知,收件人是你自己。
這種事不一定是它在騙你。它說的「完成」,可能只是它那一段工作結束了,也可能只是工具收到了請求,跟你要的結果是兩回事。
「已完成」只是一句輸出
阿里雲的 Agent 手冊講執行紀錄的那一章提醒,AI 回答「完成」只是一條輸出,跟事情真的辦成是不同的事(低分先分診那篇用這一點拆過低分的原因)。要它產生檔案、送出表單、修改設定的任務,要去看最後的成品或系統裡的狀態。這裡講的是它一回報完成,你先做什麼。
寫給程式開發用的技能集 superpowers 裡,有一份「宣告完成前的驗證」,核心只有一句:沒有剛跑過的驗證證據,就不准說完成。它列了一張對照表,其中一列是「代理說完成了」,要看到的是實際的變更紀錄,代理回報成功不算數;另一列是「需求都達成」,要逐條對照需求,單看檢查通過不夠。
這兩列搬到辦公室,就是兩個動作:去找結果本身,拿原本的要求逐條對。
它還列了一串警訊用語,像「應該」「大概」「看起來」,以及還沒驗證就先說「太好了」「完成了」。回報裡出現「應該已經寄出」「看起來都更新了」,就當作還沒驗證。
讀紀錄:先看頭尾,再找斷掉的那一步
結果不對,或你找不到結果,就打開它的執行紀錄。很多 AI 工具會留下一串步驟:它做了什麼、叫了哪個工具、工具回了什麼。手冊建議先別從頭逐字讀。
先看頭尾:你最後要求的是什麼,它最後給了什麼。再看概覽:走了幾步、叫了哪些工具、花了多久,決定要細看哪一段。接著照「你補充的話、它的動作、工具回傳、它接下來說的話」這個順序讀;紀錄很長就搜尋工具名稱或錯誤字樣,展開那一步的輸入和執行結果。
讀的時候,特別看三種斷點。
第一種,工具回的東西,它沒照著用。工具回了錯誤,它卻說成功,低分先分診那篇舉過的退款例就是這種。手冊另一個例子是客服:查資料的工具已經回了完整的操作步驟,它最後卻只給了概念介紹。
第二種是重試。改了參數之後成功,代表它會從錯誤裡恢復;同一個錯誤原樣試了好幾次,可能要調整重試或停止的條件。兩種紀錄裡都有失敗,處理方式不一樣。
第三種是交給別人做的部分。工作分給另一個 AI 時,手冊提醒要看主代理交出去的目標,和它實際收到的回傳,不能只看那個 AI 有沒有結束。另一種類似的情況是背景工作:手冊講大量資料匯入時寫到,看到「任務已建立」要去追它跑出來的結果,不能當作資料已經寫進去。
找到斷點,就用一串相鄰的事實寫下來,例如「要求搬全部停業公司、篩選只抓到其中一種寫法、回報全部完成」。手冊的理由是這樣別人能複核,比寫一句「它做得不好」有用;你下次交辦時,也知道要補哪一句。
另外兩件事要記得。手冊提醒,紀錄能看到多少,要看工具實際記了多少,所以紀錄裡沒看到,不等於沒發生,最後還是以系統裡的實際狀態為準。還有一種情況不在手冊的清單裡,是我的判斷:它做了你沒交代的事,例如找不到原檔就自己另建一份,再回報完成。這跟沒做完一樣要退回,而且要先查它多做的那一步動到了什麼。
收到完成回報,照這個順序查
AI 回報「已完成」
│
你找得到結果本身嗎?
├ 找不到 ─→ 算未完成,請它附證據
└ 找得到
│
拿原本的要求逐條對,每條都有嗎?
├ 缺 ───→ 部分完成,列出缺哪條
└ 齊
│
紀錄裡有錯誤、跳過或原樣重試嗎?
├ 有 ───→ 讀那一步,確認結果沒受影響
└ 沒有
│
它有做你沒交代的事嗎?
├ 有 ───→ 先查影響,再決定留不留
└ 沒有 ─→ 算完成
| 它回報的話 | 要看到什麼才算數 | 不夠的證據 |
|---|---|---|
| 「信已寄出」 | 寄件備份裡那封信,收件人、主旨、內容都對 | 它說寄了;寄信工具回了「已排入寄送」 |
| 「資料已更新」 | 打開資料表,看改過的那幾列和改前改後的值 | 它說改了;改了幾列就說全部 |
| 「申請已送出」 | 系統裡查得到的單號或狀態 | 畫面上一句「送出成功」;工具回傳有錯誤它沒提 |
| 「排程已建立」 | 第一次實際執行的結果 | 「任務已建立」這句話本身 |
| 「另一個 AI 做完了」 | 交出去的目標,和收回來的內容 | 那個 AI 顯示已結束 |
| 「要求都完成了」 | 拿原本的要求逐條打勾 | 其中一項做到了、某個檢查有過 |
| 「應該都好了」 | 從第一列重新查起 | 這句話本身就代表還沒查 |
作者整理,非官方。
這張表不用每次全部走完。你交代的事只產生一個結果,找到它、對過要求就夠了;要讀紀錄,是在結果找不到或對不上的時候。
動手做
把原本的要求、它的回報和執行紀錄一起交給另一個 AI 對帳:
下面是我交代給 AI 代理的工作、它的完成回報,以及它的執行紀錄。 【我原本的要求】 (貼上) 【它的完成回報】 (貼上) 【執行紀錄】 (貼上步驟、工具呼叫和工具回傳;沒有紀錄就寫「沒有」) 請不要因為回報寫了完成就判定完成。輸出表格: 1. 把我的要求拆成逐條項目 2. 每一條在紀錄裡找證據:哪一步、工具回了什麼;找不到就寫「紀錄看不出來,要去系統確認」 3. 列出紀錄裡所有錯誤、被跳過的步驟、原樣重試的地方,以及它之後怎麼處理 4. 列出它做了、但我沒交代的事 5. 回報裡用了「應該」「大概」「看起來」的句子 最後給一個結論:完成、部分完成、未完成、看不出來,並告訴我要親自打開哪幾個地方確認。
下次交辦時,在最後加一句「回報完成時,每一項附上我能自己打開確認的位置」,收到回報後照上面的順序,去那些位置一個一個看。
站內延伸
- 分數變低時,分辨是答錯、評分錯,還是工具沒做成 → AI 助手分數變低,先別急著改指令
- 讓另一個 AI 專門負責挑錯 → 對抗式驗收:產生的不檢查,檢查的不產生
- 上線前把 AI 代理測過一輪 → 找方法AI Agent 測試
來源: obra/superpowers:verification-before-completion(Jesse Vincent,MIT;2026-10-25 查閱;沒有新的驗證證據不得宣告完成、Common Failures 表的 Agent completed 與 Requirements met 兩列、Red Flags 的 should/probably/seems to 與驗證前先表示滿意);aliyun/ai-agent-handbook:第 19 章 Agent 軌跡資料(Apache-2.0;2026-10-25 查閱;19.3 先看輸入輸出與概覽、客服例(檢索已回完整步驟、回答只給概念)、再依序展開步驟、多代理要看交出的目標與實際回傳、以相鄰事實寫結論;19.4 退款例、重試的兩種情況(原樣重試「可能」需要調整條件)、「回答完成」只是一條輸出;19.5 後台匯入的「任務已建立」不等於資料已寫入;19.6 紀錄範圍取決於實際採集)。本文以台灣用語改寫觀念並註明出處,未逐句翻譯;流程圖、對照表與提示詞為作者整理。