Rakazo:自架持久 AI 隊友,模型與沙箱都自己選
Open-source Grok Bot alternative. Choose your own model and sandbox.
秒懂
- 它是什麼?
- Rakazo 是 Apache-2.0 授權的 TypeScript 專案,把聊天機器人做成有記憶、有排程、有電腦可用的常駐代理,可跑在網頁、Electron 桌面與 Expo 行動端。目前仍在 beta,自架門檻主要在 Docker 與環境變數的設定。
- 適合誰用?
- Rakazo 適合已經有 Docker 環境、想讓代理長時間存活並自行掌握模型金鑰的團隊,也適合需要把 bot 跑在自己伺服器上、再從桌面或手機連線的人。若你只要一個單次問答的聊天介面,或無法提供 HTTPS 與獨立沙箱供應商,這套堆疊的維運成本並不划算。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫在最近一天內有新的提交。
- 用什麼語言寫的?
- 主要是 TypeScript(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
它要解決的是「代理活不過一次對話」
多數聊天介面的模型是無狀態的:關掉分頁,上下文就沒了,隔天再問同一件事得從頭交代。Rakazo 把 bot 當成長期存在的對象來設計,README 列出的第一項功能就是「Persistent bots with their own conversations, memory, routines, and history」,每個 bot 有自己的對話、記憶、例行排程與歷史。這代表它不是把一個模型包上介面,而是把排程器、資料庫、沙箱與憑證管理一起放進同一個堆疊。
目標使用者因此不是想試模型的一般使用者,而是願意跑 Docker、願意管理 Postgres 磁碟區的人。專案主頁把它定位成 Grok Bot 的開源替代品,並支援網頁、Electron 桌面與 Expo 行動三種前端,三者共用同一套 API。如果你的需求是「讓一個代理持續盯著某件事、需要時開瀏覽器或終端機動手」,這個形狀才對得上;如果只是要一個問答視窗,這裡的元件數量會顯得過重。
Pi 管模型、沙箱管電腦,Worker 管排程
從 README 的 Stack 段落可以讀出這套系統的骨架:Hono 與 oRPC 提供 API 層,PostgreSQL 搭配 Prisma 存狀態,Better Auth 處理身分,Graphile Worker 負責背景工作,Pi 是模型憑證的接入點,沙箱層則列出 Docker、E2B、Daytona 與 Box。前端是 React 19、Vite 與 Tailwind,再包成 Electron 與 Expo 兩種殼。
資料流大致是:前端呼叫同一組 oRPC 介面,後端把需要等待或週期性執行的工作交給 Graphile Worker,bot 真正要動手的部分則丟進沙箱。README 對沙箱的描述分成兩類,Shared Team Computers 是團隊共用,Private computers 是隔離的個人環境。bot 之間可以互相委派,也可以生出短命的 subagent,這種設計讓一個任務能拆給多個執行單位,代價是排查問題時得同時看排程紀錄與沙箱日誌。
模型憑證走的是 bring-your-own 路線,README 寫明「Bring-your-own model credentials through Pi」,自架時也可以在 .env 裡直接放 OPENROUTER_API_KEY,或在 onboarding 階段連接支援的供應商。外部整合有兩條路:Composio 或 Pipedream Connect 這類託管目錄,以及使用者自行安裝的 Treg、遠端 MCP 與 OpenAPI 工具來源。README 強調連接器憑證在伺服器端加密,且 API 不會把它回傳出去。
用官方映像安裝:四行指令就能開機
最快的一條路不需要 clone,也不需要在本機裝 Node。前置條件是 Docker Engine、Compose plugin、curl 與 OpenSSL,然後:
mkdir -p rakazo && cd rakazo && curl -fsSLO https://raw.githubusercontent.com/elie222/rakazo/main/infra/compose/install-images.sh && bash install-images.sh
安裝腳本會下載 Compose 檔案、產生帶隨機密鑰的 .env,然後啟動整套服務。重跑時既有的 .env 會被保留,這點在升級時很重要。預設映像標籤是 edge,對應 main 分支建置,涵蓋 linux/amd64 與 linux/arm64。啟動後開 http://127.0.0.1:5173 註冊帳號並連接模型,本機 Docker 電腦預設是開啟的。
如果要讓 bot 在關掉瀏覽器後仍繼續運作,就得把後端放到伺服器上,README 給的順序是先準備再啟動:
bash install-images.sh --prepare-only
接著編輯 .env,把 SANDBOX_PROVIDER 設成 box、e2b 或 daytona 並填入對應 API key,同時設定 RAKAZO_HOST=your.domain,再執行一次 bash install-images.sh。對外必須在 5173 埠前面放 HTTPS,桌面端則選 Existing instance 並輸入 https:// 位址。這裡的界線寫得很清楚:公開伺服器必須用 HTTPS,HTTP 只在 loopback 與私有 LAN 位址被接受,link-local 不算。
在受限網路上,官方提供 RAKAZO_DOWNLOAD_BASE 覆寫下載來源,--local 或 RAKAZO_DOWNLOAD_SKIP_EXISTING 跳過既有 Compose 檔案,也可以自行鏡像 bootstrap 腳本。
原始碼開發:版本限制與那幾個不能共用的密鑰
從原始碼跑起來的步驟在 README 裡列得相當細,也暴露了幾個容易踩的點。Node 版本是硬限制:需要 22.x 系列中 22.22.2 以上、24.x,或 26 以上,23.x 與 25.x 不支援。pnpm 需要 9,另外要有 Docker。
cp .env.example .env 之後,要設 POSTGRES_PASSWORD(例如 openssl rand -hex 16),並把同一個值放進 DATABASE_URL。BETTER_AUTH_SECRET、ENCRYPTION_KEY、SCREEN_PROXY_SECRET 必須是各自獨立且夠長的隨機值,Docker 沙箱另外需要專用的 SANDBOX_SUPERVISOR_TOKEN。把這些密鑰重複使用會讓加密與驗證的邊界失效,這不是風格問題。
啟動指令分成資料庫與應用兩段:
docker compose --env-file .env -f infra/compose/docker-compose.yml -f infra/compose/docker-compose.postgres-host.yml up postgres -d pnpm install pnpm db:generate pnpm db:migrate pnpm sandbox:build pnpm dev
預設 Compose 檔案把 Postgres 留在網路內部,postgres-host overlay 才會把 127.0.0.1:5433 開給主機端的 pnpm 與資料庫工具。不想用 overlay 的話,可以用 docker compose ... exec postgres sh -c 'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB"' 開一個 shell。
有個容易被忽略的初始化行為:既有的 pgdata 磁碟區會保留第一次初始化時的使用者、密碼與資料庫名稱,所以 .env 裡的值要跟著留住,或是在原地用 ALTER ROLE 改名。要重建磁碟區得先備份,因為 docker compose down -v 會刪掉所有 Postgres 狀態。
桌面與行動端只是同一個 API 的殼
Electron 與 Expo 應用不是獨立的執行環境,README 直接寫明它們是同一套 Rakazo API 的客戶端。開發時用 pnpm --filter @rakazo/desktop dev 啟動桌面端。
首次啟動會問要把 Rakazo 跑在這台電腦,還是連到既有伺服器。選「這台電腦」時,應用會在自己的資料目錄下用 Docker Compose 安裝並啟動官方映像,所以機器上必須有 Docker Desktop、OrbStack 或 Docker Engine。已安裝的正式版本會把映像標籤釘在自己的版本號,未打包的建置則拉 edge。開發者跑 pnpm dev 時應該選 Existing instance 並填 http://127.0.0.1:5173,而不是讓桌面端自己再起一套。儲存前應用會先檢查 Rakazo 的 health endpoint,之後啟動就直接進那個實例。
還有一點值得先知道:應用關閉後堆疊仍在執行,要停掉得從應用選單選 Stop Local Stack。對長時間執行的 bot 來說這是合理的預設,但對筆電使用者意味著容器會在背景持續佔用資源。
beta 階段的真實代價:託管目錄與 Treg 的計量
README 開頭就說 Rakazo is in beta,這不是客套話。版本節奏可以佐證:v0.1.4、v0.1.5、v0.1.6 分別在 2026 年 9 月 7 日與 8 日發布,兩天內三個版本,介面與設定的變動預期會很頻繁。自架者要接受升級時可能得改 .env。
整合層有兩個實際成本。第一,Composio 與 Pipedream Connect 是託管目錄,需要 COMPOSIO_API_KEY,或 PIPEDREAM_CLIENT_ID、PIPEDREAM_CLIENT_SECRET、PIPEDREAM_PROJECT_ID 三個值;不啟用也可以,使用者仍能從 Integrations 加入 HTTPS MCP server、Treg endpoint 或 OpenAPI JSON 文件。第二,Treg 是按用量計費的,自架者要自備 token,而 README 明確提醒把 Treg 嵌進託管產品轉售的營運方,需要先看 Treg 的整合條款,該條款要求書面協議。
沙箱供應商則是另一筆帳。本機 Docker 免費但受限於單機資源與隔離強度;E2B、Daytona、Box 各自要 API key,等於把執行環境外包。選擇哪一種會直接影響 bot 能開什麼、能跑多久,以及出事時誰看得到日誌。
授權方面,專案採 Apache-2.0,這對自架與修改相對寬鬆,但 Apache-2.0 不涵蓋你接入的第三方服務:Treg、E2B、Composio 各有自己的條款,這些與 Rakazo 的授權是分開的。這裡只陳述條款存在的事實,具體義務請自行確認。
什麼時候該改用 OpenHands 這類單機代理
Rakazo 的差異點在於持久性與多前端。它把 bot 做成有記憶、有排程、能互相委派的常駐對象,並讓同一批 bot 同時被網頁、桌面與手機存取。如果你要的是一個「給它一個任務、它在容器裡改完程式碼就結束」的單機代理,OpenHands 這類工具的形狀更貼近:一次工作階段、一個工作區、結束即釋放,不需要 Postgres 磁碟區、不需要 Graphile Worker、不需要處理 pgdata 的初始化語意。
差別不只在功能清單,而在狀態放在哪裡。Rakazo 假設狀態要活著,所以資料庫是核心元件,備份與升級都繞著它轉;單機代理假設狀態可以丟掉,所以整個環境可以重建。當你的任務是「每天早上摘要一份報告並在有異常時通知我」,持久性是必要條件;當任務是「把這個 repo 的測試修到綠」,持久性只是額外的維運負擔。
反過來說,如果需求包含語音通話與聽寫,Rakazo 的 voice mode 允許自帶 ElevenLabs、OpenAI、Cartesia 或 Fish Audio 的金鑰,這條路在單機代理裡通常要自己接。
先驗證這三件事再決定要不要進場
第一,確認你的 Node 版本落在支援區間,23.x 與 25.x 會直接卡住。第二,確認沙箱策略:本機 Docker 夠不夠,還是必須接 E2B、Daytona 或 Box,這決定你要多管幾組 API key 與多少費用。第三,確認資料庫的復原流程,因為 pgdata 磁碟區一旦建立,使用者與密碼就固定了,而 down -v 會清空一切。
還有一個在 beta 階段特別相關的檢查:安裝腳本在重跑時會保留既有 .env,這對升級是好事,但也意味著舊的密鑰與設定會被沿用。跨版本升級前先讀 docs/self-host.md 的 upgrades 段落,並確認 RAKAZO_HOST 與 SANDBOX_PROVIDER 是否仍符合當前部署形態。
Rakazo 現階段的判斷很具體:它把「代理要活著」這件事做進了架構,也把隨之而來的維運責任一併交給你。願意接這份責任的團隊可以從 install-images.sh 起步,兩天三個版本的節奏則提醒你,把 .env 與 pgdata 的備份當成升級流程的一部分,而不是事後補救。
編輯結論
Rakazo 適合已經有 Docker 環境、想讓代理長時間存活並自行掌握模型金鑰的團隊,也適合需要把 bot 跑在自己伺服器上、再從桌面或手機連線的人。若你只要一個單次問答的聊天介面,或無法提供 HTTPS 與獨立沙箱供應商,這套堆疊的維運成本並不划算。動手前先確認三件事:Node.js 是否落在 22.22.2 以上的 22.x、24.x 或 26+(23.x 與 25.x 不支援),ENCRYPTION_KEY、BETTER_AUTH_SECRET、SANDBOX_SUPERVISOR_TOKEN 是否各自獨立且夠長,以及 pgdata 磁碟區是否已有備份,因為 docker compose down -v 會清掉全部 Postgres 狀態。
社群筆記