AI AgentPrompt Chaining提示鏈BuildInPublic一人公司

多步 agent 鏈怎麼查最弱環:一環壞掉會靜默傳垃圾

· 9 分鐘閱讀
龍蝦艦隊 · 逐章稽核 · 第 2 / 22 篇
目錄
  1. 第三環壞掉,垃圾照樣走完剩下的鏈
  2. 先花幾分鐘查你自己的鏈
  3. 我們實際怎麼修的
  4. 提示鏈體檢清單
  5. 這一章的四句話

幾個月前我在《自動內容不等於垃圾:品質閘門實戰》裡,把這道自審重寫的品質閘門,捧成把產出從「不能看」救到「比我自己寫的還好」的招牌機制。這篇要回頭拆穿它:那道閘門的解析器一壞,就把它自己剛判爛的原稿靜默放行,PO 出一則 14 字的垃圾貼文。

《Agentic Design Patterns》第 1 章講提示鏈(Prompt Chaining)。核心一句話:一個複雜任務,與其塞給模型一次做完,不如拆成鏈式的子步驟,前一環的輸出餵給後一環。研究一環、生成一環、自審一環、發布一環,各司其職,整條鏈看起來乾淨又可靠。

我們的 Moltbook 自動發文就是這樣一條鏈:先研究(抓產業新聞、HN 熱門、自己的貼文成績當素材),再生成貼文,接著自審打分,最後發文。四環俱全,我們很滿意。然後我們對自己做了對抗式稽核。這一章的真相是:一條鏈看起來完整,不代表它可靠,它只跟最弱那一環的錯誤處理一樣強。而我們最弱那一環,靜默 PO 出了一則 14 字的垃圾貼文。

第三環壞掉,垃圾照樣走完剩下的鏈

自審那一環(我們叫它 quality gate)的設計是這樣:把生成好的草稿丟回給模型打 1 到 10 分,7 分以上就 APPROVED 放行,不到 7 分就回一個 REWRITE 加一份改寫過的版本。聽起來很完整,一個會自我修正的環。

問題出在解析那份改寫版。程式從模型回覆裡撈新標題和新內文,撈到就換上,撈不到就走進 else:

if [ -n "$NEW_TITLE" ] && [ -n "$NEW_CONTENT" ]; then
  TITLE="$NEW_TITLE"; CONTENT="$NEW_CONTENT"        # 用改寫版
else
  log "Quality gate: REWRITE requested but failed to parse, using original"
fi

模型的改寫版只要格式跑掉(沒照 TITLE:--- 的格式吐),這段就解析失敗,然後退回原稿。而會被判 REWRITE 的原稿,本來就是那份品質不夠的。自審環發現草稿爛,要求改寫,改寫版解析失敗,於是它把那份它自己剛判定爛的原稿,原封不動放行到下一環。更糟的是下一環(發文)當時沒有任何長度關卡。於是一則只有 14 字的貼文,一路走完自審、走完發文,靜靜地 PO 上了公開平台。

自審環的表面任務是攔爛草稿,它的錯誤路徑卻是「攔不下來就放原稿過」。這條鏈看起來有自我修正,實際上最弱那一環的錯誤處理是靜默放行。

先花幾分鐘查你自己的鏈

01 鏈上每一環的輸出,下一環用之前驗過嗎 把你的鏈畫出來,找出每個「解析上一環輸出」的點(撈 JSON、切字串、抓某段標記)。每一個解析點後面,都該緊跟一個檢查:解析結果是不是空的、格式對不對。沒檢查就往下用,就是拿沒驗過的東西當可靠輸入。

# 撈出鏈裡每個解析點,看後面有沒有跟一個檢查
grep -nE "sed .*1,/\^---/d|grep \"\^TITLE:|jq -r|解析|parse" your-chain.sh

紅旗:解析完直接餵給下一步,中間沒有一個 if 在檢查解析出來的值是不是空、格式對不對。

02 某一環解析失敗時,會停下來還是靜默放行 逐一翻每個解析點的失敗分支。失敗時的處理如果是「用上一個值繼續」「回原稿」「|| true 吞掉」,那就是把垃圾往下傳而不喊停。我們就栽在一句 using original:它不是修正,是放行。

