经 AI Skill Hub 精选评估,AIR-Agent 获评「强烈推荐」。这款Agent工作流在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 8.0 分,适合有一定技术背景的用户使用。
AIR-Agent 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
AIR-Agent 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
# 方式一:pip 安装(推荐)
pip install air-agent
# 方式二:虚拟环境安装(推荐生产环境)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install air-agent
# 方式三:从源码安装(获取最新功能)
git clone https://github.com/ShiYu0318/AIR-Agent
cd AIR-Agent
pip install -e .
# 验证安装
python -c "import air_agent; print('安装成功')"
# 命令行使用
air-agent --help
# 基本用法
air-agent input_file -o output_file
# Python 代码中调用
import air_agent
# 示例
result = air_agent.process("input")
print(result)
# air-agent 配置文件示例(config.yml) app: name: "air-agent" debug: false log_level: "INFO" # 运行时指定配置文件 air-agent --config config.yml # 或通过环境变量配置 export AIR_AGENT_API_KEY="your-key" export AIR_AGENT_OUTPUT_DIR="./output"
RAGency keeps you on top of fast-moving AI research without the daily manual grind. It gathers the latest papers and community discussion from many sources, distills each item into a concise summary, and builds a searchable knowledge base you can query in natural language. Retrieval spans both a dense/sparse vector index and a citation/concept graph, so the system answers specific questions and reasons about a field as a whole.
The primary interface is an interactive web dashboard (React + FastAPI, GitHub-dark aesthetic, EN/ZH bilingual): streaming Q&A with citations, shareable conversations, interactive D3 citation/concept graphs, deep-research and writing tools, a reading kanban with RSS feeds and exports, trend analytics, learning paths, and per-user notification scheduling. A Discord bot remains as a secondary interface sharing the same core, with a scheduled daily digest and slash commands. User interactions feed a preference reward model that continuously tunes recommendation ranking.
The project runs on free, local components where possible: Groq (OpenAI-compatible) for generation, sentence-transformers for local embeddings, and FAISS for vector search. Heavier options (BGE embeddings and rerankers, HNSW indexing, Postgres + pgvector, OpenAlex citation data, PDF full-text ingestion) are available behind configuration switches and degrade gracefully when their services or models are unavailable.
uv, or DockerGROQ_API_KEY=your-groq-api-key
DISCORD_BOT_TOKEN=your-bot-token DISCORD_CHANNEL_ID=your-channel-id
Single container — the image bakes the frontend build and FastAPI serves it:
```bash
SCHEDULER_ENABLED=1 # per-user digests and reminders (compose sets this) STORE_BACKEND=sqlite # or postgres (+ DATABASE_URL) ```
Everything else is optional and safely skipped when unset — the full reference:
| Variable | Required | Description |
|---|---|---|
GROQ_API_KEY | yes | Groq API key ([console.groq.com](https://console.groq.com)) |
GROQ_MODEL | Model id (default llama-3.3-70b-versatile) | |
DISCORD_BOT_TOKEN | bot | Discord bot token (required only for the bot) |
DISCORD_CHANNEL_ID | bot | Channel id for the daily push |
DISCORD_GUILD_ID | Guild id for instant slash-command sync (else global sync) | |
ARXIV_QUERY | arXiv query (default cat:cs.AI) | |
DAILY_COUNT / REPORT_COUNT | Papers fetched per daily push / per report | |
PUSH_HOUR / PUSH_MINUTE / PUSH_TZ_OFFSET | Default daily push time and timezone offset | |
EMBED_MODEL | Embedding model (default all-MiniLM-L6-v2, or BAAI/bge-m3) | |
INDEX_TYPE / HNSW_M | Vector index: flat (exact) or hnsw (approximate) | |
RERANK_ENABLED / RERANK_MODEL | Enable BGE cross-encoder reranking | |
TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID | Enable Telegram delivery | |
SMTP_HOST / SMTP_PORT / SMTP_USER / SMTP_PASSWORD / SMTP_FROM / EMAIL_TO | Enable Email delivery | |
LINE_CHANNEL_TOKEN / LINE_TO | Enable LINE delivery (Messaging API) | |
GITHUB_TOKEN | Optional, raises GitHub API rate limits | |
X_BEARER_TOKEN | Enables the X/Twitter crawler (X API v2 requires a paid plan) | |
JWT_SECRET | Dashboard auth secret (ephemeral if unset; set it in production) | |
JWT_EXPIRE_MINUTES | Token lifetime (default 7 days) | |
CORS_ORIGINS / API_PUBLIC_URL / FRONTEND_URL | Dashboard URLs (defaults fit local dev) | |
GOOGLE/GITHUB/DISCORD_CLIENT_ID/SECRET | OAuth sign-in and Discord account linking | |
STORE_BACKEND / DATABASE_URL | sqlite (default) or postgres with pgvector | |
SCHEDULER_ENABLED | Per-user digest/reminder scheduler (compose sets it to 1) |
The arXiv, news, Hacker News, Reddit, and GitHub crawlers work without credentials. Telegram/Email/LINE delivery, OAuth providers, and the X/Twitter crawler activate only once their keys are set. Changing EMBED_MODEL changes vector dimension; the store detects this and rebuilds the index automatically.
The dashboard is self-explanatory after First steps; every page is described in Web dashboard, and the full REST surface in API reference.
cp backend/.env.example backend/.env
```bash
Settings live in backend/.env (never committed). The minimum working configuration:
```bash
1. Create an application at the Discord Developer Portal. 2. Under Bot -> Reset Token, copy the token into DISCORD_BOT_TOKEN. 3. Under OAuth2 -> URL Generator, select scopes bot and applications.commands, grant Send Messages, Read Message History, and Embed Links, and use the generated URL to invite the bot. 4. Enable Developer Mode in Discord to copy the channel and guild IDs.
```
For Postgres, also set STORE_BACKEND=postgres and DATABASE_URL in backend/.env.
cd backend uv sync # install dependencies (includes PyTorch; first run is slow) cp .env.example .env # then fill in your keys uv run python main.py api # dashboard API at :8000 (serves frontend/dist if built) uv run python main.py bot # or: the Discord bot uv run python main.py all # or: both at once
cd frontend npm install npm run dev # UI at http://localhost:5173
`uv run` uses the project virtualenv automatically. If you prefer an activated shell:
bash source backend/.venv/bin/activate # then run: python main.py api ```
All endpoints are also browsable live at /docs (Swagger UI) and /redoc. Unless marked public, endpoints require Authorization: Bearer <JWT> obtained from register/login or OAuth. Streaming endpoints return Server-Sent Events (data: {json}\n\n frames).
| Method | Path | Description |
|---|---|---|
| GET | /api/papers | List papers (?limit=&source=&query=) with reproducibility signals |
| GET | /api/paper/{id} | Paper detail with credibility (OpenAlex) and reproducibility |
| POST | /api/daily | Fetch today's arXiv papers, store and index them |
| GET | /api/daily/personalized | Papers ranked against your interaction profile |
| POST | /api/interactions | Log an interaction (like, click, ...) for recommendations (201) |
| GET | /api/reading | Reading kanban items (?state=to-read\|reading\|done) |
| POST | /api/reading | Add a paper to the kanban (201) |
| PATCH | /api/reading/{paper_id} | Move between states |
| DELETE | /api/reading/{paper_id} | Remove from the kanban (204) |
| GET | /api/export/csv | Export the library as CSV |
| GET | /api/export/bibtex | Export as BibTeX |
| GET | /api/export/obsidian | Export as an Obsidian-ready Markdown zip |
| Method | Path | Description |
|---|---|---|
| GET | /api/feeds | Your RSS feeds |
| POST | /api/feeds | Add a feed (201; 409 on duplicate) |
| PATCH | /api/feeds/{id} | Update title/category/enabled |
| DELETE | /api/feeds/{id} | Remove a feed (204) |
| POST | /api/feeds/refresh | Fetch all enabled feeds into the library |
| GET | /api/subscriptions | Your keyword subscriptions |
| POST | /api/subscriptions | Add a keyword subscription (201) |
| DELETE | /api/subscriptions/{name} | Remove one (204) |
| Method | Path | Description |
|---|---|---|
| GET | /api/graph/citation?seed= | Citation network around a seed (arXiv id or title), D3 nodes/edges + PageRank + communities |
| GET | /api/graph/concept | Concept graph over the library (?refresh=1 rebuilds) |
| GET | /api/graph/global?query= | Community-summary map-reduce answer for corpus-level questions |
| Method | Path | Description |
|---|---|---|
| POST | /api/deepresearch | **SSE** — decompose → per-question research → synthesis; events: decompose, section, synthesis, citations, done |
| POST | /api/litreview | Literature review over retrieved papers |
| POST | /api/compare | Multi-paper method comparison table |
| POST | /api/report | Structured topic report with citations |
| POST | /api/bibtex | BibTeX for retrieved papers |
| POST | /api/explain | Guided plain-language deep-read of one paper |
| POST | /api/write/{tool} | Writing tools: polish, contributions, review, checklist, latex, slides |
| Method | Path | Description |
|---|---|---|
| GET | /api/trends | Rising keywords (slope-ranked) + top keywords (?granularity=month\|year&top=) |
| GET | /api/trends/{keyword} | One keyword's time series and next-period forecast |
| GET | /api/digest/weekly | Weekly digest: top recent papers, keywords, LLM overview |
| GET | /api/analytics | Your activity, action totals, reading pipeline, top topics (?days=) |
| Method | Path | Description |
|---|---|---|
| GET | /api/notifications/preferences | Your notification preferences |
| PUT | /api/notifications/preferences | Update them; the scheduler reschedules immediately |
| GET | /api/reminders | Open reminders (?include_done=true for all) |
| POST | /api/reminders | Create a reminder (201) |
| POST | /api/reminders/{id}/complete | Mark done |
| DELETE | /api/reminders/{id} | Delete (204) |
| GET | /api/learning-paths | Your learning paths |
| POST | /api/learning-paths | Generate a path for a topic (LLM, retrieval fallback) (201) |
| PATCH | /api/learning-paths/{id} | Update items/progress/topic |
| DELETE | /api/learning-paths/{id} | Delete (204) |
| GET | /api/skills | Your skill levels |
| PUT | /api/skills | Set a skill level (0-100) |
| Method | Path | Description |
|---|---|---|
| GET | /api/health | Store stats, scheduler status, provider-key readiness (booleans only) — public |
| GET | /api/sources | Data-source configuration status |
| GET | /api/memory | Your agent memory items (?kind=&contains=&limit=) |
| POST | /api/memory | Add a memory item (201) |
| POST | /api/eval | RAG evaluation — engine=offline (default): precision@k, recall, MRR, lexical faithfulness; engine=judge: RAGAS-style LLM-judged faithfulness, answer relevancy, context precision/recall (503 without GROQ_API_KEY) |
| POST | /api/agent | Tool-calling agent (503 without GROQ_API_KEY) |
- Literature review generation with identified research gaps. - BibTeX export with generated citation keys. - Method comparison tables across papers. - Guided deep-read explanations of dense papers. - Credibility and impact signals from citation counts. - Reproducibility signals from linked code repositories. - Reading kanban (to-read / reading / done) with drag-and-drop, and topic subscriptions. - Obsidian export — render papers and links as Markdown notes with frontmatter and wikilinks for Obsidian, Juggl, and Dataview; CSV and BibTeX exports alongside. - Writing assistance — LaTeX drafts, slide outlines, polishing, contribution extraction, review suggestions, and submission checklists.
- Hybrid retrieval — dense vector search (FAISS, optional HNSW) fused with BM25 lexical search via Reciprocal Rank Fusion. - Query transformation — HyDE, multi-query rewriting, and question decomposition to widen recall. - Cross-encoder reranking — optional BGE reranker for second-stage precision. - Parent-document retrieval — retrieve focused child chunks, return their parent papers. - Contextual chunk embedding — situate each chunk within its document before embedding. - Semantic answer cache — short-circuit near-duplicate questions. - Traceable citations — chunk-level source markers resolve back to paper, section, and link, with a citation-accuracy metric to score grounding.
| Method | Path | Description |
|---|---|---|
| POST | /api/ask | **SSE** — streamed answer over the library; events: conversation, token, citations, done |
| GET | /api/conversations | List conversations (?query= searches titles and messages) |
| GET | /api/conversations/{id} | One conversation with messages and citations |
| PATCH | /api/conversations/{id} | Rename |
| DELETE | /api/conversations/{id} | Delete (204) |
| POST | /api/conversations/{id}/share | Create a public share link, returns {token, url} |
| GET | /api/shared/{token} | Read a shared conversation — public |
AIR-Agent (RAGency) 是一款专为 AI 研究人员设计的自动化情报工具。它能够自动追踪并汇总最新的 AI 论文与社区讨论,通过将海量信息提炼为简洁的摘要,构建起一个可进行自然语言查询的知识库。系统结合了稠密/稀疏向量索引(Dense/Sparse Vector Index)与引用/概念图谱(Citation/Concept Graph),确保在回答特定问题时既能保证语义准确性,又能提供严谨的文献溯源。
本项目集成了先进的 RAG(检索增强生成)技术,能够实现自动化的文献综述、研究缺口识别以及论文深度解读。通过结合混合检索与重排序技术,AIR-Agent 不仅能处理复杂的学术查询,还能通过生成方法对比表、BibTeX 导出以及可信度信号分析,帮助开发者和研究者从繁琐的日常论文阅读中解脱出来,高效掌握 AI 领域的前沿动态。
运行本项目需要准备以下环境:1. Groq API key(可使用免费层级);2. Python 3.13 环境并安装 `uv` 包管理器,或者直接使用 Docker 进行容器化部署;3. 若需启用 Discord bot 功能,需准备 Discord bot token 及相关频道 ID;4. 若涉及前端扩展,可能需要 Node.js 22+ 环境。请确保网络环境能够正常访问 Groq 及相关 API 服务。
推荐使用 Docker Compose 进行一键部署,该方式会自动构建前端并使用 FastAPI 提供服务,最为便捷。对于开发者,也可以选择本地开发模式:首先进入 `backend` 目录,使用 `uv sync` 安装依赖(首次运行会下载 PyTorch,耗时较长),随后通过 `cp .env.example .env` 配置环境变量,最后使用 `uv run python main.py all` 同时启动 Dashboard API 与 Discord bot。
项目启动后,用户可以通过 Web Dashboard 进行交互式操作。Dashboard 界面直观易用,涵盖了从文献检索到深度阅读的所有功能模块。对于需要集成到其他系统的开发者,可以通过提供的 REST API 进行深度调用。初次使用请务必参考“First steps”完成基础配置,确保 API Key 已正确注入。
项目通过环境变量进行配置。核心参数包括 `GROQ_API_KEY`(必填)以及用于指定模型的 `GROQ_MODEL`。若需启用定时任务(如用户摘要提醒),需设置 `SCHEDULER_ENABLED=1`。存储后端支持 `sqlite` 或 `postgres`,若使用 Postgres,请务必在 `.env` 中配置 `STORE_BACKEND=postgres` 并提供正确的 `DATABASE_URL`。
本项目提供完整的 RESTful API 接口。Dashboard API 运行在 `http://localhost:8000`,并自带交互式文档 `http://localhost:8000/docs`。核心对话接口 `/api/ask` 支持 SSE(Server-Sent Events)流式输出,能够实时返回 `conversation`、`token` 及 `citations`(引用)等事件,确保用户在获取答案的同时能看到准确的文献来源。
AIR-Agent 提供了一套完整的科研工作流工具:支持自动生成带有研究缺口识别的文献综述(Literature Review);支持带引用键的 BibTeX 导出;能够自动生成不同论文间的方法对比表(Method Comparison Tables);提供引导式深度阅读功能,帮助理解晦涩论文;并结合引用计数提供可信度与影响力信号,甚至包含论文的可复现性(Reproducibility)评估。
关于检索质量,系统采用了混合检索(Hybrid Retrieval)机制,通过 Reciprocal Rank Fusion 将 BM25 词法搜索与向量搜索相结合。针对复杂查询,系统内置了 HyDE(假���性文档嵌入)、多查询重写(Multi-query Rewriting)及问题分解技术以提升召回率。此外,可选配 BGE reranker 进行交叉编码重排序,以确保回答的精准度与学术严谨性。
AIR-Agent是一个开源的AI工作流平台,具有较高的潜力和扩展性
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
AI Skill Hub 点评:AIR-Agent 的核心功能完整,质量优秀。对于自动化工程师和运维人员来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | AIR-Agent |
| 原始描述 | 开源AI工作流:AI Research Agent: A Full-Stack Open-Source Platform for Agentic AI Research Ass。⭐6 · Python |
| Topics | ai-agentapicrawlerdatabasepython |
| GitHub | https://github.com/ShiYu0318/AIR-Agent |
| License | MIT |
| 语言 | Python |
收录时间:2026-07-03 · 更新时间:2026-07-03 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端