為什麼 Algonius 的每個元件都是 MCP 服務
我們本可以做成一個大而全的交易機器人。但我們把它拆成了四個 tool server —— 換來的是一套可以逐個審計、逐個替換、逐個複用的系統。
2026 年 9 月更新: 本文描述的是 7 月時的開源 tool server。此後
algonius-agent與algonius-supervisor已封存,官方策略運行在另一套未開源的生產系統上;algonius-browser與algonius-wallet仍在維護。
大多數交易機器人是一個單體程式。你給它 API key 和設定檔,它跑起一個循環,而你能看到的全部介面,就是作者當初決定列印的那些日誌。凌晨三點出問題的時候,你讀的是別人的控制流。
我們選了另一條路。Algonius 是四個獨立的服務,每一個都透過 Model Context Protocol 對外暴露自己的能力。
四條邊界
這個拆分不是隨手劃的。每個服務掌管的資源,失效方式本質上不同:
- algonius-browser 掌管感知。頁面改版時它會失效。
- algonius-agent 掌管決策。策略判斷錯誤時它會失效。
- algonius-wallet 掌管金鑰與結算。鏈上壅塞時它會失效——而如果金鑰洩漏,則是災難性失效。
- algonius-supervisor 掌管可用性。行程悄無聲息掛掉時它會失效。
把四者塞進一個二進位檔,意味著只有一個爆炸半徑。拆開之後,錢包可以強制執行一條策略引擎無論如何都繞不過去的額度限制——因為策略引擎在協議邊界的另一側,它只能「請求」,不能「命令」。
金鑰不會進入模型上下文
這一點值得反覆強調。algonius-wallet 執行一個獨立的 native host 行程來保管簽名材料。模型——不管你接的是哪個模型——看到的只是一份工具清單:
{
"tools": [
{ "name": "get_balance", "description": "讀取某條鏈上的餘額" },
{ "name": "get_quote", "description": "執行前先對兌換報價" },
{ "name": "swap", "description": "在策略允許範圍內執行兌換" }
]
}
它永遠看不到私鑰,因為私鑰不是一個工具。一個被惡意代幣描述注入了提示詞的 agent,最壞情況下也只能在你設定的額度內呼叫 swap。它無法洩漏一件從未交給它的東西。
附帶的好處:每個元件單獨拿出來都好用
因為邊界是協議而不是函式呼叫,每個服務在交易閉環之外也完全能獨立使用。algonius-browser 是最明顯的例子——今天用它的人裡,大多數從來沒在我們這裡下過單。他們只是想要一個能驅動真實瀏覽器的 MCP 服務,而我們恰好做了一個,因為我們自己的 agent 需要一雙眼睛。
這就是我們做的取捨:多一點維運面,換來一套每條邊界都可檢查、每個元件都可以換成你自己實作的系統。
從哪個元件開始都行。各儲存庫的授權不同,複用前請先逐一確認。