# 找「失敗就退回原值 / 吞錯往下走」這種靜默 fallback
grep -niE "using original|fallback|failed to parse|回原|退回|\|\| true" your-chain.sh

紅旗:解析失敗的處理是「拿原本的值繼續」,而那個原本的值沒人保證是好的。

03 發布前有沒有一道硬性的 min-length 或 quality gate 不管前面幾環怎麼放水,發出去之前該有最後一道確定性的關卡。撈出真正的發布動作(curl POST、寫 API、排程),看它前面有沒有一個「太短、太薄就中止」的 gate 擋著。

# 發布動作之前,有沒有長度或品質關卡
grep -nE "wc -w|wc -m|MIN_WORDS|-lt .*MIN|too short|too thin|太短|太薄" your-chain.sh

紅旗:從生成到真正送出去之間,找不到任何一個「不合格就 exit」的關卡。

我們實際怎麼修的

2026-07-04 那一刀補在發文之前,一道 min-length gate:內文少於 40 個 word 就中止這一輪,log 一句 too thin 然後 exit 0,不發。跳過一輪不痛,下一次排程會重新生一篇;發一則 14 字廢文到公開平台,才是真的丟臉。

值得講清楚:我們沒有假裝把上游那個解析器修到完美。改寫版偶爾格式跑掉、解析失敗,這件事還會發生。我們做的是承認鏈的最弱環會出錯,然後在終點前把最後一道門守住,讓它就算出錯也不會把垃圾送出去。這正是提示鏈的重點:你擋不住每一環都不出錯,但你可以保證出錯不會靜默流到終點。

順帶一提,我們另一條發文鏈 content-cascade 這件事做對了:每一則生成的貼文,排程前都先驗一次,模型如果回「請提供文章內容」這種討拍句就丟掉,少於 80 字元也丟掉。同樣是鏈,差別只在最弱環的錯誤處理有沒有人守。

提示鏈體檢清單

對你自己的多步鏈跑一遍:

  • 每一環的輸出,下一環拿去用之前有驗過(非空、格式對)嗎
  • 每個「解析上一環輸出」的點,後面緊跟一個檢查嗎
  • 某環解析失敗時,是停下來喊停,還是靜默退回原值往下傳
  • 發布前有一道確定性的 min-length 或 quality gate 擋著嗎
  • 那道 gate 攔下來時,是安全地跳過(下輪再生),還是硬把半成品送出去
  • 你的 log 分得出「這輪被 gate 攔掉」和「這輪正常發出」嗎

這一章的四句話

  • 一條鏈只跟它最弱那一環的錯誤處理一樣強。四環都在,不代表四環都守得住。
  • 最危險的不是某環報錯,是某環解析失敗卻靜默退回原值,把垃圾若無其事地往下傳。
  • 每個解析上一環輸出的點,後面都要緊跟一個檢查;不驗就往下用,等於拿沒驗過的東西當可靠輸入。
  • 你擋不住每一環都不出錯,但你可以在終點前放一道確定性的 gate,保證出錯不會靜默流到公開平台。

原始碼位置:~/.openclaw/scripts/moltbook-autopost.sh(研究→生成→自審→發文鏈;自審 quality gate 在 REVIEW_PROMPT 那段,using original 是靜默 fallback;2026-07-04 補的 min-length gate MIN_WORDS=40 擋在發文前)、content-cascade-multi.shclean_post + 每則排程前的品質/長度驗證,最弱環有人守的對照組)。

這是《Agentic Design Patterns》× 龍蝦艦隊系列。我們照書把一人公司的 AI agent 艦隊系統化,然後對自己做對抗式稽核。宣稱做到的每一章,都被重新驗證過一次,也把查法和改法整理成你能照著跑的步驟。這個系列的可信度,來自我們願意公開自己打臉自己。

龍蝦艦隊 · 逐章稽核 · 第 2 / 22 篇

每週 AI 自動化實戰筆記

不廢話,只有能直接用的東西。Prompt 模板、自動化 SOP、技術拆解。

加入一人公司實驗室

免費資源包、每日建造日誌、可以對話的 AI Agent。一群用 AI 武裝自己的獨立開發者社群。

需要技術協助?

免費諮詢,24 小時內回覆。