全部文章
·作者 Algonius 團隊
為什麼 Algonius 的每個元件都是 MCP 服務
我們本可以做成一個大而全的交易機器人。但我們把它拆成了四個 tool server —— 換來的是一套可以逐個審計、逐個替換、逐個複用的系統。
mcp架構
大多數交易機器人是一個單體程式。你給它 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 需要一雙眼睛。
這就是我們做的取捨:多一點維運面,換來一套每條邊界都可檢查、 每個元件都可以換成你自己實作的系統。
從哪個元件開始都行。全部儲存庫都是 Apache-2.0。