elie222/rakazo · 上手攻略

  • 仓库:elie222/rakazo
  • 链接:https://github.com/elie222/rakazo
  • 分类:engineering / agent(自托管 AI 助手全栈 · TypeScript)
  • 作者:spark
  • 更新:2026-11-04

一、它是什么

Rakazo 是一个开源、自托管的 AI agent 平台,用 TypeScript 写的完整全栈应用。它同时是两种东西:

  1. 持久化机器人(persistent bots)——每个 bot 有自己的会话、记忆、routine(例行任务)和历史记录,机器人之间还能互相委派(delegate to peer bots),或派发短命 subagent。
  2. 自托管 AI 助手——跑在你自己的机器上,模型凭据和"电脑"(沙箱)都自己选。

官方定位是 "Open-source Grok Bot alternative",README 里同时列了它对标的多个产品:Grok Bot、Meta Muse、OpenAI Dots、Instinct、OpenClaw、Hermes Agent、Claude Duet。

形态非常全:Web 版、Electron 桌面版、iPhone(App Store)和 Android(Google Play)都有客户端,全部是同一套 Rakazo API 的前端。

技术栈: - 前端:React 19 + Vite + Tailwind CSS - 客户端:Electron(桌面)+ Expo(移动) - 服务端:Hono + oRPC - 数据:PostgreSQL + Prisma - 认证:Better Auth - 异步任务:Graphile Worker - 模型接入:Pi(bring-your-own-model credentials) - 沙箱:Docker、E2B、Daytona、CreateOS、Boat、以及本机可信电脑 - 集成:Composio、Pipedream Connect、远程 MCP、OpenAPI 工具源

许可与版本:Apache-2.0;最新 release v0.5.0(仓库 package.json 里版本还是 0.1.0,以 release tag 为准)。README 明确标注处于 beta 阶段("Rakazo is in beta"),卡片里 maturity 标为 production——这个差异需要注意:产品形态完整,但仍在 beta。最近提交 2026-11-03,Stars 约 6.8k。

二、它解决什么问题

核心痛点:主流 AI 助手(ChatGPT、Claude、Grok)把模型、算力沙箱、工具集成全部锁在厂商云端里。你无法做到:

  • 自己选模型(要 BYOK 走 OpenRouter 或本地模型)
  • 自己选"agent 在哪台电脑上干活"(本地 Docker / E2B / Daytona / CreateOS / Boat / Railway)
  • 数据不出自己的机器
  • 账号、记忆、历史全部自持

Rakazo 把这些打包成一个可 docker compose 起来的完整产品:

能力 说明
持久化 bot 每个 bot 独立会话 + 记忆 + routine + 历史,关掉前端也在跑
语音模式 说回复、口述、打电话给 bot;自带 ElevenLabs / OpenAI / Cartesia / Fish Audio key,或用 Mac 服务器上已装的 voice
共享 Team Computer + 隔离的 Private computer 团队共享算力 vs 每个 bot 独占沙箱
浏览器 / 终端 / 文件 / 图形桌面访问 agent 能真的操作 GUI,不只是调 API
Bot 互相委派 bot 之间可以派活,也可以派短命 subagent
模型凭据自带 通过 Pi 接入任意支持模型
应用集成 Composio / Pipedream Connect,外加用户自装的 Treg、远程 MCP、OpenAPI 工具源
多端客户端 Web / Electron / iOS / Android,同一套 API

三、快速安装

路径 A:发布镜像(无需 clone,最省事)

前置:Docker Engine 26+(需要 API 1.45+ 以支持 bot home volume 子路径)、Compose 插件、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

安装脚本会:下载 docker-compose.images.yml 与 .env.images.example → 生成含随机密钥的 .env → 拉取镜像并启动。重跑时会保留已有的 .env。

然后打开 http://127.0.0.1:5173,注册账号,连接模型。

镜像 tag 说明:默认是 edge(main 分支构建),多架构(linux/amd64 + linux/arm64)。在有稳定 release 之前不要假设 latest 存在——官方原话是 "Do not assume latest is present until a stable release exists"。

受限网络环境(下载被墙/被拦):

