项目简介

AgentForge 是一个自托管的 AI Agent 数据平台。支持上传文档或连接 27 种外部数据源(对象存储、关系型数据库、OLAP、NoSQL、文档平台、代码仓库、企业云),通过 混合检索(向量余弦相似度 + BM25 重打分 + 可选 Cross-Encoder 精排)返回高质量上下文,并通过 MCP / Skill 将数据无缝集成到 Claude Desktop / OpenClaw / Hermes 等智能体应用。

项目采用 Python 3.11+ 开发,后端使用 FastAPI 框架,前端采用 Bulma CSS + Alpine.js。向量数据库默认使用 ChromaDB,可切换为 PostgreSQL + pgvector。嵌入模型使用本地 sentence-transformers(all-MiniLM-L6-v2),无需外部 API 密钥。APScheduler 负责外部数据源的定时增量同步。

安装指南

环境要求

  • Python 3.11 或更高版本
  • 可选:PostgreSQL 数据库(默认使用 SQLite)
  • 可选:pgvector 扩展(用于 PostgreSQL 向量存储)

通过 PyPI 安装(推荐)

Bash
pip install agentf

源码安装

Bash
git clone https://github.com/canmengfly/AgentForge.git
cd AgentForge
python -m venv .venv && source .venv/bin/activate
pip install -e .

启动服务

Bash
agentf-api

启动后访问 http://localhost:8000,默认账户为 admin / admin123

快速开始

1. 登录系统

启动后访问 http://localhost:8000,使用默认账户 admin / admin123 登录,首次登录后请立即修改管理员密码

2. 创建集合

在管理界面创建文档集合,用于组织不同主题的知识文档。每个用户的数据位于专属命名空间 u{user_id}_{collection_name},服务端严格隔离。

3. 添加数据

两种方式任选一种或组合:

  • 上传文档:支持 TXT / MD / HTML / PDF / DOCX 文件上传或粘贴文本
  • 连接外部数据源:在「数据源」页面选择 27 种连接器之一,配置凭证 + 同步间隔,调度器将自动同步内容到向量库

4. 测试检索

使用混合检索功能验证效果。调用 POST /me/search/all 可在所有集合(上传文档 + 外部数据源)统一检索,结果经向量相似度 + BM25 重打分后返回 Top-K。

5. 配置 MCP / Skill

在「Agent 集成」页面一键生成 MCP 配置 JSON 或下载 Skill YAML,将 AgentForge 无缝接入 Claude Desktop / OpenClaw / Hermes 等智能体应用。

功能特性

分类 详情
文档摄入 TXT、MD、HTML、PDF、DOCX——文件上传或粘贴文本
外部数据源 27 种连接器:对象存储、关系型数据库、OLAP、NoSQL、文档平台、代码仓库、企业云
混合检索 向量余弦相似度 + BM25 重打分(针对 SQL 结构化数据源)
精排器 可选 Cross-Encoder 精排(sentence-transformers),提升结果精度
定时同步 基于 APScheduler,对所有外部数据源执行增量同步
向量后端 ChromaDB(默认)或 PostgreSQL + pgvector
用户系统 管理员 + 普通用户角色,JWT httpOnly Cookie 认证,bcrypt cost 12
API Token 持久化 API 令牌(aft_ 前缀),SHA-256 哈希存储,仅创建时显示一次
MCP 服务器 stdio 传输,暴露 5 个工具供 Claude 调用
Agent 集成 MCP 配置生成、Skill YAML 下载、API 测试控制台
Web UI Bulma CSS + Alpine.js,管理控制台、用户文档管理

用户数据隔离

每个用户的文档存储于专属 ChromaDB 集合:u{user_id}_{collection_name}。命名空间前缀在服务端强制校验——用户 A 无法访问用户 B 的数据。

外部数据源

AgentForge 支持 27 种外部数据源,可定时同步并与上传文档一同检索。

支持的连接器

分类 类型
对象存储 阿里云 OSS、Amazon S3、腾讯云 COS、华为云 OBS
关系型数据库 MySQL、PostgreSQL、Oracle、SQL Server、TiDB、OceanBase
OLAP / 数据仓库 Apache Doris、ClickHouse、Apache Hive、Snowflake
搜索 / NoSQL Elasticsearch、MongoDB
文档平台 飞书文档、钉钉文档、腾讯文档、Confluence、Notion、语雀
代码平台 GitHub、GitLab
企业云 Microsoft SharePoint、Google Drive

添加数据源

  1. 侧边栏进入「数据源」页面
  2. 点击「新建数据源」,选择类型并填写连接凭证
  3. 点击「测试连接」验证凭证有效性
  4. 设置同步间隔(如 30 分钟)并保存
  5. 调度器自动同步内容到你指定的集合

同步行为

  • 全量同步:首次运行拉取全部内容
  • 增量同步:后续运行仅拉取新增 / 修改内容(数据源支持者)
  • 同步的文档出现在你指定的集合中,即时可检索

文档管理

AgentForge 提供完整的文档生命周期管理功能,包括上传、查询和删除操作。

