想要一个真正能替你「动手」的通用 AI 助手——不是只会聊天,而是能开浏览器、抓数据、改文件、跑命令、出图表,甚至把网站部署上线?商业产品 Manus 很惊艳但闭源、按次收费。好消息是,Kortix AI 开源了 Suna(Apache 2.0,被誉为「开源版 Manus」),可以完全自托管,数据留自家服务器。本教程带你用 Docker 把它跑起来,并派第一个活。
先搞懂:Suna 是什么架构
用一句话理解:Suna 是一个「会调用一堆工具的数字员工」,背后是一套模块化系统。它的几个核心组件:
| 组件 | 作用 |
|---|---|
| Next.js/React 前端 | 聊天界面 + 任务监控仪表板 |
| Python/FastAPI 后端 | Agent 编排、任务分解(todo.md) |
| Supabase | 认证、对话历史、文件存储、实时订阅 |
| Daytona 沙盒 | 隔离执行环境(浏览器/命令行/文件系统) |
| LLM + 搜索 | OpenAI/Anthropic 大脑 + Tavily/Firecrawl 搜索 |
硬件门槛适中:官方推荐 NVIDIA RTX 3060 或 16GB 内存。模型推理走云 API,所以本地不吃显卡,主要是跑前后端和沙盒。
Step 1:准备前置依赖
自托管最关键的三个外部服务:Supabase(数据库)、Daytona(执行沙盒)、Redis(缓存/队列),再加上运行环境。
# 本地运行环境
· Python 3.11+ # 后端
· Node.js 20.x # 前端
· Git # 拉代码
· Docker Desktop # 可选,但推荐用它起 Redis
# 三个外部账号(都有免费层)
· Supabase:建项目,拿 Project URL / anon key / service_role key
· Daytona:注册拿 API Key,添加镜像 adamcohenhillel/kortix-suna:0.0.20
· LLM:OpenAI 或 Anthropic 的 API Key(二选一)
· 可选:Tavily / RapidAPI Key 增强搜索
Step 2:克隆仓库并配置后端
先克隆,再复制环境变量模板,把上一步拿到的密钥填进去。
git clone https://github.com/kortix-ai/suna.git
cd suna/backend
cp .env.example .env
# 编辑 .env,至少填:
# SUPABASE_URL / SUPABASE_ANON_KEY / SUPABASE_SERVICE_ROLE_KEY
# REDIS_HOST / REDIS_PORT / REDIS_PASSWORD
# DAYTONA_API_KEY / DAYTONA_TARGET
# OPENAI_API_KEY 或 ANTHROPIC_API_KEY(只开一个)
# TAVILY_API_KEY(可选)
# 把数据库表结构推到 Supabase
supabase login
supabase link --project-ref YOUR_PROJECT_REF
supabase db push # 确认 basejump schema 已暴露
只开一个 LLM 提供商:.env 里 OpenAI 和 Anthropic 二选一,别两个都留空或都开着,否则后端会不知道用哪个模型而报错。
Step 3:配置前端并安装依赖
# 前端
cd ../frontend
cp .env.example .env.local
# 填 NEXT_PUBLIC_SUPABASE_URL / ANON_KEY
# 以及 NEXT_PUBLIC_BACKEND_URL=http://localhost:8000/api
# 装依赖(前端 Node)
npm install
# 后端依赖(Python 3.11,建议虚拟环境)
cd ../backend
pip install -r requirements.txt
Step 4:启动并访问
# 终端 A:后端
cd backend && python api.py
# 终端 B:前端
cd frontend && npm run dev
# 浏览器打开
http://localhost:3000
# 用 Supabase 账号注册登录,即可开始派活
Step 5:派活实战——让 Suna 干一件真事
Suna 的强项是「多步骤真实任务」。在对话框里直接说目标,它会用 todo.md 拆任务、调工具执行。
示例指令:
「分析麦当劳在旧金山的 Google Reviews,
抓取最近 50 条,按好评/差评分类,
生成一份带情绪分布图的中文报告,
存成 report.html。」
Suna 会自主:
1. 用 Tavily/Firecrawl 搜并抓评论
2. 在 Daytona 沙盒里跑 Python 清洗、出图
3. 生成 HTML 报告并保存到你的文件区
任务越具体越好:给「输出格式 + 数据范围 + 语言」比只说「帮我分析一下」成功率高得多。复杂任务建议拆成几个小目标分批派。
Step 6:探索更多能力边界
Suna 内置工具覆盖面很广,试试这些场景:
· 浏览器自动化:填表单、监控价格、抓竞品
· 文件管理:CSV↔JSON 批量转换、批量重命名
· 数据分析:上传 Excel,让它出图表和洞察
· 网站部署:把生成的静态站直接发到 Cloudflare Pages
· API 集成:连 LinkedIn / Zillow 抓专业数据
Step 7:成本与安全收尾
1. 成本:模型按 token 计费,复杂任务很能吃额度
→ 在 .env 里选便宜模型(如 gpt-4o-mini)跑草稿
2. 安全:Daytona 沙盒默认隔离,但别把云账号密钥硬编码进任务
3. 数据:Supabase 是你的数据库,定期备份
4. 停止服务:docker compose down / 关掉两个终端
常见问题速查
| 现象 | 大概率原因 & 解决 |
|---|---|
| 后端起不来报缺依赖 | node/npm/docker 没装或版本不符,按 Step 1 补齐 |
| 登录后空白 | Supabase schema 没 push,或 frontend 的 BACKEND_URL 配错 |
| Agent 不执行浏览器任务 | Daytona API Key 错,或镜像名/entrypoint 没按文档填 |
| 任务跑一半失败 | 多是 LLM 额度耗尽或搜索 Key 缺失,查后端日志 |