export RAKAZO_DOWNLOAD_BASE="https://your-mirror.example.com/rakazo"
bash install-images.sh --local          # 跳过已存在的 Compose 文件
# 或 RAKAZO_DOWNLOAD_SKIP_EXISTING=1
# 也可自行镜像 bootstrap 脚本 URL

先准备配置再启动:

bash install-images.sh --prepare-only
# 编辑 .env:SANDBOX_PROVIDER=boat(或 e2b / daytona / createos)及其 API key、RAKAZO_HOST=your.domain
bash install-images.sh

路径 B:源码 checkout(要改代码时)

前置:Node.js 22.22.2+(22.x 线)/ 24.x / 26+、pnpm 9、Docker。⚠️ Node 23.x 和 25.x 不支持。package.json 里 "packageManager": "pnpm@9.15.0"。

git clone https://github.com/elie222/rakazo.git
cd rakazo
cp .env.example .env

.env 关键项(每个密钥必须独立、长随机、互不复用):

# 两个不同的密码
POSTGRES_PASSWORD=$(openssl rand -hex 16)
POSTGRES_APP_PASSWORD=$(openssl rand -hex 16)

# 分别填入
DATABASE_URL=postgresql://...
DATABASE_MIGRATION_URL=postgresql://...

BETTER_AUTH_SECRET=<独立长随机值>
ENCRYPTION_KEY=<64 hex,独立>
SCREEN_PROXY_SECRET=<独立长随机值>
SANDBOX_SUPERVISOR_TOKEN=<Docker 沙箱专用,独立>

# 模型
OPENROUTER_API_KEY=sk-...   # 可选,也可以在 onboarding 时连接模型提供商

数据库角色设计值得注意:应用以自己的 rakazo_app login 连接(受行级安全 RLS 保护),迁移以 owner 身份运行。

开发模式(Docker Desktop)额外设:

SANDBOX_CONTROL_VIA_LOOPBACK=true   # 让 supervisor 自动发现 Docker Desktop 的 user socket
pnpm install
pnpm sandbox:build
pnpm dev

pnpm dev 会优先用 DATABASE_URL 里的 Postgres;连不上就用 Docker 起一个本地 rakazo-dev-postgres 容器(所有 checkout 复用同一个),自动应用迁移并生成 Prisma client。端口被占时自动往下一个空闲块并打印 URL,可用 WEB_PORT / API_PORT 手动指定。

开发期跑 Postgres 而不用 Compose:

docker compose --env-file .env \
 -f infra/compose/docker-compose.yml \
 -f infra/compose/docker-compose.postgres-host.yml \
 up postgres -d     # 发布在 127.0.0.1:5433

路径 C:Electron 桌面端

pnpm --filter @rakazo/desktop dev

