AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
Crawler Summary
一个开箱即用的完整智能客服服务:基于 FastAPI + LangChain RAG + CrewAI 多 Agent 构建, 提供意图识别路由、知识库问答、多智能体协作、SSE 流式对话等核心客服能力,并内置 检索工程(BM25+RRF+reranker)、稳定性工程(重试/限流/语义缓存)、可观测性(实时监控控制台) 与效果评估体系(RAGAS 评测闭环),可直接部署上线,也可作为独立 AI 服务被现有业务系统(如 Spring Cloud / Node.js 后端)通过 HTTP/SSE 集成调用。 AI Robot 智能客服服务(FastAPI + LangChain RAG + CrewAI 多 Agent) 一个开箱即用的**完整智能客服服务**:基于 **FastAPI + LangChain RAG + CrewAI 多 Agent** 构建, 提供意图识别路由、知识库问答、多智能体协作、SSE 流式对话等核心客服能力,并内置 检索工程(BM25+RRF+reranker)、稳定性工程(重试/限流/语义缓存)、可观测性(实时监控控制台) 与效果评估体系(RAGAS 评测闭环),可直接部署上线,也可作为独立 AI 服务被现有业务系统(如 Spring Cloud / Node.js 后端)通过 HTTP/SSE 集成调用。 $1 目录 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 项目定位 本服 Capability contract not published. No trust telemetry is available yet. 59 GitHub stars reported by the source. Last updated 10/9/2026.
Freshness
Last checked 10/9/2026
Best For
AI-Robot-FastAPI-LangChain-RAG-CrewAI-Agent- is best for crewai, multi-agent workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB REPOS, runtime-metrics, public facts pack
一个开箱即用的完整智能客服服务:基于 FastAPI + LangChain RAG + CrewAI 多 Agent 构建, 提供意图识别路由、知识库问答、多智能体协作、SSE 流式对话等核心客服能力,并内置 检索工程(BM25+RRF+reranker)、稳定性工程(重试/限流/语义缓存)、可观测性(实时监控控制台) 与效果评估体系(RAGAS 评测闭环),可直接部署上线,也可作为独立 AI 服务被现有业务系统(如 Spring Cloud / Node.js 后端)通过 HTTP/SSE 集成调用。 AI Robot 智能客服服务(FastAPI + LangChain RAG + CrewAI 多 Agent) 一个开箱即用的**完整智能客服服务**:基于 **FastAPI + LangChain RAG + CrewAI 多 Agent** 构建, 提供意图识别路由、知识库问答、多智能体协作、SSE 流式对话等核心客服能力,并内置 检索工程(BM25+RRF+reranker)、稳定性工程(重试/限流/语义缓存)、可观测性(实时监控控制台) 与效果评估体系(RAGAS 评测闭环),可直接部署上线,也可作为独立 AI 服务被现有业务系统(如 Spring Cloud / Node.js 后端)通过 HTTP/SSE 集成调用。 $1 目录 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 项目定位 本服
Public facts
5
Change events
1
Artifacts
0
Freshness
Oct 9, 2026
Capability contract not published. No trust telemetry is available yet. 59 GitHub stars reported by the source. Last updated 10/9/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Oct 9, 2026
Vendor
Liubaijiangde Bot
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. 59 GitHub stars reported by the source. Last updated 10/9/2026.
Setup snapshot
Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Liubaijiangde Bot
Protocol compatibility
OpenClaw
Adoption signal
59 GitHub stars
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
python
text
客户端(小程序 / Web / 后端服务)
│ POST /api/v1/chat | /chat/stream | /ingest
▼
FastAPI (app/main.py)
│ ── 请求日志中间件(耗时统计) / 滑动窗口限流中间件 / 统一异常兜底
│
├─ CrewAI 可用 → 多 Agent(意图识别官 → 客服执行员,独立线程)
│ ├─ search_knowledge(RAG 检索增强生成)
│ ├─ query_order(Mock,生产 HTTP 对接 order-server)
│ └─ after_sale_rule(售后规则)
│
└─ 降级 → 内置 LangChain 路由(意图分类 + RAG/闲聊,逻辑与 Crew 一致)
│
└─ 稳定性层:语义缓存(首轮双门限)→ 重试(LLM/Embedding)→ 限流(入口)
│
└─ RAG 链路:
文档解析(pypdf/python-docx) → 分块(Recursive / Markdown 标题)
→ Embedding(OpenAI 兼容) → 向量检索
→ 混合:jieba+BM25 词面检索 → RRF 融合 → bge-reranker 重排
→ RAG 生成(带会话记忆)
│
└─ 可观测:traces 链路追踪 → /dashboard 控制台 / /api/v1/traces / /api/v1/statstext
客户端 ──POST /api/v1/chat──▶ 限流中间件(放行/429)
──▶ 语义缓存检查(仅首轮无上下文:embedding → 双门限;命中直接返回)
──▶ 意图分类(LLM:knowledge/order/chat)
──▶ 执行:knowledge → 混合检索(向量+BM25→RRF→重排) → RAG 生成
order → 订单工具(Mock/HTTP)
chat → LLM 闲聊
──▶ 写会话记忆 + 写语义缓存(知识类) + 记录链路追踪
──▶ 200 JSON {reply, intent, sources, engine, cache_hit}powershell
cd E:\develop\airobot .\start.ps1 # 或直接双击 start.bat
powershell
python -m venv .venv .\.venv\Scripts\Activate.ps1 # macOS/Linux: source .venv/bin/activate # 核心依赖(服务 + RAG + 稳定性,必须) pip install -r requirements.txt # 可选能力按需安装(未装则自动降级,不影响基础问答) pip install -r requirements-extra.txt # crewai 多智能体 + bge-reranker 重排(含 torch,体积大) pip install -r requirements-eval.txt # RAGAS 评测
powershell
Copy-Item .env.example .env # macOS/Linux: cp .env.example .env
ini
AIROBOT_LLM_BASE_URL=http://localhost:11434/v1 AIROBOT_LLM_API_KEY=ollama AIROBOT_LLM_MODEL=qwen2.5:1.5b AIROBOT_EMBEDDING_BASE_URL=http://localhost:11434/v1 AIROBOT_EMBEDDING_API_KEY=ollama AIROBOT_EMBEDDING_MODEL=nomic-embed-text
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB REPOS
Editorial quality
ready
一个开箱即用的完整智能客服服务:基于 FastAPI + LangChain RAG + CrewAI 多 Agent 构建, 提供意图识别路由、知识库问答、多智能体协作、SSE 流式对话等核心客服能力,并内置 检索工程(BM25+RRF+reranker)、稳定性工程(重试/限流/语义缓存)、可观测性(实时监控控制台) 与效果评估体系(RAGAS 评测闭环),可直接部署上线,也可作为独立 AI 服务被现有业务系统(如 Spring Cloud / Node.js 后端)通过 HTTP/SSE 集成调用。 AI Robot 智能客服服务(FastAPI + LangChain RAG + CrewAI 多 Agent) 一个开箱即用的**完整智能客服服务**:基于 **FastAPI + LangChain RAG + CrewAI 多 Agent** 构建, 提供意图识别路由、知识库问答、多智能体协作、SSE 流式对话等核心客服能力,并内置 检索工程(BM25+RRF+reranker)、稳定性工程(重试/限流/语义缓存)、可观测性(实时监控控制台) 与效果评估体系(RAGAS 评测闭环),可直接部署上线,也可作为独立 AI 服务被现有业务系统(如 Spring Cloud / Node.js 后端)通过 HTTP/SSE 集成调用。 $1 目录 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 项目定位 本服
一个开箱即用的完整智能客服服务:基于 FastAPI + LangChain RAG + CrewAI 多 Agent 构建, 提供意图识别路由、知识库问答、多智能体协作、SSE 流式对话等核心客服能力,并内置 检索工程(BM25+RRF+reranker)、稳定性工程(重试/限流/语义缓存)、可观测性(实时监控控制台) 与效果评估体系(RAGAS 评测闭环),可直接部署上线,也可作为独立 AI 服务被现有业务系统(如 Spring Cloud / Node.js 后端)通过 HTTP/SSE 集成调用。
本服务把"意图识别 → 工具/RAG 执行 → 流式答复"的客服链路做成生产可用的完整程序,而非玩具 Demo:
| 能力模块 | 提供什么 | 对应接口 |
|---|---|---|
| 智能对话 | 意图路由(knowledge/order/chat)+ RAG 问答 + 工具调用 + 多轮记忆 | POST /api/v1/chat |
| 流式对话 | SSE 逐 token 输出,缓存命中整段秒回 | POST /api/v1/chat/stream |
| 多智能体 | CrewAI 意图识别官 → 客服执行员,失败自动降级 | app/agents/crew.py |
| 知识库问答 | 启动自动导入示例库,支持 PDF/DOCX/MD/TXT 上传入库 | POST /api/v1/ingest |
| 工具集成 | 订单查询(Mock,可对接真实系统)、售后规则 | app/agents/tools.py |
| 稳定性 | 重试 / 限流 / 语义缓存三重保障 | app/services/* |
| 可观测性 | 实时监控控制台(含用户模拟对话与全链路可视化)、请求链路追踪、运行指标 | /dashboard、/api/v1/traces、/api/v1/stats |
| 效果评估 | RAGAS 四指标 + LLM-as-Judge + 52 条评测集 | eval/run_eval.py |
| 部署交付 | Docker / docker-compose / GitHub Actions 门禁 | 仓库根目录 |
knowledge(知识问答)/ order(订单查询)/ chat(闲聊),
分类结果 JSON 解析失败时兜底为 chat,保证不中断服务。session_id 维度隔离(InMemoryChatMessageHistory),
每个会话保留最近 AIROBOT_MEMORY_MAX_TURNS 轮、生成时带入最近 AIROBOT_MEMORY_RETRIEVE_TURNS 轮,
支持"追问"类上下文问题。/api/v1/chat)与 SSE 流式(/api/v1/chat/stream),
流式按 stage(限流/缓存/意图/检索/生成等)→ intent → token* → done 事件推送,控制台可实时还原全链路。意图识别官(输出意图 JSON)→ 客服执行员(携带 3 个工具执行),
Process.sequential 顺序执行,结构为 Agent(角色/目标/背景/工具/LLM) + Task + Crew。@tool 包装):
search_knowledge:RAG 检索增强生成(调知识库)query_order:订单/物流查询(当前 Mock,生产通过 HTTP 对接 order-server,见"设计决策")after_sale_rule:售后与退货规则crewai 未安装时 CREW_TOOLS_READY=false,自动切换内置路由;
运行时异常同样降级,/api/v1/stats 的 crew_available 可观测状态。pypdf 解析 PDF、python-docx 解析 Word、文本直接读取。MarkdownHeaderTextSplitter,H1-H4,标题保留在正文中),
超长章节再二次切分;RecursiveCharacterTextSplitter(默认 400 字/重叠 80,中文标点优先断句)。text-embedding-v4 / Ollama nomic-embed-text),
向量库后端可切换:InMemoryVectorStore(默认,零依赖)或 Milvus(AIROBOT_VECTOR_STORE=milvus,持久化 ANN),接口一致;rank_bm25(BM25Okapi),解决向量模型对专有名词不敏感的问题;reciprocal_rank_fusion(RRF)合并两路排名(app/rag/fusion.py)。BAAI/bge-reranker-base CrossEncoder 对候选打分重排;
懒加载 + 本地缓存优先(HF_ENDPOINT 镜像)+ 异常自动降级为融合顺序。RAG_PROMPT 约束模型"只能依据给定资料回答,资料没有的如实说明",
回答附带来源(文件#分块号),支持追溯。| 组件 | 机制 | 配置 |
|---|---|---|
| 重试 resilience.py | tenacity 指数退避(0.5s 起,最大 8s),只重试可恢复错误(429/5xx/网络/超时),校验错误直接失败;同步/异步两版 + safe_call 兜底非关键路径 | AIROBOT_RETRY_ATTEMPTS、AIROBOT_RETRY_MAX_WAIT |
| 限流 ratelimit.py | 进程内滑动窗口(按 IP,60 秒),超限返回 JSON 429;监控接口(stats/traces)白名单豁免 | AIROBOT_RATELIMIT_PER_MINUTE |
| 语义缓存 semantic_cache.py | 首轮无上下文问题按 余弦≥0.75 且 jieba 词面重叠≥0.5 双门限命中复用答案;候选集内取双门限均通过的最高余弦;动态数据(订单)不缓存 | AIROBOT_CACHE_ENABLED / CACHE_THRESHOLD / CACHE_LEXICAL_THRESHOLD |
X-Process-Time-Ms 响应头)。cache_lookup / intent / retrieval / llm / first_token / total 各阶段耗时
(内存环形缓冲 300 条),并聚合 P95、平均延迟、缓存命中率、限流拦截、意图分布。/dashboard 自包含单页,内置“用户模拟对话 + 全链路可视化”面板(流式提问并实时展示各阶段耗时),并 3 秒轮询状态卡片、功能导览与实时请求明细。eval/dataset/qa.jsonl:52 条、8 个主题(含"知识库未覆盖"反例)。eval/reports/report_<时间>.json / .md(分档统计 + 低分样本)。eval job 配置 Secrets 后自动运行(详见 CI 门禁)。| 层 | 组件 | 说明 |
|---|---|---|
| 服务框架 | FastAPI + uvicorn + Pydantic | 异步接口、自动 OpenAPI 文档(/docs)、SSE 支持 |
| LLM 编排 | LangChain(LCEL / ChatPromptTemplate / InMemoryVectorStore / Milvus) | 意图路由、RAG 链路、流式生成 |
| 多智能体 | CrewAI(Agent/Task/Crew) | 可选;未安装自动降级 |
| 模型接入 | OpenAI 兼容协议 | DashScope(qwen-plus / text-embedding-v4)、DeepSeek、Ollama(qwen2.5 / nomic-embed-text) |
| 检索 | jieba + rank_bm25(BM25Okapi)、RRF 融合 | 词面召回与多路融合 |
| 重排 | sentence-transformers bge-reranker-base | 可选;懒加载 + 降级 |
| 稳定性 | tenacity | 指数退避重试 |
| 评测 | ragas 0.3.9 + langchain-community 0.3.31 | RAGAS 四指标 + LLM-as-Judge |
| 部署 | Docker / docker-compose / GitHub Actions | 容器化 + CI 门禁 |
客户端(小程序 / Web / 后端服务)
│ POST /api/v1/chat | /chat/stream | /ingest
▼
FastAPI (app/main.py)
│ ── 请求日志中间件(耗时统计) / 滑动窗口限流中间件 / 统一异常兜底
│
├─ CrewAI 可用 → 多 Agent(意图识别官 → 客服执行员,独立线程)
│ ├─ search_knowledge(RAG 检索增强生成)
│ ├─ query_order(Mock,生产 HTTP 对接 order-server)
│ └─ after_sale_rule(售后规则)
│
└─ 降级 → 内置 LangChain 路由(意图分类 + RAG/闲聊,逻辑与 Crew 一致)
│
└─ 稳定性层:语义缓存(首轮双门限)→ 重试(LLM/Embedding)→ 限流(入口)
│
└─ RAG 链路:
文档解析(pypdf/python-docx) → 分块(Recursive / Markdown 标题)
→ Embedding(OpenAI 兼容) → 向量检索
→ 混合:jieba+BM25 词面检索 → RRF 融合 → bge-reranker 重排
→ RAG 生成(带会话记忆)
│
└─ 可观测:traces 链路追踪 → /dashboard 控制台 / /api/v1/traces / /api/v1/stats
一次对话的完整时序(非流式)
客户端 ──POST /api/v1/chat──▶ 限流中间件(放行/429)
──▶ 语义缓存检查(仅首轮无上下文:embedding → 双门限;命中直接返回)
──▶ 意图分类(LLM:knowledge/order/chat)
──▶ 执行:knowledge → 混合检索(向量+BM25→RRF→重排) → RAG 生成
order → 订单工具(Mock/HTTP)
chat → LLM 闲聊
──▶ 写会话记忆 + 写语义缓存(知识类) + 记录链路追踪
──▶ 200 JSON {reply, intent, sources, engine, cache_hit}
ollama pull qwen2.5:1.5b && ollama pull nomic-embed-textcd E:\develop\airobot
.\start.ps1 # 或直接双击 start.bat
start.ps1 自动完成:检查 .env(缺失自动生成)→ 创建虚拟环境 → 安装核心依赖 →
检查 Ollama 与模型是否就绪 → 启动服务并等待健康检查 → 浏览器自动打开控制台
http://localhost:8000/dashboard。停止服务:.\stop.ps1(日志在 .logs/)。
python -m venv .venv
.\.venv\Scripts\Activate.ps1 # macOS/Linux: source .venv/bin/activate
# 核心依赖(服务 + RAG + 稳定性,必须)
pip install -r requirements.txt
# 可选能力按需安装(未装则自动降级,不影响基础问答)
pip install -r requirements-extra.txt # crewai 多智能体 + bge-reranker 重排(含 torch,体积大)
pip install -r requirements-eval.txt # RAGAS 评测
Copy-Item .env.example .env # macOS/Linux: cp .env.example .env
按你的 LLM 服务编辑 .env(见 环境变量说明),本地 Ollama 示例:
AIROBOT_LLM_BASE_URL=http://localhost:11434/v1
AIROBOT_LLM_API_KEY=ollama
AIROBOT_LLM_MODEL=qwen2.5:1.5b
AIROBOT_EMBEDDING_BASE_URL=http://localhost:11434/v1
AIROBOT_EMBEDDING_API_KEY=ollama
AIROBOT_EMBEDDING_MODEL=nomic-embed-text
uvicorn app.main:app --reload --port 8000
启动时自动导入 data/knowledge_base.md(示例知识库,7 个分块)。
# 健康检查
Invoke-RestMethod http://localhost:8000/health
# 运行指标(知识库块数 / 缓存 / 限流等)
Invoke-RestMethod http://localhost:8000/api/v1/stats
# 知识问答(RAG)
$body = @{ message = "怎么申请退款?"; session_id = "user-001" } | ConvertTo-Json
Invoke-RestMethod -Uri http://localhost:8000/api/v1/chat -Method Post -Body $body -ContentType "application/json"
交互式 API 文档:启动后访问 http://localhost:8000/docs(Swagger UI,自动生成)。
健康检查,返回当前模型配置。无参数。
{"status": "ok", "llm_model": "qwen2.5:1.5b", "embedding_model": "nomic-embed-text"}
智能对话(意图路由 + RAG + 工具)。请求体:
{
"message": "退货运费谁承担?",
"session_id": "user-001"
}
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| message | string | 是 | 用户消息 |
| session_id | string | 否 | 会话标识,默认 default;同一 id 自动带多轮上下文 |
响应 200:
{
"reply": "根据平台规则,因商品质量问题或与描述不符导致的退货,运费由卖家承担;买家个人原因退货则由买家承担。",
"intent": "knowledge",
"sources": ["knowledge_base.md#4", "knowledge_base.md#3"],
"engine": "langchain",
"used_crew": false,
"cache_hit": false
}
| 字段 | 说明 |
|---|---|
| reply | 客服回答 |
| intent | knowledge(知识问答)/ order(订单)/ chat(闲聊)/ crew(多智能体) |
| sources | RAG 来源列表(文件#分块号),非知识问答为空 |
| engine | langchain(内置路由)/ crew(多智能体) |
| used_crew | 本次是否实际走 CrewAI |
| cache_hit | 是否命中语义缓存(命中时整段复用,毫秒级返回) |
错误响应:429(限流,{"detail":"请求过于频繁,请稍后再试。"})、500(统一异常兜底)。
SSE 流式对话。请求体同 /api/v1/chat。响应为 text/event-stream,事件序列:
data: {"type":"stage","stage":"rate_limit","msg":"限流检查通过,请求进入服务","ms":0,"ok":true}
data: {"type":"stage","stage":"cache","msg":"语义缓存未命中","ms":21.4,"ok":true}
data: {"type":"intent","intent":"knowledge"}
data: {"type":"stage","stage":"intent","msg":"意图识别为 knowledge","ms":547.2,"ok":true}
data: {"type":"stage","stage":"retrieval","msg":"混合检索完成","ms":2138.1,
"detail":{"vector_ms":22.2,"vector_hits":7,"bm25_ms":0.1,"bm25_hits":6,
"fusion_ms":0.0,"fused":7,"rerank_ms":2115.4,"rerank_enabled":true},
"sources":["knowledge_base.md#0"],"ok":true}
data: {"type":"token","content":"根据平台规则,"}
data: {"type":"token","content":"因商品质量问题..."}
...
data: {"type":"stage","stage":"generate","msg":"RAG 生成完成(53 tokens)","ms":517.4,"ok":true}
data: {"type":"done","intent":"knowledge","sources":["knowledge_base.md#4"],"total_ms":3225.6}
stage 事件携带各阶段状态 / 耗时 / 明细:检索阶段细分向量 / BM25 / RRF / 重排耗时与命中数,供控制台全链路可视化intent 前 cache 阶段 hit: true,随后单个 token(整段答案)+ done 携带 cache_hit: trueintent=order 时:tool 阶段标识工具调用,单 token 整段返回工具结果stage.error + token 携带错误信息 + done上传文档入库(multipart 表单,字段名 file)。支持 .pdf / .docx / .md / .txt / .markdown。
curl.exe -X POST http://localhost:8000/api/v1/ingest -F "file=@data/knowledge_base.md"
{"file_name": "knowledge_base.md", "chunks": 7, "total_chunks": 14}
运行指标:知识库分块数、LLM/Embedding 模型、多智能体可用性、混合检索/重排开关、 缓存启用状态与命中统计、限流配置与拦截数。控制台数据源之一。
链路追踪:最近 N 条请求(默认 50)的各阶段耗时(缓存/意图/检索/生成)+ 聚合统计 (P95、平均延迟、缓存命中率、限流拦截、意图分布)。
可视化控制台(浏览器访问),详见下节。
启动服务后打开 http://localhost:8000/dashboard(自包含单页、无外部 CDN 依赖):
session_id 模拟多用户,内置快捷问题)限流检查 → 语义缓存 → 意图识别 → 混合检索 → 工具/生成 → 记忆/缓存写入 各阶段状态与耗时;检索阶段细分向量 / BM25 / RRF / 重排GET /api/v1/traces + GET /api/v1/stats;监控接口已从业务限流中豁免需要 Docker Desktop(Windows/macOS)或 Docker Engine(Linux)。
docker compose up -d --build
docker compose logs -f airobot
Invoke-RestMethod http://localhost:8000/api/v1/stats
ollama 服务,entrypoint 自动 ollama pull 与 .env 一致的模型,首次启动较慢http://ollama:11434/v1(服务名解析,无需改 .env)./data 挂载为卷(知识库热更新),hf-cache 卷复用重排模型下载缓存编辑 docker-compose.yml,把 airobot 的两个 AIROBOT_*_BASE_URL 改为 DashScope 地址,
.env 填 API Key,可同时删掉 ollama 服务,重新 docker compose up -d --build。
ARG PIP_INDEX_URL 可覆盖为阿里云等)--mount=type=cache 复用 pip 下载缓存:只改代码重建秒级;改依赖也只下载新增包registry-mirrors
(如 ["https://docker.m.daocloud.io", "https://dockerproxy.com"]),基础镜像只需拉一次.github/workflows/ci.yml:push / PR 自动执行三个串行 job。
| Job | 内容 | 说明 |
|---|---|---|
| build | pip install + py_compile 语法检查 | 必过 |
| test | 稳定性工程离线单测 + 服务导入冒烟 | 必过 |
| eval | RAGAS 前 5 条冒烟评测 | 配置 Secrets 后启用 |
配置仓库 Secrets(Settings → Secrets and variables → Actions):AIROBOT_LLM_API_KEY、
AIROBOT_EMBEDDING_API_KEY。未配置时 eval 自动跳过,build/test 门禁仍生效;
评测报告上传为 workflow artifact。
# 冒烟:前 5 条
$env:AIROBOT_RERANK_ENABLED="false"; python eval\run_eval.py --limit 5
# 全量 52 条(RAGAS 四指标 + Judge + 基线)
python eval\run_eval.py
eval/dataset/qa.jsonl(52 条,8 个主题,含"知识库未覆盖"反例)eval/reports/report_<时间>.json / .md(分档统计 + 低分样本)langchain-community==0.3.31(见 requirements-eval.txt)python scripts\bench_retrieval.py --top-k 5 # vector / bm25 / hybrid_rrf / hybrid_rerank 命中率与耗时
python scripts\bench_splitter.py --top-k 3 # 不同分块参数的检索命中率
python scripts\ingest.py data\knowledge_base.md # CLI 导入知识文件(独立进程)
参考实测(52 条评测集,top-k=2):vector 67% → bm25 98% / hybrid_rrf 98%,证明混合检索必要性。
cache_hit 字段)。intent=order 后由业务服务查订单;
方案 B(AI 侧调用)——airobot 订单工具改为 HTTP 调用 order-server(配置 AIROBOT_ORDER_API_URL + 超时降级)。| 当前实现 | 生产替换 |
|---|---|
| InMemoryVectorStore / Milvus(已内置,AIROBOT_VECTOR_STORE 切换) | Chroma / FAISS(持久化 + ANN 索引,接口一致可再替换) |
| 进程内会话记忆 | Redis / SQLite 持久化 |
| 进程内语义缓存 / 限流 | Redis(分布式缓存与计数),网关层限流 |
| 无鉴权 | 网关统一鉴权 + X-API-Key 头校验 |
| query_order Mock | HTTP 对接 order-server(幂等 + 超时降级) |
airobot/
├── app/
│ ├── main.py FastAPI 入口:接口 / 中间件 / SSE / 异常兜底 / 控制台
│ ├── config.py 环境变量配置(dotenv)
│ ├── schemas.py 请求/响应模型
│ ├── agents/ CrewAI 编排(crew.py)与工具集(tools.py)
│ ├── rag/ loader(解析) / retriever(检索+生成) / lexical(BM25) / fusion(RRF) / reranker
│ ├── services/ chat(编排) / memory(会话) / resilience(重试) / ratelimit(限流)
│ │ / semantic_cache(缓存) / tracing(链路追踪)
│ └── static/ dashboard.html 可视化控制台
├── data/ 知识库文件(启动自动导入)与实验输出 CSV
├── eval/ run_eval.py + dataset/qa.jsonl(52 条)+ reports/
├── scripts/ 检索/分块对比实验、CLI 导入
├── tests/ test_stability.py / test_tracing.py 离线单测
├── .github/workflows/ ci.yml(build → test → eval 门禁)
├── Dockerfile / docker-compose.yml / docker-compose-milvus.yml / .dockerignore 容器化部署(Milvus 单容器编排)
├── start.ps1 / stop.ps1 / start.bat 一键启动/停止(Windows)
├── requirements.txt 核心运行时依赖
├── requirements-eval.txt RAGAS 评测依赖
├── requirements-extra.txt 可选:crewai 多智能体 + bge-reranker 重排
└── .env.example 环境变量模板(复制为 .env 使用)
| 变量 | 说明 | |---|---| | AIROBOT_LLM_BASE_URL / API_KEY / MODEL | 大模型(OpenAI 兼容:DashScope / DeepSeek / Ollama) | | AIROBOT_EMBEDDING_BASE_URL / API_KEY / MODEL | 向量模型(DashScope text-embedding-v4 或 Ollama nomic-embed-text) | | AIROBOT_USE_CREW | 是否优先走 CrewAI(未安装自动降级) | | AIROBOT_TOP_K / CHUNK_SIZE / CHUNK_OVERLAP | 召回条数与分块参数 | | AIROBOT_HYBRID_ENABLED / VECTOR_TOP_K / BM25_TOP_K / FUSION_TOP_K | 混合检索开关与各路召回条数 | | AIROBOT_RERANK_ENABLED / RERANK_MODEL | bge-reranker 重排开关与模型 | | AIROBOT_RETRY_ATTEMPTS / RETRY_MAX_WAIT | 重试次数与最大退避秒数 | | AIROBOT_RATELIMIT_ENABLED / RATELIMIT_PER_MINUTE | 限流开关与每分钟上限(按 IP,60 秒窗口) | | AIROBOT_CACHE_ENABLED / CACHE_THRESHOLD / CACHE_LEXICAL_THRESHOLD / CACHE_MAX_ENTRIES | 语义缓存开关与双门限参数 | | AIROBOT_MEMORY_MAX_TURNS / AIROBOT_MEMORY_RETRIEVE_TURNS | 会话记忆保留轮次 / 带入上下文的轮次 | | AIROBOT_VECTOR_STORE / MILVUS_URI / MILVUS_TOKEN / MILVUS_COLLECTION / MILVUS_RESET_ON_START | 向量库后端(inmemory/milvus)与 Milvus 连接、集合、启动重置开关 |
Q:未配置 API Key 能跑吗? 能。服务可启动(健康检查/文档解析/检索均可用), 对话接口会提示"未配置 AIROBOT_LLM_API_KEY"。本地推荐装 Ollama 免费跑通全链路。
Q:crewai / ragas / sentence-transformers 没装会怎样? 自动降级:多 Agent 走内置
LangChain 路由、评测脚本需装 requirements-eval.txt、重排保留 RRF 融合顺序。
Q:重排模型下载慢/挂起怎么办? 已内置 HF 镜像(HF_ENDPOINT=https://hf-mirror.com)
与本地缓存优先策略;也可 AIROBOT_RERANK_ENABLED=false 关闭。
Q:改了代码每次都要构建镜像吗? 不用。日常开发用宿主机 .venv + uvicorn --reload;
镜像只在发布/交付时 docker compose up -d --build(改代码秒级重建,见"构建加速")。
Q:Java / Node 后端如何调用? 通过 HTTP/SSE 调 /api/v1/chat 或 /api/v1/chat/stream,
参考 接口文档;生产建议走网关 + 内网隔离 + X-API-Key 鉴权。
本项目使用 MIT License(Copyright (c) 2026 Liu Bojiang)。 MIT 是最宽松的开源许可之一:允许任何人自由使用、修改、分发(含商用),只需保留版权声明。
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/contract"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
The Frontend for Agents & Generative UI. React + Angular
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_REPOS",
"generatedAt": "2026-10-10T04:10:43.458Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "crewai",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "multi-agent",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"
}Facts JSON
[
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Liubaijiangde Bot",
"href": "https://github.com/liubaijiangde-bot/AI-Robot-FastAPI-LangChain-RAG-CrewAI-Agent-",
"sourceUrl": "https://github.com/liubaijiangde-bot/AI-Robot-FastAPI-LangChain-RAG-CrewAI-Agent-",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T15:56:32.451Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T15:56:32.451Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "59 GitHub stars",
"href": "https://github.com/liubaijiangde-bot/AI-Robot-FastAPI-LangChain-RAG-CrewAI-Agent-",
"sourceUrl": "https://github.com/liubaijiangde-bot/AI-Robot-FastAPI-LangChain-RAG-CrewAI-Agent-",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T15:56:32.451Z",
"isPublic": true
},
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-liubaijiangde-bot-ai-robot-fastapi-langchain-rag-crewai-/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to AI-Robot-FastAPI-LangChain-RAG-CrewAI-Agent- and adjacent AI workflows.