Skip to content

Latest commit

 

History

314 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reactor logo

Reactor

让世界的变化进入你的工作流

一个面向全网研究和复杂数据分析的云端智能体

Java 21 Spring Boot 3.4.3 Spring AI 1.1.4 React 19 Python 3.11+ MySQL 8

核心闭环 · 能力地图 · 协作与控制 · 系统架构 · 快速开始 · GitHub

项目定位:

全网调研,自动成稿

Reactor 是一个让 Agent 持续关注世界、理解变化并交付结果的开源 Agent 应用底座,由 Java Agent Runtime、React 工作台和 Python Tool Runtime 组成。

Reddit 点赞、X 点赞、YouTube 字幕、小红书互动量、由真金白银和内幕信息支撑的 Polymarket赔率。每天有数百万人用自己的注意力和钱包投票。Reactor会派发多个Agent并行检索这些数据,并结合E2b沙箱的代码执行能力和专门的数据分析Agent。

落地案例展示

(使用模型:gpt5.6-luna-high)

一. 全网研究

1:社媒内容调研

账号拆解、爆款内容分析、数据复盘和评论区观察 查看小红书策略研究报告

小红书自媒体策略研究报告预览

2:热点舆论事件分析

结合推特、YouTube、Reddit、BiliBili、小红书、微博等多方信源交叉核实、事实分档(有证据 / 单方说法 / 谣言)、时间线还原、舆论情绪分析 查看火海中的49秒的报告

小红书自媒体策略研究报告预览

3:竞品研究

功能拆解、用户口碑采集和多维度竞品对比。 查看笔记软件竞品分析报告

笔记软件竞品分析报告预览

4:自媒体平台内容聚合

收集多个平台的旅游攻略,整理旅游路线和踩坑点 查看厦门旅游规划

二. 数据分析

1:结构化数据分析

Text2SQL 智能取数 → CodeAct 数据分析 Agent→ Canvas 画布展示。

查看大模型调用数据分析报告

大模型调用数据分析图 结构化数据分析结果

2:量化实证研究

数据获取、清洗、分区域对比、统计检验和可视化。

全球糖尿病患病率变化趋势图

3:投研分析(金融情报调研)

财报解读、行业格局梳理、竞品对标、多源信息综合 查看特斯拉投研报告

4:量化回测

策略建模 → 历史数据回测 → 参数敏感性分析→ 风险指标计算 查看双均线择时策略回测报告

三.设计与创意

四.功能展示

一:GenUi交互式界面

二:Human In The Loop

三:深度研究/Agentic RAG

四:Text2SQL 智能问数界面

❤️赞助商

点击折叠
AnySearch 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
Loading
  1. 关注世界:从公开互联网、用户授权的社交来源、私有知识库和业务数据库中发现变化。
  2. 理解世界:通过多 Agent、RAG、NL2SQL 和受控代码执行,把资料转成可检查的证据和分析结果。
  3. 表达世界:把结果发布成 GenUI、图表、HTML、PDF、Word、PPT 或可交互的 3D 场景,并保留来源和执行记录。
  4. 记忆沉淀:把用户偏好、重要事实、可复用流程沉淀为长期记忆,让下一次任务从已有积累继续,而不是从头开始。

核心亮点

1. Observe:搜索、NL2SQL与 RAG

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、页面检索和重排序。

2. Analyze:数据、代码与安全执行

  • 结构化数据分析:Table RAG、schema/列值召回、Text-to-SQL(NL2SQL)、SQL 执行、数据预览和模型元数据检索。- CodeAct 风格执行:Agent 通过“生成代码 → 执行 → 观察结果 → 修正计划”的循环完成清洗、统计、计算和可视化,代码与执行结果也可以作为产物交付。
  • 非结构化数据分析:文档切分、跨文档召回、图片候选、检索 trace 和带上下文生成。
  • E2B 沙箱:支持 E2B 云沙箱、持久 kernel、工作区上传、文件 diff、产物下载和沙箱销毁

3. Compose:GenUI、画布与文档产物

  • 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等产物发布,用户可预览、下载。

