AI-LECTURER 速報課|2026-08-16|約 28 分鐘

答應花$0.5就絕不超支:終端機深度研究代理人 mole 的可信設計拆解

取材:Show HN: Mole – Deep research agent for your terminal(Hacker News(AI 高人氣))
📍 真實場景
陳雅婷,35歲,中小企業行銷企劃主管,平常負責幫公司做市場與競品調查

她習慣打開聊天視窗開啟網頁搜尋功能,一次丟十幾個問題請AI幫忙彙整競品資料和產業報告,準備隔天跟老闆做簡報

😖 卡住的地方:上個月她引用AI整理出的『競品調降價格15%』這個數字去跟老闆報告,結果被追問出處,回頭查原文根本沒有這句話;上上週邊問邊聊忘記設下限,AI訂閱帳單一口氣多刷了原本要留給下個月的預算;最近老闆還想請她拿公司內部客戶名單CSV給AI做分析,她心裡毛毛的,不知道資料會不會被拿去做別的用途
💡 這堂課會帶她拆解一個把『花多少錢』『每句話有沒有出處』『資料會不會外流』三件事都設計進系統裡的AI研究工具,讀完她不只看得懂這種工具的信任基礎在哪,還能自己動手玩兩個小模擬,體感『帳本式預算』和『逐字核對』到底怎麼運作

🧭 這到底是什麼(白話版)

mole 是一支可以裝在自己電腦裡、以靜態執行檔(static binary)把程式運作所需的所有零件都打包進單一檔案裡,不用另外安裝一堆額外套件就能直接執行形式運作的軟體,跑在終端機(terminal)不是滑鼠點來點去的視窗畫面,而是打字下指令跟電腦對話的黑底文字介面,工程師常用它來跑程式裡。你丟給它一個問題,它不是像聊天視窗那樣憑印象生一段話回你,而是像一個真的會動手做事的代理程式(agent)不是被動等你問一句答一句的聊天機器人,而是會自己規劃步驟、動手把事情做完的AI程式:先把問題拆成好幾個小問題,接著去搜尋、去讀網頁內容,再把讀到的東西拆成一條一條的『聲明』,逐條去比對聲明是不是真的能在原文找到,最後才把答案連同出處寫出來給你。它也支援MCP(Model Context Protocol)一種讓不同AI工具、AI代理人之間可以互相溝通、互相呼叫功能的共同規格,好比AI界的『轉接頭』,所以像會寫程式的AI助理,也可以直接呼叫mole幫忙做研究,或是只借用mole『不需要呼叫模型』的那些零件(像是核對引用、算聚合統計)自己接手做推理。

這支工具最特別的地方,是把『別花超過你設的錢』這件事做成真正擋得住的機制,而不是事後統計給你看。你可以在啟動時下一個 --usd 0.50 的參數,代表這次研究最多花五毛美金;每一次要呼叫一次AI模型之前,系統會先在帳本裡『預訂』一筆估計費用,等這次呼叫真的做完了才『結算』實際花了多少,而且這本帳本在資料庫層級就設了『不准出現負數』的規則——換句話說,不是靠程式員自己小心不寫錯,而是資料庫這一層直接不讓你透支。作者測試下來,整批研究任務跑完,超支的機率是0%。

另一個機制解決的是『AI亂掰引用』的老問題。mole從網頁裡萃取出的每一條『聲明』,都必須附上一句直接從原文複製出來的引句;如果這句引句沒辦法在原文裡逐字找到,這條聲明在『萃取』這一步就會被直接丟掉,根本沒機會進到最後的答案裡。就算某條聲明一開始通過了,之後系統還會拿它回頭再對一次原文,萬一發現其實站不住腳,也會在報告裡老實標註『這條查無實據』,而不是悄悄把它藏起來。

如果你想讓它分析自己電腦裡的一份CSV表格或一整個資料夾,mole也不會把你的原始資料整包丟上雲端:AI模型只負責選一個分析假設的樣板、指出要看哪些欄位,實際的SQL一種對資料庫下指令、篩選查詢資料的『白話問句』,例如『幫我把每個月的平均值算出來』查詢是在你自己的電腦上跑,能傳出去給模型看的,只剩下聚合資料(aggregate)把很多筆原始紀錄濃縮成統計後的總覽數字,像是平均值、總筆數、檢定結果,而不是逐筆原始內容,而且還規定每個統計桶至少要蓋到五筆紀錄以上才算數,用一個叫 mole crossings 的指令還能讓你親眼確認到底『流出去』了什麼。

