10月16日
帳只記了數字,但那鍋湯是誰燉的、給誰喝的,紙上從來沒寫
一個在 GitHub 上爆紅的逆向工程開源專案,與 1982 年的會計模型,被翻譯成一張家庭餐桌上的帳、冰箱裡的存量與每天開火的那些事件。
10 月 14 日,工程師社羣掘金上出現一篇長文,講一個叫 REA 的東西。文章說,很多人只知道 REA 是 GitHub 上破十二萬星的「Reverse Engineer Anything」專案,卻少有人知道它的思想源頭,可以一路追溯到 1982 年,密西根州立大學的 William E. McCarthy 教授在《The Accounting Review》上提出的 Resources-Events-Agents 模型。
一個會計模型,跟你的餐桌有什麼關係?關係比你想的大。
傳統記帳法漏掉的那些事,你家廚房每天都在發生
McCarthy 在那篇論文裡講了一個很樸素的道理:傳統複式記帳法是為紙本帳簿設計的,它記下了結果,卻丟掉了過程。
舉例來說,一筆銷售,會計分錄只寫「借:應收帳款一千,貸:主營業務收入一千」。誰賣的?賣給誰?從哪個倉庫出貨?幾點幾分成交?這些要嘛散落在各種單據裡,要嘛根本沒人記。兩個數字,把整個活生生的經濟現實壓平了。
你家其實有一本一模一樣的帳。月底看帳單,這個月夥食費一萬二。但誰去買的菜?在哪個市場?那天為什麼突然買了一整隻雞?週三那頓為什麼叫了外送?帳單上一個數字,後面那些傍晚的市場、油鍋的聲音、雨天不想出門的疲憊,全都不見了。
這跟 家裡那本帳與照樣要開火的晚餐 裡聊過的是同一件事:數字會說謊,因為它太誠實,誠實到只剩骨架。
REA 的答案:別記投影,記現實本身
McCarthy 的解法很有意思。他說,與其記錄會計分錄這種「抽象後的投影」,不如直接記錄經濟現實本身。而所有經濟活動,都能拆成三種最基本的東西。
資源:你擁有且可控、有價值的東西。現金、庫存、設備。有趣的是,論文特別點名,應收帳款不算資源,它只是「銷售」和「收款」兩件事時間差產生的派生概念,資料夠齊,隨時算得出來。換到廚房裡:冰箱裡的高麗菜、米缸裡的米、櫃子深處那罐還沒開的幹貝,是資源。「欠阿嬤一頓飯」不算,那是人情帳。
事件:讓資源數量或狀態變化的活動。採購、銷售、付款、入庫。文章裡說,事件是整個模型的核心,所有變化都由事件驅動。你的廚房也一樣:週六上午的去市場是事件,那鍋滷肉下鍋是事件,冷凍庫裡喫掉一半的雞高湯是事件。米缸會變淺,從來不是時間造成的,是那一頓頒一頓的粥。
參與者:參與事件的人或組織,內部的、外部的都算。你家誰負責買菜、誰負責開火、誰永遠只在開飯時出現,這些角色撐起了每一個事件。
這三種東西再用關係串起來,就成了完整的語意網路。文章舉了幾種關係,其中「二元關係」最像做菜:有得必有失,一個資源增加的事件,必然對應另一個資源減少的事件。銷售讓庫存變少,收款讓現金變多。廚房版本更直白:庫存的老母雞變少,餐桌上的那鍋湯變多。一失一得,兩件事互相成全。
文章還說,這套模型最厲害的地方,在於它通用:製造業、零售業、銀行業,表面上天差地遠,底層都是資源在事件驅動下的流轉。你的廚房、公司樓下的便當店、市場裡的魚攤,又何嘗不是。
四十四年後,這套想法變成了一個工具
時間拉到 2026 年 10 月。文章說,爆紅的 Reverse Engineer Anything 專案,本質上是把 1982 年那套建模思想,用 AI 工具鏈落地了。它透過 MCP 協定,把 Ghidra、Hopper、IDA 這些專業逆向工具的能力開放給 AI 編程代理,讓代理照「證據、推理、驗證」的循環去拆解目標系統。
它的對應方式讀起來幾乎可以直接搬到餐桌旁:系統裡的資料結構是資源,函式呼叫和狀態變化是事件,各個模組和角色是參與者。
傳統逆向工程是工程師拿著工具手動找線索,靠經驗猜邏輯;REA 讓代理照著框架系統性地收集證據,每一步推理都有代碼、記憶體、網路封包撐著,最後輸出的東西已經有人替你寫好了註解。這有點像 那顆封存二十六年的晶片與你家那缸還在等的老醬:拆解與等待,各自有各自的功夫,但都得一步一步來,急不得。
一句話,留在廚房裡用
原文用一句話總結這兩層 REA 的關係:經典 REA 提供了「應該拆成什麼」的框架,現代 REA 提供了「怎麼拆」的工具。
翻譯到你家:帳單告訴你花了多少,但它不會告訴你,那個月的湯為什麼特別稠,是因為誰回家了。
下次記帳的時候,不妨在數字旁邊多寫一行小字:跟誰喫、為什麼煮、那天下了沒有雨。資源、事件、參與者。四十四年前一位會計學教授想通的道理,一張餐桌早就示範過了,只是從來沒人把它記進帳本裡。