Haohao-end/openagent · 上手攻略
- 仓库:Haohao-end/openagent
- 链接:https://github.com/Haohao-end/openagent
- 分类:skill / agent(Dify 式的全栈 AI 应用平台,含 Deep Research 与 A2A 委派)
- 作者:Jay
- 更新:2026-10-29
一、是什么
OpenAgent 是一个全栈 AI Agent 平台,官方仓库一句话概括是:"What if OpenAI Deep Research and Dify were one platform?"——即把 Deep Research 式的深度推理循环和 Dify 式的可视化应用编排合成一个东西。仓库描述为 "harness architecture for rapidly building vertical AI agents"。
技术栈与 FIM One 那种"FastAPI + Next.js"风格不同,它走的是Flask + Vue 3 路线:
- 后端:Python / Flask / SQLAlchemy / Celery / Flask-SocketIO / Redis / PostgreSQL
- Agent 运行时:LangChain + LangGraph(工作流编译成图)
- 检索:RAG,语义检索 + 全文检索 + 混合检索,Weaviate(主)/ FAISS
- 前端:Vue 3 + TypeScript + Vite + TailwindCSS + Pinia + Vue Flow + Arco Design
- 交付:Docker Compose + Nginx + OpenAPI + SSE
- 模型接入:OpenAI、Atlas Cloud、DeepSeek、Grok、Google、Moonshot(月之暗面)、通义、文心、Ollama、智谱
GitHub 上约 774 stars,Python,MIT 许可(对比同类的 Source Available 友好得多)。最新 Release 是 v1.1.4(发布于 2026-06-15),由作者账号 Haohao-end 发布。
二、解决什么问题
它面向的是"要做 AI 应用,而不是只做聊天 demo"的团队。仓库自带的说明里列出的当前代码已支持能力:
- 首页助手通过 A2A 把用户请求路由到已发布的公开 Agent;也支持用自然语言描述需求直接触发 AI 应用创建流程。
- AI 应用工作台:草稿、发布、分析、版本对比、Prompt 对比。
- Deep Research:把复杂任务拆解成多步,在执行链上协调已绑定的能力。README 特别注明——"Deep Research" 这个词在代码里对应的是
enable_deep_thinking背后的深度思考模式,不是另起炉灶的一套研究子系统。这是个重要的预期校准。 - 可视化工作流:节点涵盖 LLM、工具调用、数据集检索、代码执行、HTTP 请求、分支、文本处理、模板转换、结构化参数抽取。
- 数据集与文档管理:建数据集、传文档、看切片、把检索接进 Agent 与工作流。
- 应用商店:浏览公开应用、工具、工作流。
- 对外交付:发布后的应用通过
POST /api/openapi/chat暴露 REST 与 SSE 接口,支持多轮会话标识。
架构上,从浏览器/外部客户端进来是 Flask HTTP API → handler/service → agent 与 LangGraph 工作流运行时 → LLM 提供商与工具/MCP/检索;异步任务走 Celery,落到 PostgreSQL 与 Weaviate。
三、快速安装
前置要求
- Docker 20.10+、Docker Compose 2.x
- 建议 8 GB+ 内存(全栈)
- 至少一个模型提供商 API Key
全栈 Docker 启动
git clone https://github.com/Haohao-end/openagent.git
cd openagent
cp api/.env.example api/.env
# 编辑 api/.env
cd docker
docker compose up -d --build
服务地址:
| 服务 | URL | 说明 |
|---|---|---|
| 前端 | http://localhost:3000 | Vue 3 Web UI |
| API | http://localhost:5001 | Flask REST API |
| Nginx | http://localhost | 反向代理 |
api/.env 里必须填的最小集(来自仓库卡与 README):
JWT_SECRET_KEY
POSTGRES_PASSWORD
REDIS_PASSWORD
WEAVIATE_API_KEY
VITE_API_PREFIX
# 再加至少一个 provider key,例如 OPENAI_API_KEY / DEEPSEEK_API_KEY / DASHSCOPE_API_KEY
JWT 密钥可用 openssl rand -hex 32 生成。
本地开发(只起基础设施)
架构文档明确建议:本地开发只起 PostgreSQL / Redis / Weaviate 三个支撑服务,API、UI、Celery 跑在宿主机上,避免每次改动都构建完整应用容器。
cd docker
docker compose up -d --no-build llmops-db llmops-redis llmops-weaviate
docker compose ps llmops-db llmops-redis llmops-weaviate
然后:
# 终端 1:API
cd api
pip install -r requirements.txt
flask run --port 5001
# 终端 2:Celery
cd api
celery -A app.http.app:celery worker --loglevel=info
# 终端 3:前端
cd ui
npm install
npm run serve # Vite 默认 5173,/api 代理到 Flask
注意本地 .env 里数据库/Redis/Weaviate 要填 localhost 及已发布端口;Docker 内部则用服务名(llmops-db 等),compose 会自动覆盖。
四、核心用法
4.1 环境变量分层(最容易踩的地方)
仓库把配置分成三层,README 与 docker/README 都强调这点:
docker/.env:Docker Compose 基础设施配置——端口映射、镜像标签、PostgreSQL/Redis 端口、Weaviate HTTP 8080 / gRPC 50051。api/.env:业务配置——LLM Key、插件 Key、OAuth、JWT、对象存储、邮件、LangSmith 追踪。- Compose 的
environment段:覆盖MODE(api/celery)、MIGRATION_ENABLED、以及各中间件的容器内连接地址。
关键约束:llmops-ui 镜像构建时会直接读取 api/.env 中的 VITE_API_PREFIX,缺这个值 UI 镜像在构建阶段就失败。改完 VITE_API_PREFIX 必须重新 build llmops-ui。
4.2 模型接入
.env.example 里预置的 provider 包括 Moonshot、SiliconFlow、DeepSeek、OpenAI、Atlas Cloud、Grok、百度千帆(qianfan_ak/qianfan_sk)、通义、文心等:
OPENAI_API_KEY=sk-your-openai-key-here
OPENAI_API_BASE=https://api.openai.com/v1
LLM_REQUEST_TIMEOUT=120
DEEPSEEK_API_KEY=sk-your-deepseek-key-here
DEEPSEEK_API_BASE=https://api.deepseek.com/v1
ATLASCLOUD_API_KEY=your-atlascloud-key-here
ATLASCLOUD_API_BASE=https://api.atlascloud.ai/v1
深度思考沙箱另有一套:SANDBOX_PROFILE=lite(文档说 lite 档位建议对应 2 CPU / 2048 MiB 的自定义模板)、SANDBOX_URL(腾讯云 SCF 函数的 URL)。多模态还有 IMAGE_REQUEST_POLICY(strict = 纯文本模型收到图片直接报错;auto_upgrade = 配置了视觉兜底模型则自动切换)。
4.3 应用工作台
左侧绑定模型、Prompt 与能力;右侧做实时调试、执行轨迹与结果核对。能力绑定面很宽:插件、MCP、Skills、子 Agent 应用、工作流、数据集。启用 Deep Research 后,应用能把工作拆成步骤,在更长执行链上协调已绑定能力,并支持脚本执行、文件生成、附件导出等"需要具体产物"的场景。
4.4 可视化工作流
节点类型覆盖 LLM、tool、dataset retrieval、code、HTTP request、template transform、text processor、variable assigner、parameter extractor、if/else、start、end。工作流服务在 api/internal/core/workflow 编译成 LangGraph 图,节点可调用语言模型、工具或检索。
4.5 对外交付
发布后的应用走 POST /api/openapi/chat,支持标准响应与流式响应,并支持多轮对话标识。
4.6 测试
cd api && pytest
cd ui && npm run test:unit -- --run
cd ui && npm run type-check
cd ui && npm run lint
cd ui && npm run build
五、典型适用场景
- 垂直业务 Agent 快速搭建:把一个行业流程拆成应用 + 工作流 + 数据集三天内上线,而不是从 LangGraph 裸写。
- Deep Research 式长任务:需要多步分解 + 协调多种能力的调研/分析类任务。
- 多 Agent 协作:一个应用通过 A2A 调用另一个已发布的应用,配合子 Agent 绑定。
- 把内部知识接进工作流:数据集 + 文档切片 + 检索节点,给工作流加私域知识。
- 对外提供 API:应用发布后用 OpenAPI + SSE 交付给前端或第三方系统。
- 国内模型可用:DeepSeek / 通义 / 文心 / 智谱 / Moonshot / 千帆都在支持列表里,接国内模型不用自己写适配层。
六、坑与注意
每坑按"现象 / 影响 / 修复"三段式整理。
坑 1:VITE_API_PREFIX 缺失导致 UI 构建直接失败。
- 现象:docker/README 明确写"缺少 VITE_API_PREFIX 时,UI 镜像会在构建阶段直接失败",因为 llmops-ui 构建时直接读取 api/.env。
- 影响:docker compose up -d --build 在 UI 阶段报错,容易误以为是网络或依赖问题。
- 修复:cp api/.env.example api/.env 后第一件事就是填 VITE_API_PREFIX(本地示例 http://127.0.0.1:5001);改这个值之后必须重新 build llmops-ui。
坑 2:"Deep Research" 名不副实。
- 现象:README 自己声明 "the README term Deep Research maps to the deep thinking mode behind enable_deep_thinking"。
- 影响:如果你按 OpenAI Deep Research 的期望(自主多轮检索、引用、报告产出)去规划,落地会发现它就是深度思考开关,能力边界小得多。
- 修复:把"深度研究"当深度思考模式评估,别当独立子系统排期;真要深度研究能力得自己用 LangGraph + 检索节点拼。
坑 3:Docker 与本地的连接地址不同,混用就连不上。
- 现象:容器内部用服务名(llmops-db、llmops-redis、llmops-weaviate),本地开发用 localhost + 已发布端口。
- 影响:同一份 .env 在两种模式下不能通用,报错是连接超时/认证失败,根因却是地址写法。
- 修复:本地起基础设施时,把 api/.env 的 SQLALCHEMY_DATABASE_URI、REDIS_HOST、WEAVIATE_HTTP_HOST 都写成本地端口;容器模式下交给 compose 的 environment 覆盖。
坑 4:Weaviate 只能逐个小版本升级。
- 现象:docker/README 明确 Weaviate 只支持逐个小版本升级(如 1.28 → 1.29 → 1.30),不能跳版本。
- 影响:升级 compose 里的 Weaviate 版本时若直接跳号,数据目录不兼容,服务起不来。
- 修复:已有旧版本数据时先备份 docker/volumes/weaviate,再依次用每个中间小版本的最新补丁版启动一次(等 /v1/.well-known/ready 就绪)后才能切到目标版本;全新部署无此步骤。
坑 5:改密码不能只改环境变量,docker compose down -v 更不能碰。
- 现象:PostgreSQL 数据目录已存在时,改 POSTGRES_PASSWORD 不会更新数据库角色密码。
- 影响:轮换密码后 API 连不上数据库,看起来像迁移问题。
- 修复:先 docker compose exec llmops-db sh -c 'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB"',在 psql 里用 \password 改密码,再更新 .env 并只重建相关服务;切勿用 docker compose down -v,那会删掉数据库、Redis、Weaviate 的持久化卷。
坑 6:.env 里有大量密钥,提交即泄露。
- 现象:api/.env.example 里含几十个 Key 占位(OpenAI、Grok、千帆、LangSmith、Pinecone、COS、OAuth 客户端密钥、GITHUB_ACCESS_TOKEN、WEAVIATE_API_KEY 等)。
- 影响:一次误提交 api/.env 就是一轮密钥轮换。
- 修复:.env 一律进 .gitignore,只提交 .env.example;docker/README 开头就有"所有敏感信息必须存在 .env,绝不提交到 Git"的安全提示。
坑 7:多模态默认严格模式,纯文本模型收到图片会直接报错。
- 现象:IMAGE_REQUEST_POLICY=strict 时,图片请求发给纯文本模型直接失败;auto_upgrade 才会在配置了视觉兜底模型时自动切换。
- 影响:用户上传图片报的是模型侧错误,容易被误判为前端 bug。
- 修复:默认保持 strict 以便暴露问题;生产需要兼容时改 auto_upgrade 并配 VISION_FALLBACK_PROVIDER / VISION_FALLBACK_MODEL。
坑 8:资源门槛与组件数量都不低。
- 现象:全栈需要 PostgreSQL + Redis + Weaviate + API + Celery + UI + Nginx,README 建议 8 GB+ 内存。
- 影响:小机器上直接 docker compose up -d --build 会出现服务反复重启或 Weaviate OOM。
- 修复:开发期按 4.2 的"只起三个支撑服务"流程走;生产部署前确认内存 ≥8 GB 并给 Weaviate 单独算配额。
坑 9:本地开发路径容易走偏。 - 现象:docs/README 与 architecture.md 都特别写明"不要暗示每次修改都必须构建完整应用容器",且 Celery 是独立进程,容易被漏起。 - 影响:漏起 Celery 时表现为异步任务(如文件处理、后台任务)永远不完成,且没有明显报错。 - 修复:本地开发固定三终端(API / Celery / UI);排查任务不落库时先看 Celery worker 日志。
坑 10:历史上修过三个安全漏洞,值得留意安全响应质量。 - 现象:README 致谢列表包含:Johns Hopkins University 的 Rui Yang 与 Haoyu Wang 报告的内置工具图标 URL Host Header 投毒问题、Ryan B 报告的自定义 API 工具服务器 URL 的 SSRF 漏洞、汪钶楠报告的 macOS 截图助手 AppleScript 参数处理隐患。 - 影响:说明出站请求与 URL 构造路径历史上出过问题。 - 修复:使用最新版(v1.1.4 之后仍有 main 分支更新,2026-10-29 有提交);若自建请复查自定义 API 工具的出站地址白名单。
七、与同类对比
| 维度 | OpenAgent | Dify | FIM One | 裸 LangGraph |
|---|---|---|---|---|
| 后端/前端 | Flask + Vue 3 | Flask + Next.js | FastAPI + Next.js | 自己写 |
| 编排 | 可视化工作流 + LangGraph | 可视化工作流 + 迭代/Chatflow | 可视化工作流 + 动态 DAG | 代码 |
| 深度研究 | enable_deep_thinking 模式 |
无专门深度模式 | ReAct + DAG 编排层 | 自己拼 |
| A2A 委派 | 有(首页助手路由到公开 Agent) | 有插件/Agent 节点 | 跨系统编排 | 自己写 |
| 许可 | MIT | Apache-2.0 + 商业条款 | Source Available(禁多租户 SaaS/白标) | 自定 |
| 数据库 | 必须 PostgreSQL(无 SQLite 路径) | 默认可 SQLite | SQLite(开发)/ PG(生产) | 自选 |
| 交付 | OpenAPI + SSE | API | Portal / API / iframe | 自建 |
一句话对比:要 MIT 许可、要中文文档、要国内模型开箱即用、要"深度思考 + 工作流"组合 → OpenAgent;要做多租户 SaaS 或想避开许可限制 → OpenAgent;要做企业系统统一接入 + 中国信创数据库 + 确定性审批 Hook → FIM One;想要最成熟的开源低代码生态 → Dify;只写一个 Agent、不想维护平台 → 裸 LangGraph。
八、一句话推荐结论
推荐:OpenAgent 是少数把 "Deep Research 式长任务 + 可视化工作流 + 数据集 RAG + A2A 委派 + OpenAPI/SSE 交付" 装进一个 MIT 许可全栈里的项目,对国内团队尤其友好(中文文档、中文模型一应俱全),拿来做垂直行业 Agent 的内部平台是合适的;注意它的重(7 个组件、8 GB 内存起步)、"Deep Research" 只是深度思考模式这一预期落差,以及必须硬性执行 PostgreSQL 迁移的事实——它是"能落地但要规划运维"的选项,不是"clone 完 3 分钟跑起来"的玩具。
资料来源与核验状态
- GitHub README(https://github.com/Haohao-end/openagent,已 fetch,2026-10-29)
- docs/architecture.md(raw.githubusercontent.com,已 fetch,2026-10-29)
- docs/README.md 与 docs/README.zh-CN.md(已 fetch)
- docker/README.md(Docker 部署配置说明,中文,已 fetch,2026-10-29)
- api/.env.example(已 fetch,节选前半部分)
- GitHub API
/releases/latest→ tag v1.1.4,发布于 2026-06-15
不确定/待核:
- 版本对应关系:v1.1.4 发布于 2026-06-15,而 main 分支 2026-10-29 仍有提交,README 描述的功能可能超出 v1.1.4 release tag;本文以 main 分支为准,未逐条比对 tag。
- docker/.env 中 IMAGE_VERSION 默认值为 0.1.0,与 GitHub Release 的 v1.1.4 不一致,两者关系未核实。
- README 顶部赞助方为 Atlas Cloud 与 Bloome(商业赞助),对产品中立性可能有影响,此处仅作事实记录。
- 许可为 MIT 依据仓库卡标注,未逐条核对仓库 LICENSE 文件原文。
- 节点类型数量、工作流节点清单取自 README 描述与 architecture.md,未 clone 核对源码注册表。