跳到主要内容

架構

GenKaKu 在正式環境中執行的一切,不是靜態網站,就是節點行程。請求路徑上沒有任何 GenKaKu 伺服器。

套件​

套件角色
@genkaku/protocol鏈上綁定、託管計費、libp2p sidecar、Ollama bridge
@genkaku/dsh-runtime兩個外掛共用的 adapter
@genkaku/dsh-worker-plugin提供本機模型
@genkaku/dsh-user-plugin取用網路模型
@genkaku/seedlibp2p relay 與節點發現服務
@genkaku/adminseed 主機的營運者主控台

協議核心不依賴 DeepSeek Harness。這是刻意的:另一個 adapter 不應該需要動到它。

鏈上​

Base Sepolia,chain ID 84532:

合約位址
WorkerRegistry0xFbE9FF497dC24bD69d13E4201418938Df7435Ff6
JobEscrow0x8175df796A659681009BeDa4609a3cFe9d281D82
MockUSDC(僅測試)0xEb33DFC0424810039337a38510ef522e9E7F9727

WorkerRegistry 以錢包為單位儲存:peer ID digest、一個 bytes32 policy hash、選填的 locator,以及一個啟用旗標。JobEscrow 持有每個工作階段的 USDC、驗證 worker 的收據簽章、 以 99/1 分潤,並把金額記入 worker 的可提領餘額。1% 的費用是合約常數。

寫入僅限測試網。主網路徑會直接拋出錯誤:正規的 USDC 與多簽金庫是另一次上線,不是一個設定 旗標。

資料平面​

Worker 提供這些 libp2p 協議:

/genkaku/open/0 session open
/genkaku/token/0 auth token
/genkaku/receipt/0 signed ledger increments
/genkaku/settle/0 co-sign a settlement
/genkaku/offers/0 offer board
/genkaku/policy/0 policy document
/genkaku/hello/0 identity, wallet proof, quote

每個 handler 都接受經過 relay 的連線(runOnLimitedConnection)。因此一次工作階段要嘛是直接 連線,要嘛由 relay 承載,兩者都是一等公民。libp2p 會加密串流,所以 relay 轉發的是密文,只 看得到中繼資料。

這個版本沒有 DCUtR/NAT 穿透。位於對稱 NAT 後方的節點只能使用 relay,否則就是不可觸及。

發現​

兩條獨立的路徑:

  1. 鏈上目錄 — WorkerRegistry 的事件提供錢包、peer ID digest 與選填的 locator。外掛透過 公開 RPC 讀取日誌,並附上一份 fallback 清單(base-sepolia.gateway.tenderly.co 排第一, sepolia.base.org 排最後,因為它把 eth_getLogs 限制在 200 個區塊)。
  2. Seed relay — https://staging.genkaku.app/seed 以 GET /peers 回應當下確實有效的 multiaddr,並為無法直接連線的節點提供 circuit relay。

Seed 位址已寫死在 protocol 套件中,但可以用 GENKAKU_BOOTSTRAP_SEEDS(以逗號分隔的 multiaddr)覆寫。

計費模型​

pricePerHour : 6-decimal USDC, set by the worker
unit : 1 minute (60 units per hour)
billed : ceil(elapsed / 1min) × ceil(pricePerHour / 60)

進位每小時只發生一次,而不是每個 tick,所以使用者永遠不會付超過報價的每小時價格,而 worker 未計費的曝險最多就是一分鐘。

一次付費工作階段是兩筆交易:

  1. openEscrow(worker, pricePerHour) — 使用者 → JobEscrow,
  2. settle(...) — JobEscrow → worker(99%)+ 金庫(1%),餘額退還。

報價為 0 時完全不經託管即提供服務,這就是為什麼免費的 worker 可以跑在一台完全沒有 ETH 的 機器上。

營運者介面​

  • 面板 — 外掛在 DeepSeek Harness 中的自有 UI:模型、價格、錢包、提領、付款、手動 worker。
  • 狀態伺服器 — 127.0.0.1 上的本機 HTTP 介面,使用 47821–47826 中第一個空閒的連接埠, 供面板與 client adapter 使用。
  • Seed admin — seed VM 上另一個獨立的主控台,位於 Caddy 之後的 /admin,讀取 seed 統計 與鏈上日誌。它不持有任何錢包金鑰,也不移動任何資金。

刻意不存在的東西​

  • 沒有代幣、沒有質押、沒有信用分數代幣。
  • 沒有 orchestrator 伺服器、沒有提示詞資料庫。
  • 沒有自動內容過濾——協議沒有在 worker 看到提示詞之前檢查它的 hook。
  • 沒有主網寫入路徑。