模組二|選題與素材庫(Day 6–11)
我做了一條把新聞素材整理成 podcast 講稿的自動化產線,素材庫裡目前有 438 則資料,每一則都該照我訂的欄位規格寫。有些規格落實得很差——那是另一篇的題目。
本篇講的是同一個資料庫裡最成功的那一個機制:它把一條主觀的編輯倫理,變成了程式判得出來的條件。
那條倫理是:未定的事實,不得被講成定論。
新聞裡的東西可信度差很多。有的是官方文件寫的、有的是多家媒體交叉報導的、有的是單一匿名貼文、有的是還在訴訟中的指控。
讀者看文字有防禦力,看到「據傳」會自動打折。聽眾沒有。 他們聽到的是我的聲音,語氣一平,什麼都變成事實。
所以口播端的要求比文字端嚴:未定的東西不能只是「寫得比較小心」,它必須在句子裡就被標出來。
問題是,「這句話夠不夠確定」是一個判斷,而判斷沒辦法寫成程式。
我的系統裡實際上有三套分層,而且它們的用途不同:
第一套,給編輯看的:可核實 / 推論與觀點 / 待補件。缺證據的要寫出缺什麼。
第二套,給程式看的:一組可信度標記字串。命中哪些算高可信、命中哪些算非高可信,寫死在常數裡。
第三套,給口播看的:High / Medium / 分層。
第三套的第三個選項最容易被誤解,所以先講清楚:
「分層」不是「低可信」。 它的意思是:這條主張必須在口播時當場拆成兩層講。
例如:某個威脅的存在有多方證據,可以講死;但某個具體個案是不是這個威脅的例子,證據不足,不能講死。這種主張標成「分層」,代表唸的時候要把這兩件事明確分開,不能合併成一句斷言。
某一集的 16 條主張,分布是 High 4 / Medium 6 / 分層 6,超過三分之一的主張需要當場拆兩層講。 這個比例讓我意識到「分層」不是邊緣案例,它是常態。

第二套(給程式看的那套)的判定順序長這樣:
if any(marker in text for marker in NON_HIGH_MARKERS):
return 'non-high'
if any(marker in text for marker in HIGH_MARKERS):
return 'high'
# 兩者皆無 → 也判 non-high
# 註解原文大意:未標記或無法辨識的可信度標記,應被補救
return 'non-high'
看清楚最後那一段:沒有任何標記的,也判為不可信。
這是整套系統最有效的一行。因為它把「忘記標」跟「標成不可信」變成同一件事。
如果預設是「沒標=可信」,那漏標就是靜默通過,而漏標一定會發生,尤其是在趕稿的時候。保守的預設值把「人的疏忽」轉成「系統的保守」,這比要求大家「小心一點」有效一萬倍。
全庫套用這個判定的結果:438 則裡,36 則純粹因為「什麼標記都沒有」而被降級。這 36 則如果預設是相反的,就會被當成可信直接用掉。

真正把「未定事實不得講成定論」變成可執行的,是對非高可信條目的六條硬門檻:
第 4 跟第 5 條是關鍵。
它們強制查核段裡同時存在兩層:你不能只寫「這件事已經證實」,也不能只寫「這件事還沒證實」。兩層都要有。
而這剛好就是「未定事實不得講成定論」的可機械判定版本。因為當你被迫把已證實跟待證實分開寫,你就沒辦法把它們混成一句斷言。
主觀的倫理 → 「這兩個標記都要出現」→ 兩個 in 判斷。
這是這整條產線裡最成功的一次降維。
我實際跑了一次稽核,結果不好看:
Total checked: 438
High credibility: 170
Non-high credibility: 268
Remediation complete: 84
Remediation open: 184 ← 佔非高的 69%
268 則非高可信條目裡,184 則(69%)沒有通過補件門檻。
缺項分布:
| 缺什麼 | 次數 |
|---|---|
| 問答段缺失 | 172 |
| 查核段缺「待證實」層 | 70 |
| 查核段缺「已證實」層 | 55 |
| 可追溯來源少於 2 筆 | 46 |
| 其他 | 3 |
中間那兩列合計 125 次。
而它們的意義跟我原本以為的不一樣:這 125 次不是「未定事實被講成定論」,是「根本沒做分層」。
差別很大。前者是判斷錯誤,後者是流程沒跑到。前者需要更好的判斷力,後者只需要有人把門檻掛上去。
沒有。
跟昨天的模板驗證一樣:稽核指令存在,而它不在任何自動流程裡。
我甚至在規格文件裡寫過「應在發布前設為 gate」,那條任務還打了勾。
打勾的意思是「當時那一批補完了」,不是「以後都會被擋」。資料繼續長,門檻沒有掛上,於是不合格的比例回到 69%。
這是 Day 7 那條判準的又一個實例:收益延後的規則,如果不自動執行,必然腐蝕。
還有一個更根本的缺口,我到現在沒有解。
這套稽核驗的是「資料欄位裡有沒有兩層」,不驗「口播稿有沒有把兩層唸出來」。
也就是說:條目的查核段可以完美地分好層,而我在錄音時還是把它唸成一句斷言。稽核會通過,因為它看的是資料檔,不是稿子。
這個缺口目前靠人補,Day 14 會講那個「換一個模型審編輯線」的機制,它確實抓到過這種錯誤:某次查核表標了「分層」,而稿子裡對應的那一句是直述句。 那是全稿唯一一句違反自家標記的話,被另一個模型抓出來。
能被機器驗的那一半我做了,不能被機器驗的那一半靠人,而人只在有跑那個流程的時候才在。
這套分層最大的代價是它讓每一則條目變貴。
六條門檻,意思是收一則不太確定的新聞,我要寫查核段的兩層、要湊兩個可追溯來源、要寫問答。這比 Day 6 講的基本欄位又多了一層摩擦。
而 69% 的未完成率,某種程度上就是這個成本的帳單:不是我不想做,是做不完。
第二個代價:三套分層並存本身就是債。 給編輯的、給程式的、給口播的,三套術語不一樣、粒度不一樣,而沒有任何文件說明它們怎麼對應。我自己現在都要想一下「分層」對應到第二套的哪一種。
保守的預設值,是最便宜也最有效的攔截。
「沒標=不可信」這一行,比任何檢查清單都有用,因為它處理的是疏忽,而疏忽是最常見的失效模式。
同樣的模式可以套很多地方:沒設過期時間的快取當成過期、沒宣告權限的動作當成禁止、沒標記的資料當成敏感。讓「忘記做」跟「做了最保守的選擇」變成同一件事。
第二條,也是這一天真正的方法:
當你有一條無法直接檢查的主觀規則,找它的「必要條件」。
「這句話有沒有被講死」驗不了。但「查核段裡有沒有同時出現兩層」驗得了,而沒有兩層,就一定不可能講對。
必要條件不等於充分條件,它擋不住所有錯誤。但它擋得住那 125 次「根本沒做」。而在真實系統裡,「根本沒做」的數量遠遠多於「做了但做錯」。
明天講一件 AI 完全幫不上忙的事:一集節目的題目順序怎麼排。