支持的文件格式

格式 扩展名 解析方式
纯文本 .txt 直接读取
Markdown .md 保留格式文本
HTML .html BeautifulSoup 解析
PDF .pdf pdfplumber 提取
Word .docx python-docx 解析

用户认证

AgentForge 采用 JWT 认证机制,令牌存储在 httpOnly Cookie 中,有效防止 XSS 攻击。

安全特性

  • 密码使用 bcrypt 加密,cost factor 为 12
  • JWT 令牌设置合理过期时间
  • 支持禁用用户账户
  • 用户数据在存储层级隔离

MCP 服务器集成

MCP(Model Context Protocol)是 Anthropic 推出的开放协议,用于标准化 AI 助手与外部数据源和工具的连接方式。AgentForge 提供 MCP 服务器实现,让 Claude 可以直接访问你的知识库。

提供的工具

工具名 功能
search_knowledge 语义搜索知识库
list_collections 列出所有文档集合
add_text_document 添加文本文档
get_document_chunks 获取文档分块内容
delete_document 删除指定文档

配置方法

在「Agent 集成」页面,系统会自动生成 MCP 配置 JSON,拷贝至 Claude Desktop 配置文件即可。同时支持下载 Skill YAML,以即用形式接入 OpenClaw / Hermes 等支持 Skill 协议的智能体应用。页面还提供 API 测试控制台,可在浏览器内验证各工具。

传输方式

当前采用 stdio(标准输入输出)传输,由 Claude Desktop / Claude Code 按需拉起——无需手动启动 MCP 服务。

API 文档

AgentForge 提供完整 RESTful API,所有端点都接收和返回 JSON。支持两种认证方式:浏览器自动携带的 JWT httpOnly Cookie,或请求头中的 Authorization: Bearer aft_xxx

用户文档端点 /me/*

方法 端点 功能
GET/me/collections列出当前用户的所有集合
POST/me/documents/text添加文本文档
POST/me/documents/upload上传文件(TXT / MD / HTML / PDF / DOCX)
GET/me/documents列出集合下的文档
DELETE/me/documents/{doc_id}删除文档及其分块
DELETE/me/collections/{name}删除整个集合
GET/me/chunks分页列出分块
POST/me/search在指定集合中执行混合检索
POST/me/search/all跨所有集合统一混合检索

数据源端点 /me/datasources

方法 端点 功能
GET/me/datasources列出已连接的数据源
POST/me/datasources创建数据源
GET/me/datasources/{id}获取数据源详情
PUT/me/datasources/{id}更新数据源配置
DELETE/me/datasources/{id}删除数据源
POST/me/datasources/{id}/test测试连接
POST/me/datasources/{id}/sync手动触发一次同步

API Token 端点 /me/tokens

方法 端点 功能
GET/me/tokens列出当前用户的 API Token
POST/me/tokens创建 Token(明文仅返回一次)
DELETE/me/tokens/{id}删除 Token

管理员端点 /api/admin/*

方法 端点 功能
GET/api/admin/stats平台统计数据
GET/api/admin/users用户列表(可分页与过滤)
POST/api/admin/users创建用户
PUT/api/admin/users/{id}更新用户(角色 / 邮箱 / 密码 / 状态)
DELETE/api/admin/users/{id}删除用户
GET/api/admin/collections列出全平台集合

检索请求示例

JSON
POST /me/search
Content-Type: application/json
Authorization: Bearer aft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

{
  "query": "什么是向量数据库?",
  "collection": "notes",
  "top_k": 5
}

检索响应示例

JSON
{
  "results": [
    {
      "chunk_id": "xyz789",
      "doc_id": "abc123",
      "content": "向量数据库是一种专门设计...",
      "score": 0.892,
      "metadata": {
        "source_type": "mysql",
        "table": "products"
      }
    }
  ]
}

环境配置

所有配置均通过环境变量读取,支持 .env 文件。

变量 默认值 说明
DATA_DIR ./data SQLite 与 ChromaDB 文件根目录
CHROMA_PERSIST_DIR {DATA_DIR}/chroma ChromaDB 持久化目录
JWT_SECRET 必填 JWT 签名密钥(至少 32 位字符)
JWT_EXPIRE_MINUTES 10080 Cookie 令牌有效期(分钟,默认 7 天)
VECTOR_BACKEND chroma 向量后端:chromapgvector
PG_VECTOR_URL "" 使用 pgvector 时的 PostgreSQL DSN
EMBEDDING_DIM 384 嵌入向量维度(必须与模型匹配)
EMBEDDING_MODEL all-MiniLM-L6-v2 sentence-transformers 模型名称
RERANKER_MODEL "" Cross-Encoder 模型名称(空 = 禁用精排)

.env 示例

Env
DATA_DIR=/var/agentforge/data
JWT_SECRET=replace-with-a-random-32-char-string
VECTOR_BACKEND=chroma
EMBEDDING_MODEL=all-MiniLM-L6-v2
RERANKER_MODEL=cross-encoder/ms-marco-MiniLM-L-6-v2