🎯 為什麼值得你花時間

預算是真的擋得住,不是月底才嚇一跳多數AI工具的『用量控制』其實是先花錢、月底再讓你看帳單,出問題只能自己記得設定上限。mole把『先預訂、再結算、帳本禁止負數』這件事寫進資料庫規則裡,你設的上限就是它真正撞到的天花板,不用靠自己盯著別手滑。
每一句話都能回頭查,AI掰不出查無此句的引用傳統聊天視窗生出來的『引用』常常是模型自己腦補的說法,你很難逐一去核對。mole把『這句話是不是原文真的寫的』做成流程裡的一道關卡,通不過就直接被丟掉,即使晚一步才發現站不住腳,報告裡也會老實標註,不會悄悄消失。
分析自己的資料,不用把整包資料交出去很多人不敢把公司內部資料丟給雲端AI,就是怕資料被拿去訓練或外流。mole讓模型只負責『設計怎麼分析』,實際運算留在自己電腦上,傳出去的只有算好的統計數字,還可以用工具指令親眼確認外流了什麼。

⚙️ 它是怎麼運作的

1
拆解問題把你丟進去的一個大問題,拆成好幾個可以個別去查的小問題,之後才知道要分頭搜尋什麼。
2
搜尋與讀取來源針對每個小問題去搜尋,把找到的網頁內容讀進來,準備從裡面找答案的材料。
3
萃取聲明並要求附上原文引句從讀到的內容裡整理出一條條『聲明』,每條聲明都要求附上一句直接從原文複製的引句,這是後面查核的依據。
4
逐字核對,通不過就丟掉拿每條聲明附的引句,回頭去跟原文逐字比對;比對不到一模一樣的句子,這條聲明在這一步就直接被淘汰,不會進到答案裡。
5
比對聲明之間的矛盾留下來的聲明彼此之間如果講法互相打架(比如兩個來源說了不同數字),系統會標出這個矛盾,而不是隨便挑一個當作正確答案。
6
寫出附引用的答案,同時結算這次花費把通過查核、沒有矛盾(或矛盾已標註)的聲明整理成最終答案並附上出處,同時把這一步實際花的錢,在預算帳本裡結算掉。
『聊天視窗+網頁搜尋』跟mole,同樣是查資料,差在哪?
比較項目聊天視窗+網頁搜尋mole
花費控管月底才看帳單,超支自己負責先預訂再結算,資料庫規則禁止透支,設多少就是上限
引用可信度『引用』常是模型腦補,很難逐句查證每條聲明必須附原文逐字引句,比對不到就在萃取階段被丟掉
自己的資料(CSV/資料夾)多半得整包上傳給雲端服務才能分析運算留在本機,只有聚合後的統計數字會被送出去

🛠️ 動手做:動手玩:模擬mole的『預算帳本』與『逐字核對』

  1. 先玩左邊的『預算日誌』:點『執行這一步(先預訂費用)』,每一步會先『預訂』一筆估計費用,再點一次『結算這一步』,看帳本怎麼從『預訂』變成『已花費』。
  2. 留意上限是$0.50——你會在跑到最後一步時看到系統『拒絕執行』,因為剩下的額度不夠付這一步,這就是『設多少就是天花板』的意思。
  3. 再玩右邊的『逐字核對』:點每一條聲明,看系統怎麼拿它附的引句去跟原文比對,猜猜看哪一條會被判定『查無實據』。
  4. 想一想:如果沒有這兩道機制,你平常用的AI工具會在哪個環節讓你吃虧?