首次运行会问:在这台电脑上运行 Rakazo,还是连接到已有服务器。选 "This computer" 会用 Docker Compose 装并跑发布镜像(放在 app data 目录,默认端口 45173,可以和 pnpm dev 的 5173 并存)。选 "Existing instance" 则填已有地址(如 http://127.0.0.1:5173)。

路径 D:VPS / 生产

同一套 install-images.sh 装在 VPS 上,然后在桌面/移动端/浏览器里连。前面挂 HTTPS(Caddy),并把三个公开 origin 都设成该 HTTPS URL:BETTER_AUTH_URL、WEB_ORIGIN、API_URL,以及 RAKAZO_HOST 设成主机名。

app.example.com {
    reverse_proxy 127.0.0.1:5173
}

⚠️ 公开服务器必须用 HTTPS;HTTP 只接受 loopback 和私有 LAN 地址(不接受 link-local)。

Railway 有一键模板:https://railway.com/new/template/rakazo-template

四、核心用法

4.1 沙箱提供方(agent 在哪干活)

默认 SANDBOX_PROVIDER=docker(本机 Docker 沙箱,注册即用,不需要 E2B 账号)。可切换:

Provider 必填配置 默认值 / 备注
docker 无 本机,默认
e2b E2B_API_KEY
novita 对应 API key
daytona 对应 API key
createos CREATEOS_SANDBOX_API_KEY base https://api.sb.createos.sh,shape s-2vcpu-2gb,rootfs desktop:1
boat 对应 API key
railway RAILWAY_API_TOKEN + RAILWAY_ENVIRONMENT_ID(API 和 worker 都要) 见下方注意
本机可信电脑 — 桌面端 "This computer"

⚠️ 发布镜像的 Compose 栈对所有 provider 都强制要求 SANDBOX_SUPERVISOR_TOKEN,留空会 fail closed(compose up 直接失败)。

Railway 细节:需要 PRIVATE 网络,Railway 公开域名才能提供屏幕。用最窄的 API token——优先 project token,该 provider 目前用 bearer 认证,所以要用 team/workspace token 而非个人账号 token。建议给沙箱单独开一个 Railway project(或至少独立 environment),与 app、数据库分开。新电脑起在 Railway 默认区域,用 RAILWAY_SANDBOX_REGION(如 asia-southeast1-eqsg3a)拉近 API 位置。工作区导出拒绝超过 64 MiB 的文件且不截断,用 RAILWAY_MAX_WORKSPACE_FILE_BYTES 调整。

4.2 模型接入

OPENROUTER_API_KEY 一填就能用,或在 onboarding 界面里连接支持的模型提供商(含本地模型、自建模型服务器,详见 docs/self-host-models.md)。模型凭据通过 Pi 接入。

4.3 集成与工具源

COMPOSIO_API_KEY=<key>                       # Composio 应用目录
PIPEDREAM_CLIENT_ID=<id>
PIPEDREAM_CLIENT_SECRET=<secret>
PIPEDREAM_PROJECT_ID=<id>                    # Pipedream Connect 三件套

托管应用目录是可选的。不启用任何一个目录,用户依然可以在 Integrations 里添加 HTTPS MCP 服务器、Treg endpoint 或 OpenAPI JSON 文档。

⚠️ Treg 是按量计费的:自托管者自带自己的 Treg token;如果运营方把 Treg 嵌进自己的托管产品,需要审查 Treg 的集成条款(要求书面协议才允许托管转售)。

连接器凭据在服务端加密,永不通过 API 返回。

4.4 常用检查命令

pnpm lint
pnpm check
pnpm test
pnpm test:integration
pnpm test:e2e

更多运维文档:docs/self-host-configuration.md(配置分发、运行限额、数据库、出站代理)、docs/self-host-secrets.md(密钥清单)、docs/self-host-observability.md(日志、错误报告、trace、安全事件、告警)、docs/self-host-audit-log.md(谁在哪个组织做了什么、保留期、导出、SIEM 转发)、docs/fleet-management.md(管理 bot 的 bot)。

4.5 客户端与多语言

Electron 和 Expo 应用都是同一套 Rakazo API 的客户端。Web / Electron 支持 English、Deutsch、한국어、Türkçe、हिन्दी、Português (Brasil)、简体中文、繁體中文、Español、Русский、Français、עברית、Nederlands、日本語(Settings → Language)。Expo 应用内含其中 7 种。

桌面端的常用环境变量:RAKAZO_WEB_URL(开发自动化用,把 shell 指到别处而不改已保存的实例)、RAKAZO_FORCE_SETUP=1(重跑 setup)、RAKAZO_DOCKER_BINARY(指定其它兼容 Docker 的 CLI 路径)。

五、典型适用场景

  1. 数据不能出内网的团队:模型走 OpenRouter(甚至自建模型服务器),agent 的浏览器/终端/桌面在本地 Docker 沙箱里跑,历史和记忆全在自己的 Postgres。
  2. 要"持久化同事"而不是一次性问答:每个 bot 有 routine 和记忆,可以常驻;bot 之间能互相委派,等价于一个小型 agent 组织。
  3. 多端无缝:在办公室用桌面端,在路上用手机看 bot 状态和回复,同一个账号同一套历史。
  4. 要 GUI 级操作能力:bot 能打开浏览器、点终端、动图形桌面——比纯 API tool 调用更适合"跑流程型任务"(比如登录系统填表导出报表)。
  5. 替代闭源 SaaS:Grok Bot / Muse / Dots / Instinct / OpenClaw / Hermes Agent 的开源替代,Apache-2.0。
  6. 需要审计合规:内置 audit log,可导出、可转发到 SIEM。

六、坑与注意

坑 1:Node 版本线卡得很死

现象:engines 要求 ^22.22.2 || ^24.0.0 || >=26.0.0。 影响:用 Node 23.x 或 25.x(都是奇数号非 LTS 线)会不被支持,行为未定义。 修复:用 22.22.2 以上的 22.x,或 24.x,或 26+。pnpm 版本按 packageManager 字段锁 9.15.0。

坑 2:Postgres 密码里不能有 URL 特殊字符

现象:官方示例用 openssl rand -hex 16,而不是 openssl rand -base64。 影响:@ : / ? # % 这些字符会撑破 Compose 里插值出来的 DATABASE_URL。 修复:一律用 openssl rand -hex 16。

坑 3:Postgres 数据卷的凭据只在首次初始化时写入

现象:官方 Postgres 镜像只在首次卷初始化时设置 user / password / database。 影响:改了 .env 里的密码后,重启容器连不上,误以为是配置写错。 修复:要么保留 .env 里的原值,要么用 ALTER ROLE / rename 就地改。重建卷只在备份之后做(或者数据可弃时)——⚠️ docker compose down -v 会删除全部 Postgres 状态。

坑 4:ENCRYPTION_KEY 换掉就解不开存量凭据

现象:连接器凭据在服务端加密存储。 影响:改了 ENCRYPTION_KEY 之后,之前存的模型/连接器凭据无法解密。 修复:保留已有的 ENCRYPTION_KEY。这是升级时最容易被忽略的一条。同时 BETTER_AUTH_SECRET、SCREEN_PROXY_SECRET、SANDBOX_SUPERVISOR_TOKEN 必须各自独立、不能复用。

坑 5:Railway 上必须显式选 sandbox environment

现象:Railway 的自动环境 ID 指向托管应用自己的环境。 影响:沙箱和你的 app / 数据库混在同一个 environment 里,既不安全也容易撞资源。 修复:显式设 RAILWAY_ENVIRONMENT_ID。另外 Railway 沙箱是按量计费的。

坑 6:Railway 的电脑首次启动后才装桌面

现象:桌面是在首次启动时安装的。 影响:停止一台电脑会保存其 portable home 但销毁沙箱;下次启动会在新沙箱里恢复 home。第一次用的用户会感觉"数据丢了",其实是换了沙箱。 修复:预期到这一点;需要真正持久化的东西别只放在沙箱 home 里。

坑 7:Linux 桌面端 AppImage 需要 FUSE 2

现象:Linux 上的 AppImage 需要 libfuse.so.2(FUSE 2)。 影响:只装了 FUSE 3 的发行版(Fedora Silverblue、Ubuntu 24.04)报 dlopen(): error loading libfuse.so.2,应用起不来。 修复:装 FUSE 2 库(Fedora 用 fuse-libs,Ubuntu 24.04 用 libfuse2t64,旧版 Ubuntu/Debian 用 libfuse2),或者绕过 FUSE:chmod +x Rakazo-*.AppImage && ./Rakazo-*.AppImage --appimage-extract-and-run。

坑 8:桌面端只认 docker CLI,不认 Podman

现象:本地电脑功能会去找 docker CLI,不检测 Podman。 影响:只用 Podman 的机器上,"This computer" 装不起来。 修复:用兼容 docker compose 的其它 CLI 时,启动应用前设 RAKAZO_DOCKER_BINARY=<路径>。

坑 9:安装脚本会拉取并运行远程 shell

现象:curl -fsSLO .../install-images.sh && bash install-images.sh 直接执行远端脚本。 影响:在受管环境里这违反大多数安全策略;受限网络下也根本拉不下来。 修复:先把脚本下载下来审阅再执行;受限网络用 RAKAZO_DOWNLOAD_BASE + --local 走镜像源。仓库也提供了 SETUP_PROMPT.md 供 agent 辅助安装。

坑 10:发布镜像的 Compose 默认只绑 loopback

现象:images Compose 把 web 绑在 127.0.0.1:5173。 影响:想直接暴露 5173 到公网是错的,也违背设计。 修复:在宿主机终止 TLS 再反代(Caddy);把 BETTER_AUTH_URL / WEB_ORIGIN / API_URL 都设成同一个 HTTPS origin,RAKAZO_HOST 设成主机名。⚠️ 不要暴露 :3100(Vite preview 的 same-origin 代理 /api 和 /rpc)。

坑 11:Windows 上的 CRLF 会让沙箱启动卡死

现象:老 clone 设了 core.autocrlf=true,电脑面板启动时卡住(sandbox 日志里出现 bash\r)。 影响:沙箱起不来,界面看起来是"挂住"。 修复:从干净 worktree 出发执行:git config core.autocrlf false → git add --renormalize . && git checkout -- . → 重新 pnpm sandbox:build。

坑 12:开发期 Postgres 的两个角色要分清

现象:DATABASE_URL 与 DATABASE_MIGRATION_URL 是两个不同的连接串。 影响:都指向同一库但用错角色,会绕过或破坏 RLS 边界。 修复:应用连接用 rakazo_app(受行级安全保护),迁移用 owner。宿主机侧客户端(pnpm db:migrate、GUI 工具)需要加 docker-compose.postgres-host.yml overlay 把 Postgres 发布到 loopback 5433——不要发布到公网接口。

坑 13:注册账号永远拿不到服务器管理权限

现象:文档反复强调 "Signup never grants server-administration permissions"。 影响:误以为注册后能管服务器的用户会卡住。 修复:服务器管理是独立配置项(见 docs/self-host-configuration.md),走管理员路径设置。

坑 14:Treg 转售有额外条款

现象:Treg 是按量计费的,自托管者自带 token。 影响:把 Treg 嵌进自己的托管产品转售,需要与 Treg 的书面协议,否则违规。 修复:做托管产品前先读 https://treg.to/integrate.md 并取得书面许可。

坑 15:项目仍在 beta,且 package.json 版本落后

现象:README 标 "Rakazo is in beta",最新 release 是 v0.5.0,而 package.json 里 "version": "0.1.0"。 影响:用 package.json 判断版本会误判;生产部署按"稳定工具"预期会失望。 修复:以 release tag 为准,⚠️ 本文版本信息抓取于 2026-11-04,实际以 gh release / docker pull 到的 tag 为准。

七、与同类对比

维度 elie222/rakazo Grok Bot / Muse / Dots(闭源 SaaS) OpenClaw / Hermes Agent(同类开源) 自建 LangGraph / CrewAI 应用
部署 自托管 docker compose / 源码 厂商托管 自托管 自建
模型 BYOK,OpenRouter / 本地 / 自建 厂商模型 多模型 需自己接
沙箱 Docker / E2B / Daytona / CreateOS / Boat / Railway / 本机 厂商侧 部分支持 需自己接
持久化 bot + 记忆 ✅ 核心设计 ✅ 部分 需自建
移动端 ✅ iOS + Android ✅ 部分 无
语音 ✅ 多家 TTS key ✅ 部分 需自建
GUI 级操作 ✅ 浏览器/终端/文件/图形桌面 部分 部分 需自建
成熟度 beta(形态完整) 稳定 各自不一 看你自己
运维成本 需自己管 Postgres/证书/备份 零 中 高
审计日志 ✅ 内置,可接 SIEM 闭源 各自不一 需自建

选型建议:想要"装完就有完整产品"(含移动端、语音、bot 编排、审计)又必须自托管,Rakazo 值得试;如果只是要跑一个 agent 流程,LangGraph/CrewAI 这类库 + 几行胶水更轻;如果不在乎数据出网,闭源 SaaS 省心得多。

八、一句话推荐

如果你需要一个"自己的 Grok Bot"——自托管、模型和沙箱都自己选、带移动端、语音和持久化记忆的完整 agent 平台——Rakazo 是目前开源里形态最全的一个,install-images.sh 三行命令就能跑起来;但它还在 beta(v0.5.0),生产部署请务必固定镜像 tag、锁住 ENCRYPTION_KEY、用 openssl rand -hex 16 生成数据库密码,并且按上面第 1、3、4 条坑核对 Node 版本与 Postgres 初始化行为。