05 · 每一步都要能驗收
流水線最大的風險不是某一步會錯,是錯了沒人發現,一路流到最後。等你在成品上看出不對,前面三步的產出早就被覆蓋了,你只能從頭猜。所以每一步後面都要有一道閘。
錯誤會在流水線裡放大
一個具體的例子:
① 整理紀要 —— 把"下週二再碰一次"漏了
② 抽待辦 —— 基於漏了的紀要,自然也沒有這條
③ 生成訊息 —— 三條訊息發出去,沒人知道下週二要開會
④ 你看訊息 —— 看著都挺通順,點了傳送第一步的一個遺漏,到第四步已經完全看不出來了。 你看到的是三條格式正確、語氣得體的訊息——它們唯一的問題是少了一條,而"少了什麼"是最難從成品上看出來的。
這就是為什麼閘要設在每一步後面,而不是隻設在最後。
三種閘,從輕到重
閘一:結構檢查(免費,必設)
最便宜的一種:這一步的產出,格式對不對。
② 抽待辦 之後:
- 是不是一張表?
- 是不是三列?
- 有沒有空單元格(應該是「待確認」而不是空)?這類檢查不需要 AI,肉眼一秒鐘,寫成程式碼也是幾行。它抓不到內容錯誤,但能抓到"這一步整個跑歪了"——而跑歪的情況比你以為的多。
閘二:自查(便宜,推薦)
讓這一步自己交一份檢查結果。提示詞篇 06講過寫法:
輸出分兩部分:
一、待辦表
二、自查:
| 檢查項 | 結果 |
| 每行三列都有值(或「待確認」) | 是/否 |
| 每條待辦都能在紀要裡找到出處 | 是/否 |
| 紀要裡的待辦沒有遺漏 | 是/否 |
出現「否」就改了再交。自查能查什麼、不能查什麼
能查:格式對不對、條目全不全、要求漏沒漏。這些是可對照的。
不能查:內容是不是事實。它編的時候就覺得是真的。
所以自查是篩子,不是保險。真正的事實核對只能靠人,或者靠下面這招。
閘三:交叉核對(貴,關鍵步驟才用)
用一個獨立的步驟去查上一步:
② 抽待辦 → 待辦表
②' 核對 → 拿紀要 + 待辦表,只回答一個問題:
"紀要裡有沒有哪條待辦沒被抽出來?逐條對,只列漏掉的。"關鍵在於②' 是一個乾淨的步驟,它沒參與 ② 的生成,不會替自己圓場。這是"漏了什麼"這類錯誤唯一有效的自動查法。
代價是多一次呼叫。所以只用在漏了會出事的那一兩步上。
閘設在哪幾步
不用每步都上三道閘。按這個原則分配:
| 步驟性質 | 設什麼閘 |
|---|---|
| 機械轉換(格式化、分組、套模板) | 結構檢查就夠 |
| 提取(從材料裡抽東西) | 結構檢查 + 自查;漏了會出事的加交叉核對 |
| 判斷(分類、打分、下結論) | 結構檢查 + 自查;結果影響後面分支的,加人工 |
| 生成對外內容 | 必須有人工,見 07 章 |
一條經驗:"提取"和"分類"這兩類步驟,是流水線裡最該設閘的地方。
因為它們的錯誤最隱蔽——提取漏了、分類錯了,產出看著都很正常,一路順暢地流到最後。而格式錯、語氣錯這類問題,反而在成品上一眼能看見。
越是看不出來的錯誤,越要在源頭設閘。
驗收標準要在拆步驟時就寫好
回到 03 章那張表的最後一列:
| 步 | 產出 | 怎麼算合格 |
|---|---|---|
| ① 整理紀要 | 三塊結構的紀要 | 三章齊全;無原文之外的人名 / 日期;未定的事沒寫進第一塊 |
| ② 抽待辦 | 表格:事項/責任人/截止 | 每行三列都有值或「待確認」;每條能在紀要裡找到出處;紀要裡的待辦沒漏 |
| ③ 生成訊息 | 每人一條訊息 | 每條含事項、截止、發起人;沒有別人的事項串進來 |
這一列寫不出來,那一步就還沒拆對。 寫得出來,它同時是三樣東西:
- 你手動檢查時的清單;
- 讓這一步自查時的檢查項;
- 將來自動化時的斷言。
一份東西三個用途——這跟 Skill 篇那份檢查清單是同一個道理。
給流水線建測試集
跟單條提示詞一樣(提示詞篇 08),流水線也該有測試集,只是要多存一樣東西:
用例 1(標準) 原始材料 + 每一步的期望產出
用例 2(缺資訊) ……
用例 3(有衝突) ……關鍵是存"每一步的期望產出",不只是最終結果。 這樣某次跑歪了,你能一步步比對,立刻定位到第幾步開始不對。
只存最終結果的話,你還是得從頭猜。
一個便宜的習慣
每次流水線跑完,別隻看最終產物,回頭掃一眼中間產物。
十秒鐘的事,能抓到大部分"看著沒問題但其實漏了"的情況。尤其是剛上線的頭兩週——那時候你還不知道它會在哪兒翻車。
兩週之後你會形成直覺:這條線最容易在第幾步出問題。然後把閘加在那兒。
下一步
06 · 出錯、重試與兜底 —— 閘攔下來了,然後呢。