hjxwz123/Aivory · 上手攻略

  • 仓库:hjxwz123/Aivory
  • 链接:https://github.com/hjxwz123/Aivory
  • 分类:AI 平台 / 自部署
  • 作者:Tom
  • 更新:2026-10-09

这是什么

Aivory 是一个自部署的 AI 对话与研究平台,将多模型聊天、代码执行、知识库检索、Deep Research 和团队协作整合在一个 Web 界面中。核心卖点是"多工具串联执行"——用户发一条指令,编排器可以在一次对话内自动完成搜索→抓取网页→运行 Python 分析数据→生成文件,最多 48 次工具调用跨越 12 轮模型循环,无需人工介入。⚠️ 公开 Demo(demo.aivorygo.com)由官方托管,敏感数据请勿上传。

与单模型 ChatGPT 对话不同,Aivory 的沙箱持久化意味着每个对话有独立的工作区,上传过的文件(PDF、DOCX、PPTX、表格、图片)会一直保留在上下文里供后续工具复用,对数据分析类任务尤为友好。


解决什么问题

  • 不想把数据交给第三方:完全自部署,数据库和文件都在自己服务器
  • 需要多模型混合使用:Claude、GPT、Gemini、DeepSeek、GLM 等在同一个界面按需切换
  • 需要工具串联的自动化研究流程:搜索→抓取→数据分析→PPT 生成,端到端一次完成
  • 团队需要共享对话和知识库:工作空间(Team Workspace)机制,成员隔离又可共享
  • 需要 RAG + 可溯源引用:上传文档后,回答会附带来源段落,可查证

典型场景:内部知识库问答、数据分析报告自动生成、团队协作研究项目、代码辅助编写。


快速安装

⚠️ 前提:服务器已安装 Docker 24+ 和 Docker Compose 插件。

个人版(轻量,单实例)

git clone https://github.com/hjxwz123/Aivory.git
cd Aivory/deploy
cp .env.personal.example .env.personal
# 编辑 .env.personal,至少设置 JWT_SECRET
# 按需配置 embedding(不配则用默认)
docker compose --env-file .env.personal -f docker-compose.personal.yml pull
docker compose --env-file .env.personal -f docker-compose.personal.yml up -d
# 访问 http://<服务器IP>,首次注册即为管理员

个人版默认只有 App + SQLite,内置向量检索保留,但 PostgreSQL、Redis、Qdrant 和沙箱不启动。Python 执行默认关闭,需要时由管理员在「管理后台 → 工具」配置外部沙箱地址。

完整版(团队,含全部服务)

git clone https://github.com/hjxwz123/Aivory.git
cd Aivory/deploy
cp .env.example .env
# 编辑 .env,至少设置:POSTGRES_PASSWORD、REDIS_PASSWORD、JWT_SECRET
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d

完整版包含 5 个容器:postgres(用户/对话/知识库)、redis(缓存/限频)、qdrant(向量检索)、sandbox(代码执行)、app(Go HTTP + 前端 SPA)。部署后访问 http://localhost,首次注册成为管理员后去 /admin/channels 添加模型 Provider key。

域名/HTTPS 部署注意

⚠️ 必须设置 ALLOWED_ORIGINS=https://chat.example.com(.env 或 .env.personal),否则 cookie 认证请求可能被浏览器阻止返回 cross-site request blocked。

ARM64 服务器

Aivory 三张镜像(app、sandbox runtime、sandbox sidecar)的同一标签同时包含 linux/amd64 和 linux/arm64,Docker Compose 会自动选择匹配架构,不需要手动指定 platform:。32 位 ARM(armv7l)不支持。


核心用法

添加模型渠道

管理员登录后进入 /admin/channels: 1. 添加 Provider(支持 OpenAI 兼容端点,包括 Claude/Gemini 的 API 代理) 2. 创建模型记录(填入模型名、上下文窗口、定价等信息) 3. 分配工具能力(哪些模型可以使用搜索/代码/图像等工具)

