ufo-ai/ufo-core · 上手攻略
- 仓库:ufo-ai/ufo-core
- 链接:https://github.com/ufo-ai/ufo-core
- 分类:AI 工程 / Agent 运行时
- 作者:Jay
- 更新:2026-10-02
这是什么
ufo-core 是一个开源的 AI Agent 运行时(runtime),让团队成员在聊天中给 AI Agent 分配任务,Agent 可以读取文件和执行命令来完成工作。它是 UFO 托管服务(ufo.ai)的开源实现,支持自托管,用自己的模型 API key 在自己的基础设施上运行 AI Agent。
核心设计哲学:一个进程,多种部署规模。SQLite + 本地文件即可跑单实例,PostgreSQL + S3 + Redis 可扩展到多实例集群。
解决什么问题
企业或个人运行 AI Agent 面临的实际问题:
- Agent 执行边界不清晰:Agent 读取哪个目录?操作哪个用户权限?ufo-core 用 workspace 隔离 + 执行模式(local / remote)明确回答
- Agent 身份与权限:Agent 不能借用说话者的身份——成员在聊天中 grant 一个 account 给 Agent,授权记录就是审计记录
- Agent 持久化:每个 turn 是 DBOS workflow,崩溃可恢复,不丢状态
- 多实例管理:从小笔记本到集群,一套代码,两种部署方式
快速安装
依赖
- uv(Python 包管理器)
- PostgreSQL(可选,SQLite 够用)
- Docker(可选,使用 e2b sandbox 时)
安装步骤(本地模式,最简路径)
# 1. 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. 安装 ufo
git clone https://github.com/ufo-ai/ufo-core.git
cd ufo-core
# 3. 安装依赖
make install
# 4. 复制环境配置模板,填入三个模型 API key
cp .env.template .env
# 编辑 .env,填入 ANTHROPIC_API_KEY / OPENAI_API_KEY 等
# ⚠️ .env 拒绝裸 ANTHROPIC_API_KEY 和 OPENAI_API_KEY,
# 因为所有读取 .env 的工具都会获取所有值,建议用带前缀的变量名
# 5. 构建
make build
# 6. 初始化工作区和 admin 账号
make init EMAIL=your@email.com
# 输出:~/.ufoctl/token(CLI token)和 workspace 配置
# 7. 启动服务
make serve
# 监听 http://localhost:8710
# 8. 另一终端:连接客户端
mkdir -p ~/.ufo && install -m 600 ~/.ufoctl/token ~/.ufo/credentials
echo http://localhost:8710 > ~/.ufo/workspace
./client/target/debug/ufo "what can you do?"
托管模式(使用 ufo.ai 服务)
无需安装,自带模型 key:
# macOS / Linux 一键安装客户端
curl -fsSL https://ufo.ai/ufo | sh
# 运行并登录
ufo
# 首次登录用工作邮箱创建 workspace
# 访问 https://app.ufo.ai 或 Slack
托管服务支持 Slack 集成,团队成员无需安装 CLI,在 Slack 里直接给 Agent 分配任务。
核心用法
执行模式:local vs remote
# 默认:Agent 在你当前机器上操作(文件、命令以你的用户身份运行)
ufo "do something"
# Agent 在 workspace 的沙盒中操作
ufo --remote
# Agent 在配置的沙盒载体(Docker / e2b)中运行
⚠️ local 模式下 Agent 以当前用户身份读写当前目录;remote 模式下操作 workspace 配置的沙盒目录,隔离于用户目录。
| 边界 | local | remote |
|---|---|---|
| 文件读取/编辑 | 用户当前目录 | workspace 的 /workspace |
| 命令执行 | 用户账号 | 配置的沙盒载体 |
| 执行边界 | 用户机器和账号 | 配置的沙盒载体 |
| Agent 连接 | turn 期间保持 | turn 期间保持 |
持久化与恢复
Agent turn 中若客户端退出,turn 可继续;用 --wait SECONDS 提前退出,--resume <ID> 读取剩余结果。
每个 turn 是 DBOS workflow,崩溃可恢复,不丢中间状态。
浏览器工具(macOS)
macOS 上 Agent 可以用 browser tools 驱动 Chrome headless shell:
# 安装 chromium
npx playwright@$(uv run python -c 'from ufo.sdk.sandbox import PLAYWRIGHT_VERSION; print(PLAYWRIGHT_VERSION)') install chromium-headless-shell
# 启动时把 Chrome 路径加入 PATH
PATH="<dir>/chrome-headless-shell-mac-arm64:$PATH" make serve
⚠️ <dir> 是 Playwright 报告的路径(--dry-run 可打印);Intel Mac 用 chrome-headless-shell-mac-x64。
调试工具
# 启动 debugger UI(需要 pnpm)
make debugger
# 然后 make serve
# 或 CLI 方式
uv run ufoctl debugger
# 在浏览器中打开 turns、steps、transcripts、memory
PostgreSQL 模式(多实例部署)
# 启动本地 PostgreSQL
make db
# 监听 127.0.0.1:5541,用户/密码/数据库均为 ufo
# 生成 PostgreSQL 配置
uv run python -c 'from ufo.cli import DEFAULT_CONFIG; print(DEFAULT_CONFIG, end="")' \
| sed 's#sqlite+aiosqlite:///ufo.db#postgresql+asyncpg://ufo:ufo@127.0.0.1:5541/ufo#' > ufo.toml
扩展机制
ufo-core 是「一切皆扩展」架构:
# 扩展是一个 Python 包,声明一个入口点
[project.entry-points."ufo.extension"]
acme = "ufo_ext_acme.manifest:manifest"
扩展点覆盖:工具(tools)、连接器(connectors)、子 Agent(subagents)、表面层(surfaces)、模型提供商(model providers)、沙盒载体(sandbox carriers)。
管理扩展:
ufoctl ext search # 搜索扩展
ufoctl ext install # 安装
ufoctl ext remove # 卸载
官方扩展和 packs 在 extensions/ 和 packs/ 目录,assistant 是默认 pack。
Bundle 打包:
ufoctl bundle
# 冻结部署镜像(镜像配方 + 客户端 + 固定配置 + lockfile)为一个制品
# 适合单节点、私有部署或集群扩展
典型适用场景
- 团队内部 AI 助手:成员在 Slack 或终端给 Agent 分配任务,Agent 读写工作目录内的文件
- 开发流程自动化:Code Review 生成、测试编写、文档更新等重复性开发任务
- 多租户隔离:每个 workspace 完全隔离,适合公司内部多个团队分别使用
- 个人 AI 工作站:笔记本上跑本地 Agent,处理文件、搜索、写代码
- 企业级 Agent 平台:PostgreSQL + S3 + Redis 集群,多实例并行处理任务
坑与注意
⚠️ local 模式安全边界:默认 local 沙盒(Seatbelt/Landlock)只限制写操作,能读取整个主机,内核不强制出口流量。处理不可信输入或多个 workspace 时,强烈建议切换到 Docker 或 e2b 沙盒。
⚠️ .env 变量命名:不能直接用 ANTHROPIC_API_KEY / OPENAI_API_KEY 裸名(会被所有读取 .env 的工具获取全部值),建议用带前缀的变量名并在 .env 中明确赋值。
⚠️ make init 需要邮箱:创建 admin 账号必须有真实邮箱,否则无法完成初始化。
⚠️ 浏览器工具只在 macOS 有文档:Linux/Windows 的 browser tools 路径配置文档不完整,README 只记录了 macOS 步骤。
⚠️ PostgreSQL + Redis 不是开箱即用:README 提供了配置路径但无 Docker Compose override 模板,高可用部署需要自行编写配置。
⚠️ 调试器需要 pnpm:make debugger 依赖 pnpm,提前安装。
与同类对比
| 方案 | 架构 | 执行模式 | 持久化 | 扩展方式 |
|---|---|---|---|---|
| ufo-core | 单进程 + workspace 隔离 | local / remote / docker / e2b | DBOS workflow(崩溃恢复) | 纯 Python 扩展 |
| Microsoft AutoGen | 多 Agent 协作框架 | Python 代码驱动 | 无内置 | Python 装饰器 |
| LangChain Agents | 链式 Agent 框架 | Python 运行时 | 无内置 | LangChain 组件 |
| OpenAI Agents SDK | OpenAI 官方 Agent 框架 | 云端 + 本地 | 无内置 | SDK 组件 |
| CrewAI | 多 Agent 协作平台 | Python 运行时 | 无内置 | YAML 配置 |
ufo-core 的核心差异:持久化 turn + workspace 隔离 + 聊天中授权,不是链式推理框架,而是真正的团队 Agent 运行时。
一句话推荐结论
ufo-core 是一个把 AI Agent 真正纳入团队工作流的运行时——聊天中授权、沙盒中执行、崩溃可恢复,适合需要多人共用 Agent、任务持久化、代码/文件操作边界清晰的企业或团队。个人用户可从托管版(ufo.ai)零配置起步,体验满意后再迁移到自托管。
⚠️ 存疑项:生产级高可用部署(PostgreSQL 多活 + Redis cluster)的参考配置尚未公开,官方文档以单实例为主;大规模团队使用前建议先在小规模验证稳定性。