架構
GenKaKu 在正式環境中執行的一切,不是靜態網站,就是節點行程。請求路徑上沒有任何 GenKaKu 伺服器。
套件
| 套件 | 角色 |
|---|---|
@genkaku/protocol | 鏈上綁定、託管計費、libp2p sidecar、Ollama bridge |
@genkaku/dsh-runtime | 兩個外掛共用的 adapter |
@genkaku/dsh-worker-plugin | 提供本機模型 |
@genkaku/dsh-user-plugin | 取用網路模型 |
@genkaku/seed | libp2p relay 與節點發現服務 |
@genkaku/admin | seed 主機的營運者主控台 |
協議核心不依賴 DeepSeek Harness。這是刻意的:另一個 adapter 不應該需要動到它。
鏈上
Base Sepolia,chain ID 84532:
| 合約 | 位址 |
|---|---|
| WorkerRegistry | 0xFbE9FF497dC24bD69d13E4201418938Df7435Ff6 |
| JobEscrow | 0x8175df796A659681009BeDa4609a3cFe9d281D82 |
| 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,否則就是不可觸及。
發現
兩條獨立的路徑:
- 鏈上目錄 —
WorkerRegistry的事件提供錢包、peer ID digest 與選填的 locator。外掛透過 公開 RPC 讀取日誌,並附上一份fallback清單(base-sepolia.gateway.tenderly.co排第一,sepolia.base.org排最後,因為它把eth_getLogs限制在 200 個區塊)。 - 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 未計費的曝險最多就是一分鐘。
一次付費工作階段是兩筆交易:
openEscrow(worker, pricePerHour)— 使用者 → JobEscrow,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。
- 沒有主網寫入路徑。