Tool Fabric:工具、Skill 与 MCP

  • 内置工具deepsearchweb_fetchmragQuerytable_ragnl2sqlcode_interpreterdata_analysisdataprepchart_generatordocument_generateslides_generateimage_generationworkspace_*canvas
  • Skill Runtime:从 runtime/skills/<skill-name>/ 加载 SKILL.md、参考资料和脚本;支持目录扫描、脚本发现、会话物化、路径防护和超时控制。
  • MCP:通过 Server Descriptor、Registry 和 Executor 发现并调用外部工具,支持 SSE、STDIO 和 Streamable HTTP 传输方式。
  • 远程工具运行时reactor-tool 基于 FastAPI 承载搜索、RAG、数据处理、文件服务、文档生成和代码执行等重型能力。

协作与控制

Multi-Agent:同步 + 异步

Reactor 支持把一个复杂目标拆给多个职责明确的 Agent,并让主 Agent 继续推进。

  • 同步子 Agent:默认等待子任务结果,适合需要即时汇总的检索、分析和验证步骤。
  • 异步后台 Agent:设置 run_in_background=true 后,长任务在后台运行,主对话可以继续处理其他工作。
  • 任务控制:支持查询后台任务结果、停止任务、恢复观察和向运行中的 Agent 注入指导。
  • 上下文隔离:子 Agent 可以拥有独立的工具集合、memory scope 和会话工作区,避免无关工具和上下文相互污染。
  • 协作通信:父子 Agent 通过 session 级 mailbox 传递消息

Human-in-the-loop

Agent 不必在所有步骤上自动做决定。Reactor 在执行链路中提供可恢复的人机协作节点:

生成计划 -> 等待审批 -> 执行任务 -> 遇到不确定性 -> 向用户提问 -> 继续执行
  • 计划审批:approverejectresumecancel
  • 用户追问: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
Loading

服务职责

服务 / 层 主要职责 典型能力
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 沙箱均为可选能力

1. 获取代码

git clone https://github.com/OWWZO/ai-agent.git
cd ai-agent

2. 初始化数据库

创建与开发配置一致的数据库,并导入以下脚本。也可以使用自定义数据库名,但需要同步修改 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.sql

3. 启动 Python Tool Runtime

reactor-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.sh

Windows 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.ps1

SQLITE_DB_PATH 控制文件服务元数据库位置。默认值为 autobots.db,相对路径相对于 reactor-tool 目录。该初始化命令使用 SQLModel 的 FileInfo 元数据幂等建表;修改路径后,请先在当前终端设置同名环境变量再执行命令。MRAG 使用的 SQLITE_PATH 由对应 Store 在首次使用时自动创建表。

4. 启动 Java Backend

在新的终端回到仓库根目录:

mvn -pl Reactor-agent-app -am package '-Dmaven.test.skip=true'
java -jar Reactor-agent-app/target/Reactor-agent-app.jar

Backend 默认监听 http://127.0.0.1:8100。健康检查:

curl http://127.0.0.1:8100/web/health

5. 启动 React 工作台

cd ui
pnpm install
pnpm dev

打开 http://localhost:3000。本地开发环境通过 ui/.env 中的 SERVICE_BASE_URL 连接 Java Backend。

Docker Compose 部署

仓库根目录的 Dockerfiledocker-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.sqldata.sql 后需要按实际情况迁移已有数据库。

Compose 部署时,WORKSPACE_ROOT 应保持为 /data/skilloutput,Backend 与 reactor-tool 会通过 reactor-data 卷共享会话工作区和文件产物。

reactor-data 卷保存 Python 文件服务的 autobots.db、MRAG SQLite 元数据和文件产物。

给 Coding Agent 的部署 Prompt

你是本仓库的部署代理。请先阅读 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 文件位置、仍未配置的可选能力以及需要用户后续处理的事项。不要修改业务代码或删除数据,除非用户明确授权。

About

一个多智能体协作应用平台,支持多策略 Agent 调度、多工具编排、RAG 检索增强、会话记忆与执行过程持久化,能够按业务场景动态组织多智能体分工协作,完成复杂任务拆解、工具调用与结果汇聚,提升运维和分析场景的自动化与智能化水平 项目wiki:https://zread.ai/OWWZO/ai-agent

Topics

Resources

Stars

117 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages