Algonius
全部文章
·作者 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。