让世界的变化进入你的工作流
一个面向全网研究和复杂数据分析的云端智能体
核心闭环 · 能力地图 · 协作与控制 · 系统架构 · 快速开始 · GitHub
Reactor 是一个让 Agent 持续关注世界、理解变化并交付结果的开源 Agent 应用底座,由 Java Agent Runtime、React 工作台和 Python Tool Runtime 组成。
Reddit 点赞、X 点赞、YouTube 字幕、小红书互动量、由真金白银和内幕信息支撑的 Polymarket赔率。每天有数百万人用自己的注意力和钱包投票。Reactor会派发多个Agent并行检索这些数据,并结合E2b沙箱的代码执行能力和专门的数据分析Agent。
账号拆解、爆款内容分析、数据复盘和评论区观察 查看小红书策略研究报告
结合推特、YouTube、Reddit、BiliBili、小红书、微博等多方信源交叉核实、事实分档(有证据 / 单方说法 / 谣言)、时间线还原、舆论情绪分析 查看火海中的49秒的报告
功能拆解、用户口碑采集和多维度竞品对比。 查看笔记软件竞品分析报告
收集多个平台的旅游攻略,整理旅游路线和踩坑点 查看厦门旅游规划
Text2SQL 智能取数 → CodeAct 数据分析 Agent→ Canvas 画布展示。
数据获取、清洗、分区域对比、统计检验和可视化。
财报解读、行业格局梳理、竞品对标、多源信息综合 查看特斯拉投研报告
策略建模 → 历史数据回测 → 参数敏感性分析→ 风险指标计算 查看双均线择时策略回测报告
点击折叠
|
AnySearch 是面向 AI Agent 的搜索基础设施,支持通用网络、垂直领域、并行批量搜索与整页内容提取,可通过 Skill 或 CLI 接入多种智能体平台,帮助 Agent 高效获取网页信息。 |
flowchart LR
Observe["Observe<br/>搜索与检索"] --> Evidence["Evidence<br/>证据与来源"]
Evidence --> Analyze["Analyze<br/>数据与代码执行"]
Analyze --> Compose["Compose<br/>GenUI / 图表 / 3D / 文档"]
Compose --> Remember["Remember<br/>记忆与工作流复用"]
Remember --> Observe
- 关注世界:从公开互联网、用户授权的社交来源、私有知识库和业务数据库中发现变化。
- 理解世界:通过多 Agent、RAG、NL2SQL 和受控代码执行,把资料转成可检查的证据和分析结果。
- 表达世界:把结果发布成 GenUI、图表、HTML、PDF、Word、PPT 或可交互的 3D 场景,并保留来源和执行记录。
- 记忆沉淀:把用户偏好、重要事实、可复用流程沉淀为长期记忆,让下一次任务从已有积累继续,而不是从头开始。
Reactor 将“搜索”视为一个可以继续执行的研究过程,而不是一次关键词查询。
- DeepResearch公域信息检索:查询拆解、多轮
extend/search/report阶段、并发检索、正文抓取、去重、摘要和 SSE 流式进度,支持 DuckDuckGo、Exa、Tavily、Brave、Grok/OpenAI-compatible 等搜索引擎。 - 私域媒体检索:RSS、GitHub、Reddit、Hacker News、Stack Exchange、V2EX、Twitter、Telegram、YouTube、B站、小红书、微博、雪球
- 可溯源多模态RAG:支持 PDF、Word、PowerPoint、Markdown、文本和图片解析,结合 OCR、caption、文本向量、图片向量、BM25、页面检索和重排序。
- 结构化数据分析:Table RAG、schema/列值召回、Text-to-SQL(NL2SQL)、SQL 执行、数据预览和模型元数据检索。- CodeAct 风格执行:Agent 通过“生成代码 → 执行 → 观察结果 → 修正计划”的循环完成清洗、统计、计算和可视化,代码与执行结果也可以作为产物交付。
- 非结构化数据分析:文档切分、跨文档召回、图片候选、检索 trace 和带上下文生成。
- E2B 沙箱:支持 E2B 云沙箱、持久 kernel、工作区上传、文件 diff、产物下载和沙箱销毁
- GenUI:模型生成受控的 UI Tree,使用增量 JSON Patch 演进画布状态,并由 React 按白名单组件渲染。
- 可视化组件:图表、表格、卡片、流程、时间线、表单、HTML、图片、视频和交互式内容。
- 3D 展示:内置 Three.js 场景和
Model3D组件,可展示参数化几何、GLB/GLTF 模型和可交互的 3D 结果。 - 文档生成:支持 PDF、DOCX、PPTX、HTML、Markdown、Excel 和图表等产物。
- 支持主题模板导入:PDF/Word/PPT/HTML 渲染器共享命名主题和自定义主题配置。Agent 只负责输出内容 JSON,让 Renderer 根据预配置主题负责字体、颜色、布局和格式转换。
- 画布发布:可将 HTML、PDF、Word、PPT等产物发布,用户可预览、下载。
- 内置工具:
deepsearch、web_fetch、mragQuery、table_rag、nl2sql、code_interpreter、data_analysis、dataprep、chart_generator、document_generate、slides_generate、image_generation、workspace_*和canvas。 - Skill Runtime:从
runtime/skills/<skill-name>/加载SKILL.md、参考资料和脚本;支持目录扫描、脚本发现、会话物化、路径防护和超时控制。 - MCP:通过 Server Descriptor、Registry 和 Executor 发现并调用外部工具,支持 SSE、STDIO 和 Streamable HTTP 传输方式。
- 远程工具运行时:
reactor-tool基于 FastAPI 承载搜索、RAG、数据处理、文件服务、文档生成和代码执行等重型能力。
Reactor 支持把一个复杂目标拆给多个职责明确的 Agent,并让主 Agent 继续推进。
- 同步子 Agent:默认等待子任务结果,适合需要即时汇总的检索、分析和验证步骤。
- 异步后台 Agent:设置
run_in_background=true后,长任务在后台运行,主对话可以继续处理其他工作。 - 任务控制:支持查询后台任务结果、停止任务、恢复观察和向运行中的 Agent 注入指导。
- 上下文隔离:子 Agent 可以拥有独立的工具集合、memory scope 和会话工作区,避免无关工具和上下文相互污染。
- 协作通信:父子 Agent 通过 session 级 mailbox 传递消息
Agent 不必在所有步骤上自动做决定。Reactor 在执行链路中提供可恢复的人机协作节点:
生成计划 -> 等待审批 -> 执行任务 -> 遇到不确定性 -> 向用户提问 -> 继续执行
- 计划审批:
approve、reject、resume、cancel - 用户追问:
AskUserQuestion、回答、恢复和取消 - 运行控制:停止 Run、断线后
follow、运行中注入新的指导 - 前端恢复:刷新或重新连接后恢复待审批、待回答和后台运行状态
Reactor 将长期能力组织成三种记忆,便于理解不同信息应该如何沉淀:
| 记忆类型 | 记录内容 | 当前实现映射 |
|---|---|---|
| 语义记忆 | 用户偏好、长期事实、稳定知识和策展内容 | curated memory、可选 LTM Provider |
| 情景记忆 | 过去的会话、任务、工具调用、文件和分析结果 | Execution Ledger、工作记忆投影、历史回放 |
| 程序性记忆 | 如何完成一类任务的 Skill、SOP、脚本和执行经验 | runtime/skills/、SOP 召回和工具流程 |
长任务和长会话会自动进入上下文治理流程:
- 跨轮对话从工作记忆投影 hydrate,保留下一轮 LLM 所需的消息结构。
- 接近上下文预算时执行摘要压缩,保护任务目标、关键早期信息和最近工具结果。
- 支持 LLM 摘要、局部压缩、失败回退和 mid-run 压缩。
- 压缩前可以触发长期记忆 flush,压缩事件和输入输出快照可审计。
- 工作记忆用于下一轮上下文,历史回放仍以 Execution Ledger 为事实来源。
Reactor 把实时 Agent 编排和重型工具执行拆开:Java 负责运行时、策略、会话、HITL 和执行账本;Python 负责搜索、RAG、数据处理、文档生成和代码沙箱;React 负责流式工作台、产物预览和 GenUI 渲染。三者通过 HTTP、SSE、MCP 和文件服务协作。
flowchart LR
User["用户"] --> UI["React UI<br/>SSE / History Replay"]
UI --> Trigger["Trigger<br/>HTTP / SSE / File"]
Trigger --> Case["Case<br/>Dispatch / Run Control"]
Case --> Domain["Domain Runtime<br/>ReAct / Plan-Solve"]
Domain --> Ports["Domain Ports"]
Ports --> Infra["Infrastructure<br/>DAO / Remote / Artifact"]
Domain --> LLM["LLM<br/>Spring AI / OpenAI-compatible"]
Domain --> MCP["MCP<br/>SSE / STDIO / HTTP"]
Domain --> Tools["reactor-tool<br/>FastAPI Tool Runtime"]
Infra --> Ledger[("MySQL<br/>Execution Ledger")]
Infra --> Files[("Artifact / File Store")]
Tools --> Files
Tools --> Vector[("Qdrant / Elasticsearch<br/>optional")]
Trigger -->|stream events| UI
| 服务 / 层 | 主要职责 | 典型能力 |
|---|---|---|
| React Workbench | 实时交互与结果呈现 | SSE、对话、计划、后台任务、文件预览、GenUI、3D |
| Java Agent Runtime | Agent 生命周期和任务编排 | ReAct、Plan-Solve、Workflow、Memory、HITL、Ledger |
| Python Tool Runtime | 重型工具和数据计算 | DeepSearch、MRAG、NL2SQL、CodeAct、文档生成 |
| E2B / Sandbox | 代码执行隔离边界 | 持久 kernel、工作区同步、超时、权限和产物采集 |
| MySQL / Artifact Store | 执行事实与文件引用 | Run、LLM、Tool、Artifact、结构化工具输出 |
| Qdrant / Elasticsearch | 可选检索基础设施 | 向量召回、表结构检索、列值召回和重排序 |
- JDK 21
- Maven 3.8+
- Node.js 18+ 与 pnpm
- Python 3.11+ 与 uv
- MySQL 8
- 一个 OpenAI-compatible LLM API
- Qdrant、Elasticsearch、图像模型、搜索服务和 E2B 沙箱均为可选能力
git clone https://github.com/OWWZO/ai-agent.git
cd ai-agent创建与开发配置一致的数据库,并导入以下脚本。也可以使用自定义数据库名,但需要同步修改 application-dev.yml 中的连接地址。
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS \`ai-agent-station\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"
mysql -u root -p ai-agent-station < Reactor-agent-app/src/main/resources/db/schema.sql
mysql -u root -p ai-agent-station < Reactor-agent-app/src/main/resources/db/data.sqlreactor-tool 默认监听 1601 端口,负责远程工具、文件服务和部分 RAG 能力。
cd reactor-tool
uv sync
cp .env_template .env
# 编辑 .env,至少配置 OPENAI_API_KEY 与 OPENAI_BASE_URL
# 首次启动初始化文件服务 SQLite 元数据(只需执行一次)
# 默认创建 reactor-tool/autobots.db,并建立 FileInfo 表
uv run python -m reactor_tool.db.db_engine
./start.shWindows PowerShell:
cd reactor-tool
uv sync
Copy-Item .env_template .env
# 编辑 .env 后执行
# 首次启动初始化文件服务 SQLite 元数据(只需执行一次)
# 默认创建 reactor-tool\autobots.db,并建立 FileInfo 表
uv run python -m reactor_tool.db.db_engine
.\start.ps1SQLITE_DB_PATH 控制文件服务元数据库位置。默认值为 autobots.db,相对路径相对于 reactor-tool 目录。该初始化命令使用 SQLModel 的 FileInfo 元数据幂等建表;修改路径后,请先在当前终端设置同名环境变量再执行命令。MRAG 使用的 SQLITE_PATH 由对应 Store 在首次使用时自动创建表。
在新的终端回到仓库根目录:
mvn -pl Reactor-agent-app -am package '-Dmaven.test.skip=true'
java -jar Reactor-agent-app/target/Reactor-agent-app.jarBackend 默认监听 http://127.0.0.1:8100。健康检查:
curl http://127.0.0.1:8100/web/healthcd ui
pnpm install
pnpm dev打开 http://localhost:3000。本地开发环境通过 ui/.env 中的 SERVICE_BASE_URL 连接 Java Backend。
仓库根目录的 Dockerfile 与 docker-compose.yml 是当前唯一的容器部署入口,包含 MySQL、Java Backend、reactor-tool API/sandbox 进程和 Nginx 前端反代。
cp reactor-tool/.env_template reactor-tool/.env
# 编辑 reactor-tool/.env,至少填写 MySQL 密码、OPENAI_BASE_URL 和 OPENAI_API_KEY
docker compose --env-file reactor-tool/.env build
# 首次创建 reactor-data 卷后初始化文件服务 SQLite 元数据
# Compose 会将 SQLITE_DB_PATH 设置为 /data/autobots.db,并写入持久化卷
docker compose --env-file reactor-tool/.env run --rm --no-deps --entrypoint python reactor-tool -m reactor_tool.db.db_engine
docker compose --env-file reactor-tool/.env up -d启动后访问 http://localhost:3000,探活接口为 http://localhost:3000/web/health。也可以从 Reactor-agent-app 目录执行 ./build.sh 构建全部镜像。
Java 生产配置模板是 application-prod.yml,以静态配置为主,已清除真实密钥和密码;部署者需要按实际环境填写空缺凭证和地址。MySQL 初始化脚本只会在首次创建 mysql-data 卷时执行;修改 schema.sql 或 data.sql 后需要按实际情况迁移已有数据库。
Compose 部署时,WORKSPACE_ROOT 应保持为 /data/skilloutput,Backend 与 reactor-tool 会通过 reactor-data 卷共享会话工作区和文件产物。
reactor-data 卷保存 Python 文件服务的 autobots.db、MRAG SQLite 元数据和文件产物。
你是本仓库的部署代理。请先阅读 README.md、CLAUDE.md 以及相关模块说明,默认使用源码部署,不要默认使用 Docker Compose;只有用户明确要求容器部署时才切换到 Docker。开始前检查 JDK 21、Maven 3.8+、MySQL 8、Python 3.11+、uv、Node.js 18+ 和 pnpm,检查 Git 工作区并保留用户已有改动,禁止 reset、checkout 或覆盖未提交文件。按照 README 的顺序配置并启动 MySQL、reactor-tool、Reactor-agent-app 和 ui:没有 reactor-tool/.env 时从 reactor-tool/.env_template 创建,但不要覆盖已有 .env;首次启动执行 `uv run python -m reactor_tool.db.db_engine` 初始化 autobots.db;创建或确认 MySQL 数据库后导入 db/schema.sql 和 db/data.sql;使用 application-prod.yml 作为无真实凭证的部署配置,保留源码部署所需的 127.0.0.1 服务地址,不要把 application-dev.yml 中的真实密钥复制到生产配置。只使用用户明确提供的 LLM、搜索、E2B、Qdrant、ES、OCR、对象存储和登录态凭证,绝不能猜测、生成或输出这些凭证;如果缺少 MySQL 密码、LLM_BASE_URL/OPENAI_BASE_URL、OPENAI_API_KEY、模型名或其他必需配置,停止启动并列出变量名、用途和示例格式。先启动 reactor-tool,再用 `mvn -pl Reactor-agent-app -am package '-Dmaven.test.skip=true'` 构建并启动 Java Backend,最后在 ui 执行 `pnpm install` 和 `pnpm dev`。启动后检查 reactor-tool、`http://127.0.0.1:8100/web/health` 和 `http://localhost:3000`,失败时读取日志并修复配置后重试。只有健康检查通过、SQLite 初始化完成且没有把敏感信息写入 README、日志或 Git 跟踪文件时,才报告部署成功;最后列出实际执行命令、访问地址、数据库和 SQLite 文件位置、仍未配置的可选能力以及需要用户后续处理的事项。不要修改业务代码或删除数据,除非用户明确授权。






