工具调用示例

在对话中输入:

检索 2025 年全球 GDP 数据,找到 IMF 和世界银行的权威数字,制作成 PowerPoint 演示文稿

编排器自动执行(无需人工干预): 1. aivory_web_search:定位 IMF/世界银行来源 2. web_fetch:抓取页面正文 3. python_execute:清洗数据、计算指标 4. python_execute:生成图表并写入 /workspace/outputs/ 5. python_execute:生成 PPTX,输出为下载卡片

⚠️ 沙箱无网络访问,所有数据处理依赖对话中已有的文件或检索结果。

知识库(RAG)配置

管理员在「知识库」页面: 1. 上传文档(支持 PDF、DOCX、PPTX、XLSX、图片) 2. 文档被解析、分块、嵌入,存入 Qdrant(完整版)或 SQLite(个人版) 3. 用户在对话中挂载知识库,查询时自动 RAG 注入并附来源引用

MCP 工具集成

Aivory 支持 Model Context Protocol(Streamable HTTP 传输),管理员可在「管理后台 → 能力与集成 → MCP 服务」注册外部工具端点: - 名称/图标/描述对用户可见,服务地址和 Authorization header 只保存在服务端 - 模型记录可预勾选 MCP 工具,用户单聊时也可临时调整 - MCP 工具输出一律作为不可信数据处理,不当指令执行


典型适用场景

场景 推荐配置 说明
个人 AI 助手 个人版 + 外挂沙箱 轻量,数据不离开本机
团队知识库问答 完整版 + Qdrant 多用户隔离 + RAG
数据分析自动化 完整版 + Python 沙箱 上传 CSV/Excel,自动跑分析出图表
多模型对比研究 完整版 + 多 Provider 同一问题问 Claude/GPT/Gemini 对比答案
对外服务(商业) 完整版 + 订阅计费 管理员配方案,用户购积分

坑与注意

  1. ALLOWED_ORIGINS 不设 → 登录失败:域名/HTTPS 部署必须设置,IP 同源测试可不设
  2. 个人版 Python 默认不可用:需管理员配置外部沙箱 URL 才能跑代码
  3. 沙箱无网络:所有需要外部数据的任务必须先搜索/抓取进来,沙箱只能处理已有文件
  4. 个人版不支持横向扩容:单 App 实例,不要挂负载均衡
  5. PostgreSQL/Redis/Qdrant 数据落在命名卷:备份时卷和 DATA_DIR 要一起打包才能保证一致
  6. 老版本镜像回退注意:IMAGE_TAG=3.0.0(不带 v 前缀),历史版本如 2.2.6 需额外 SANDBOX_IMAGE_TAG=latest
  7. 32 位 ARM 不支持:uname -m 不是 aarch64/arm64 则无法运行
  8. 工具调用有上限:单轮最多 48 次调用(搜索 16 / 抓取 12 / Python 16 / 图片 8),超限会静默截断

与同类对比

维度 Aivory Dify LangFlow Open WebUI
部署难度 Docker 一键 Docker 一键 较复杂 简单
多模型支持 ✅ Claude/GPT/Gemini/兼容 ✅ ✅ ✅
工具串联执行 ✅ 48次/轮 ✅(工作流) ✅ ❌
Python 沙箱 ✅ 持久化 ❌ ❌ ❌
RAG ✅ Qdrant/SQLite ✅ ✅ ✅
团队工作空间 ✅ 部分 ❌ ❌
订阅计费系统 ✅ ❌ ❌ ❌
MCP 集成 ✅ ❌ ❌ ❌

Aivory 的差异化在于持久化沙箱 + 强工具编排 + 内置计费,适合需要把 AI 对话变成完整生产力工具的团队。Dify 更偏工作流编排,Open WebUI 更偏轻量聊天界面。


一句话推荐结论

需要把 AI 对话变成有数据、团队协作和生产文件输出的完整工作台 → 选 Aivory;只要轻量聊天界面 → Open WebUI 更简单。