影片筆記:AI 明明拿到正確資料,為什麼還會亂編?
一句話總結
影片分享了一個實戰除錯案例:作者建立每日 AI 趨勢分析 Agent 時,發現即使抓取了正確的原始資料,模型(MiniMax M2.7)仍會產生「上下文忽視」與「先前上下文幻覺」而亂編報告;透過切換強模型(GPT 5.4)解決準確性問題,並進一步將資料抓取方式從「控制瀏覽器」改為「Python + CDP 直接提取」,大幅提升了系統的穩定性與執行速度。
核心重點
模型幻覺的成因:
- 上下文忽視(Context Neglect):模型接收了新資料但選擇忽略。
- 先前上下文幻覺(Hallucination from Prior):模型輸出訓練資料中記憶的舊內容,而非當前提供的資料。
- 弱指令遵循:小型模型或蒸餾模型(Distilled Models)難以在長上下文壓制先前知識,即使提示詞要求「僅使用快照資料」也無法有效執行。
瀏覽器自動化的局限性:
- 讓 AI Agent 直接控制瀏覽器(如 OpenClaw 控制 Chrome)雖然能解決登入與反爬蟲問題,但執行速度慢、不穩定,且容易出現超時錯誤。
- Chrome 136 版本起出於安全理由,遠端偵錯端口與 pipe 無法再附加至預設使用者目錄,增加了設定複雜度。
優化方案:去瀏覽器化資料抓取:
- 參考 Hermes Agent 的做法,改用 Python 結合 Chrome DevTools Protocol (CDP) 透過 WebSocket 直接連接瀏覽器。
- 執行 JavaScript 直接提取資料,繞過瀏覽器自動化操作的冗餘步驟。
- 結果:模型僅負責總結分析,資料來源層面不再依賴瀏覽器,穩定性與速度大幅提升(約 10 倍)。
詳細大綱
1. 背景與需求
- 目標:作為 AI 頻道創作者,需每日清晨自動從三個來源收集資料以選擇影片題材:
X 上的熱門 AI 貼文。
GitHub Trending 上的 AI 專案。
Google Trends 上的相關趨勢活動。
- 系統架構:平行運行兩個 AI Agent 進行測試:
- OpenClaw:初期嘗試控制瀏覽器抓取資料。
- Hermes Agent:透過自建技能(Skill)完成報告,表現穩定。
2. 第一階段問題:資料正確但報告錯誤(幻覺問題)
- 初始設定與問題:
- OpenClaw 因假 IP 與 Web fetch 限制無法獲取最新 X 資料,故改為控制已登入 X 的 Chrome 瀏覽器。
- 設定步驟包括啟用 Chrome 遠端偵錯、修改設定檔建立
xbrowserprofile、使用非預設使用者資料目錄(因 Chrome 136 安全變更)。 - 現象:OpenClaw 快速回傳結果,但報告內容錯誤(如出現加密貨幣專案,卻缺失熱門的 Andrej Karpathy skills 與 Claudemem)。
- 確認:檢查原始快照(Snapshot),確認熱門專案確實存在於抓取資料中。結論為模型「撒謊」。
- 原因分析:
- 使用模型為 MiniMax M2.7。
- 上下文忽視:模型忽略新提供的快照資料。
- 先前上下文幻覺:模型基於訓練資料中的記憶輸出。例如,某些專案長期佔據 Trending 並大量出現在訓練資料中,模型看到 "GitHub Trending" 便自動關聯熟悉名稱。
- 長上下文注意力衰減:快照資料過長,模型「懶惰」地直接使用預設答案。
- 弱指令遵循:小模型與蒸餾模型無法精確壓制先前知識。
- 解決方案:
- 將模型從 MiniMax M2.7 切換至 GPT 5.4。
- 結果:GPT 5.4 在相同提示詞與資料下,產生了完全正確的報告。
- 觀察:ChatGPT、Claude 與 Gemini 等強模型在閱讀上下文與壓制假設方面優於小模型。
3. 第二階段問題:系統上線後的穩定性問題
- 問題現象:
- 將 OpenClaw 搭配 GPT 5.4 上線排程任務後,次日出現超時錯誤(Timeout Error),未獲取 X 資料。
- 背景中 Chrome 頁面實際已開啟,但系統無法穩定運作。
- 除錯與對比:
- 初期不斷調整提示詞與設定導致混亂。
- 對照組 Hermes Agent 持續穩定輸出報告,且仍使用 MiniMax M2.7。
- 推論:問題不在模型,而在執行方法(瀏覽器控制的不穩定性)。
- 方法改進(移植 Hermes 方法):
- 分析 Hermes 的技能(Skill),拆解其操作邏輯。
- Hermes 的方法:使用 Python 加 WebSockets 連接 CDP(Chrome DevTools Protocol),執行 JavaScript 直接提取推文資料。優點是快速、穩定、不依賴瀏覽器操作。
- OpenClaw 的新流程:
X 資料:由 Python 程式透過 CDP 與 Chrome 互動收集。
GitHub Trending:直接使用 HTTP 請求加正規表示式(Regular Expressions)收集。
Google Trends:使用 pytrends 庫收集。
- 改進效果:
- 資料來源層面不再依賴昂貴的瀏覽器自動化。
- 模型僅負責總結與分析。
- 穩定性提升,執行速度大幅改善(10 倍提升)。
4. 總結與反思
瀏覽器控制的不穩定性:AI Agent 直接控制瀏覽器方法不穩定且拖慢速度。
模型選擇的重要性:關鍵任務不應在模型上節省成本,小型模型與蒸餾模型容易犯錯,應使用強模型。
跨 Agent 學習:當一個 Agent 無法良好執行任務時,可讓其學習另一個 Agent 的方法(「他山之石,可以攻玉」)。
工具 / 模型 / 名詞整理
- AI Agent 平台/工具:
- OpenClaw
- Hermes Agent
- AI 模型:
- MiniMax M2.7
- GPT 5.4
- Claude
- ChatGPT
- Gemini
- 瀏覽器與技術協議:
- Chrome(提及版本 Chrome 136)
- CDP (Chrome DevTools Protocol)
- WebSockets
- JavaScript
- 資料來源平台:
- X(原 Twitter)
- GitHub Trending
- Google Trends
- 程式庫/技術:
- Python
pytrends庫- 正規表示式(Regular Expressions)
- HTTP 請求
- 其他專有名詞:
- Snapshot(原始資料快照)
- Skill(技能)
- Context Neglect(上下文忽視)
- Hallucination from Prior(先前上下文幻覺)
- Distillation Techniques(蒸餾技術)
- Remote Debugging(遠端偵錯)
- User Data Dir(使用者資料目錄)
操作流程整理
流程一:OpenClaw 初期設定(瀏覽器控制法)
啟用 Chrome 遠端偵錯(Remote Debugging)。
修改 OpenClaw 設定檔,建立名為 xbrowser 的 Profile。
設定適當的 Port。
使用指令以偵錯模式啟動 Chrome。
在該 Chrome 中登入 X 帳號。
驗證 OpenClaw 是否能接管頁面並抓取資料。
*缺點*:易超時、速度慢、模型易產生幻覺。
流程二:優化後的資料抓取流程(Python + CDP 法)
X 資料抓取:
- 使用 Python 程式。
- 透過 WebSocket 連接 CDP(Chrome DevTools Protocol)。
- 執行 JavaScript 直接提取推文資料。
GitHub Trending 抓取:
- 直接使用 HTTP 請求。
- 使用正規表示式(Regular Expressions)解析並提取資料。
Google Trends 抓取:
- 使用
pytrends庫進行收集。
模型分析:
- 將上述收集的資料輸入給 AI 模型(如 GPT 5.4)。
- 模型僅負責總結與分析,生成最終報告。
值得注意的限制或風險
Chrome 版本變更影響:Chrome 136 起出於安全理由,遠端偵錯端口與 pipe 無法再附加至預設使用者目錄(Default User Directory),必須使用非預設的使用者資料目錄,增加了環境設定的複雜性。
小模型與蒸餾模型的指令遵循能力:MiniMax M2.7 等小模型或蒸餾模型在面對長上下文時,難以執行「壓制先前知識」的指令,容易產生上下文忽視與幻覺。
瀏覽器自動化的資源消耗:依賴瀏覽器自動化(Browser Automation)進行資料抓取不僅速度慢,且容易因瀏覽器狀態、超時或反爬蟲機制導致系統不穩定。
模型成本與效能的權衡:雖然強模型(如 GPT 5.4)能解決準確性問題,但需注意其成本;而小模型雖便宜但可能在關鍵任務中失效。
逐字稿辨識疑點
- Andrej Karpathy skills:逐字稿中出現此名稱,疑為特定專案或技能名稱,需查證是否為正確拼寫或特定內部稱呼。
- Claudemem:逐字稿中出現此名稱,疑為特定專案名稱,需查證是否為正確拼寫(如是否為 ClaudeMem 或其他變體)。
- GPT 5.4:逐字稿中明確提及此模型版本,需查證是否為實際存在的模型版本或口誤。
- MiniMax M2.7:逐字稿中明確提及此模型版本,需查證是否為實際存在的模型版本。
- Chrome 136:逐字稿中提及此版本變更,需查證 Chrome 是否已發布至該版本或為預測/口誤。
- x browser:設定檔中的 Profile 名稱,疑為拼寫錯誤或特定命名(如是否應為
xbrowser或x-browser)。
可延伸追問
對於需要處理長上下文且對準確性要求極高的任務,除了切換強模型外,是否有其他 Prompt Engineering 技巧可以減少「上下文忽視」?
使用 CDP(Chrome DevTools Protocol)直接提取資料時,如何處理動態加載(Lazy Loading)或需要滾動頁面才能顯示的內容?
在 OpenClaw 或類似 Agent 框架中,如何最佳化 Python 腳本與 Agent 核心之間的通訊效率,以進一步降低延遲?
蒸餾技術(Distillation Techniques)訓練出的模型,在哪些特定任務場景下最容易出現「先前上下文幻覺」?
逐字稿時間軸
右側可一路往下捲;左側影片框會固定。點擊時間戳會讓左側影片跳到對應秒數。