👇 下面是活的,直接操作

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 為什麼要把『預算不能是負數』這條規則寫進資料庫,而不是讓程式自己小心檢查?
程式裡寫一個if判斷『餘額夠不夠』看起來也能擋超支,但程式可能中途當機、可能被平行呼叫的兩支流程同時搶餘額而互相沒看到對方剛扣的錢,這種『先檢查、後扣款』的空檔正是超支最常發生的地方。把限制做成資料庫層級的規則,等於是讓資料庫本身拒絕接受會讓餘額變負的操作,不管上層程式邏輯有沒有漏洞,這條線都守得住——這是用『系統的物理限制』取代『程式員的細心』來保證正確性,是工程上很常見的取捨:多一點設計成本,換來不能被繞過的保證。
🔭 『引句對不上就直接丟掉』跟『先留著,等發現有問題再標註』,工程上為什麼要選前者當預設?
先留著再標註,等於讓一條沒查證過的資訊先進到答案裡,讀者要靠後面那行小字才會發現它站不住腳,但很多人根本不會往下細看警語。在萃取階段就擋掉,代價是可能誤刪一些其實正確、只是引句沒抄好的聲明,抓錯跟抓全永遠在拔河。但對一個標榜『可信賴』的研究工具而言,寧可少講一點也不要講錯,是符合它產品定位的選擇——換成一個追求『內容豐富度』優先的工具,這個取捨可能就會反過來。
🔭 同樣一個名字mole,跟Homebrew內建的清理工具、AUR上的SSH穿隧工具撞名,這件事給軟體發布帶來什麼麻煩?
文件裡特別提醒『brew install mole永遠會裝到別人那支』,只能用帶作者名的完整路徑才裝得到正確版本,AUR上也得指名對應套件名而不能只打mole。這代表套件名稱其實是一種有限資源,晚註冊的人得自己想辦法在安裝路徑、套件全名裡加上額外資訊來消歧義,而使用者如果沒注意到這些細節,很可能裝到、甚至覆蓋掉完全不相關的另一支程式——這也是為什麼很多正式專案會在文件最顯眼的地方,把『不是這個』的反例明講出來。

📝 隨堂考(點選答案,立即回饋)

Q1. mole 設定 --usd 0.50 之後,如果研究跑到一半、下一步預估要花的錢會讓總花費超過這個上限,系統會怎麼做?
✅ 文中提到費用是『先預訂、後結算』,且帳本在資料庫層級禁止出現負數,測試下來整體超支比例是0%,代表系統會直接擋下會導致超支的呼叫,而不是先斬後奏或事後追加額度。
Q2. 一條聲明如果附的引句沒辦法在原文裡逐字找到,會發生什麼事?
✅ 文中明確寫到引句對不上原文的聲明,在萃取階段就會被丟棄,還沒機會進到答案裡;已經通過的聲明如果之後被發現站不住腳,才會在報告裡老實標註,這是兩個不同的情境。
Q3. mole 分析你電腦裡的CSV檔案時,實際離開你電腦、傳給AI模型的是什麼?
✅ 文中說模型只負責選假設樣板和欄位名稱,實際SQL查詢在本機執行,能傳出去的只有counts、means、檢定結果這類聚合數字,且規定每個統計桶至少涵蓋五筆紀錄,用mole crossings指令還能檢視實際流出的內容。
Q4. 如果想用Homebrew安裝這篇文章講的mole(深度研究代理程式),文中建議用哪種寫法?
✅ 因為Homebrew官方倉庫裡已經有一支同名的macOS清理工具叫mole,直接打brew install mole永遠會裝到那一支,必須用帶完整作者路徑的寫法才能裝到深度研究代理程式這支。

🃏 翻牌記憶卡(先想答案,再點開對答)

deep research agent(深度研究代理程式)點我翻面
不是被動聊天,而是自己規劃步驟去搜尋、讀取、核對、寫答案的AI程式
預算的『預訂』與『結算』點我翻面
呼叫AI模型前先在帳本上圈住一筆估計費用,做完後再依實際花費結清,帳本禁止出現負數
逐字核對(quote verification)點我翻面
聲明附的引句要能在原文裡一字不差找到,找不到就在萃取階段被丟掉,不會進到答案裡
聚合資料(aggregate)點我翻面
把很多筆原始紀錄濃縮成統計後的總覽數字(如平均值、筆數),而不是逐筆原始內容
MCP點我翻面
一種讓不同AI工具、AI代理人之間可以互相溝通、互相呼叫功能的共同規格

✅ 離開前自測(全勾=這課真的學會了)

0%