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 对比答案 |
| 对外服务(商业) | 完整版 + 订阅计费 | 管理员配方案,用户购积分 |
坑与注意
- ALLOWED_ORIGINS 不设 → 登录失败:域名/HTTPS 部署必须设置,IP 同源测试可不设
- 个人版 Python 默认不可用:需管理员配置外部沙箱 URL 才能跑代码
- 沙箱无网络:所有需要外部数据的任务必须先搜索/抓取进来,沙箱只能处理已有文件
- 个人版不支持横向扩容:单 App 实例,不要挂负载均衡
- PostgreSQL/Redis/Qdrant 数据落在命名卷:备份时卷和
DATA_DIR要一起打包才能保证一致 - 老版本镜像回退注意:
IMAGE_TAG=3.0.0(不带v前缀),历史版本如 2.2.6 需额外SANDBOX_IMAGE_TAG=latest - 32 位 ARM 不支持:
uname -m不是aarch64/arm64则无法运行 - 工具调用有上限:单轮最多 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 更简单。