基于 Next.js 15 + 多模型 LLM 的 Agentic 数据分析平台。用户以自然语言对话的方式上传、探查、清洗、分析数据,平台借助一套类 Claude Code 设计的 Agent 引擎,自动规划、调用工具、自纠错并可视化结果。还能把对话沉淀为可外部调用的 API、把领域知识沉淀为 Skills 与知识库。

源码地址: GitHub - linkedshine/DataAgent: linkedshine DataAgent · GitHub


 

1. 项目定位

agentic-data 是一个 Agentic(智能体驱动)的数据智能平台:它把"数据分析"从"写 SQL / 写脚本"变成"和 AI 对话"。用户只需用自然语言描述需求("分析 revenue 的月度趋势""清洗掉空值行""生成一份销售分析报告""把这张表发布成一个 API"),背后的 Agent 会自己拆解任务、选择合适的工具、执行数据操作,并把结果以表格、图表、Markdown 报告等形式实时渲染到工作区。

平台并非只有一个聊天窗口,而是采用 VSCode 风格的 IDE 布局:左侧活动栏(Activity Bar)+ 可拖拽侧边栏(数据集 / 历史 / 技能)+ 中间工作区标签页 + 右侧对话面板。Agent 每执行一个工具,工作区就会即时追加一个结果页(表 / 图 / 报告)。

部分工具截图:

  • 配置第三方模型 

  • 上传数据集 

  • 添加数据集到对话 

 


2. 核心特性

  • 自然语言驱动的数据分析:无需写 SQL,Agent 自动把意图映射为查询 / 分析 / 清洗 / 可视化等操作。
  • 40+ 可组合 Agent 工具:覆盖规划、数据管理、表 DDL、统计与可视化分析、清洗转换、数据探查、知识检索、图像识别、动态 API 生成、联网搜索等。
  • 类 Claude Code 的 Agent 引擎:内置 Task 抽象、Planner(规划)、Executor(执行)、Self-Corrector(自纠错)、Memory(上下文)、Permission(权限)、Telemetry(遥测)。
  • 多模型、场景化 LLM 配置:支持 Alibaba Qwen、DeepSeek、OpenAI、Ollama,以及任意 OpenAI 兼容端点;按 agent / api / plugin / embedding / vision 场景分别配置模型、temperature、thinking 等,配置存于数据库并支持热更新。
  • 多数据源接入与同步:可连接外部 PostgreSQL、MySQL 数据库,浏览表结构,并支持全量 / 增量同步(scheduler)进工作区。
  • 知识库 / RAG / Wiki:embedding 向量化、wiki 编译 / 注入 / 检索,把领域知识喂给 Agent(支持简繁转换、拼音、jsonata 表达式处理)。
  • Skills 技能系统:全局 + 用户级技能,按对话上下文匹配并注入 Agent 提示词;business_metrics 沉淀经校验的 SQL 表达式,保证指标口径一致。
  • 动态 API 生成:把一句自然语言需求变成真实可调用的 SQL API 或 Agent API(自然语言 → 数据),自动生成 API Key 与 curl 示例。
  • API Key 管理:为外部 API 与 MCP 连接创建 / 吊销 Key,带调用日志与限流。
  • 线索与爬虫:抓取线索 URL,提取邮箱 / 电话 / 商品摘要;支持公司 / 物料数据的批量爬虫。
  • 异步任务引擎:长耗时任务(爬虫、大文件导入、批量分析)以后台任务运行并实时上报进度。
  • MCP 集成:注册外部 Model Context Protocol 服务,将其工具暴露给 Agent,极大扩展生态边界。
  • 用户体系与持久化:NextAuth.js 认证(邮箱密码 + 微信 OpenID),会话、数据集元数据、知识库、API Key、技能、任务、线索、LLM 配置均持久化,支持多用户。
  • 管理后台:集中管理知识库、LLM Provider / 场景、技能与指标。

3. 技术栈

技术
前端 Next.js 15(App Router)、React 19、Tailwind CSS、Radix UI、Lucide React
AI Vercel AI SDK v7,@ai-sdk/alibaba / @ai-sdk/deepseek / @ai-sdk/openai / @ai-sdk/openai-compatible
ORM / DB Drizzle ORM;应用数据落 libSQL / SQLite(本地或 Turso 云);外部数据源支持 PostgreSQL / MySQL
认证 NextAuth.js v4 + bcryptjs(邮箱密码 + 微信 OpenID)
图表 Recharts
解析 / 文档 PapaParse、xlsx / exceljs、pdf-lib、cheerio、sharp
知识 / RAG Qwen embeddings、jsonata、opencc-js(简繁)、pinyin-pro(拼音)
MCP @modelcontextprotocol/sdk
爬虫 cheerio、patchright、node-cron
交互 / 状态 zustand(状态)、zod(校验)、framer-motion、sonner、react-resizable-panels、react-markdown、react-syntax-highlighter
运行时 Bun(包管理 + 运行)、Vitest(单测)、Playwright(E2E)、pino(日志)

4. 架构总览

src/
├── app/                      # Next.js 应用层
│   ├── (auth)/              # 登录 / 注册 / 微信回调
│   ├── (main)/              # 认证后的应用外壳
│   │   ├── workspace/       # IDE 工作区(默认路由)
│   │   ├── admin/           # 管理后台:知识库 / LLM / 技能 / 指标 / MCP
│   │   ├── api-keys/        # API Key 管理
│   │   ├── external-apis/   # 用户自建 API 定义
│   │   ├── skills/          # 技能管理
│   │   ├── leads/           # 线索爬取任务
│   │   └── tasks/           # 异步任务监控
│   ├── api/                 # 70 个 API route(chat / upload / datasets / datasources / external …)
│   └── plugin/              # 插件页面入口
├── components/              # 139 个 UI 组件(布局 / 工作区 / 对话 / 上传 / 管理 …)
├── core/                    # 业务内核 —— Agent 引擎与工具
│   ├── agent/               # planner / executor / self-corrector / memory / permission / telemetry / tool-factory / worktree
│   ├── tools/               # analyze / clean / explore / query / sync + registry / executor / adapter
│   └── skills/              # 技能匹配与注入
├── services/                # 服务接口与实现(解耦)
│   ├── interfaces/          # IAnalyze / IClean / IQuery / ISchema / ISync
│   ├── impl/                # 对应实现
│   └── adapters/
├── lib/                     # 基础设施
│   ├── config/llm.ts        # 多 Provider / 多场景 LLM 配置
│   ├── datasource/          # PG / MySQL 连接器、同步、调度、凭据加密
│   ├── knowledge/           # embedding / wiki / RAG
│   ├── mcp/                 # MCP client
│   ├── analysis/            # 行业分析注册表
│   ├── tools/               # 基础工具(crawler / text / datetime / image / knowledge …)
│   ├── db/  auth/  api-keys/  services/  skills/  sql/  logging/  workspace/  prompt/ ...
├── types/  store/  middleware.ts

设计上采用 分层解耦core(业务内核)依赖 services(接口),services 由 lib(基础设施)提供实现。API 路由只负责 HTTP 边界,真正的智能在 core/agent


5. Agent 引擎(core/agent)

这是项目最有价值的部分,参考 Claude Code 的 Harness 设计,自研了一套可组合、可观测、带权限与自纠错的执行框架。

5.1 Task 抽象(planner.ts)

统一的执行单元 Task,分三种类型:

  • workflow —— 完整工作流执行(含状态机、已完成节点记录);
  • step —— 单个 LLM 轮次(记录工具调用次数、token 用量);
  • task —— 后台异步任务(绑定 userId / conversationId)。

并定义了严格的状态机:pending → running → (paused | completed | failed | aborted),非法转换会被 updateTaskStatus 拒绝。

5.2 关键模块

  • executor / agent-tools:驱动 LLM 推理并调度工具调用,把工具结果回灌上下文。
  • planner:任务规划(工作流编排)。
  • self-corrector:执行失败或结果异常时自动修正重试——这是 Agent 健壮性的关键。
  • memory:通过 AgentContext 维护 PipelineState、工具结果、消息、进度,支持 runWithContext 的上下文隔离与 reportProgress 进度上报。
  • permission:细粒度权限(requireUserId / requireOwnership / requireAdmin),支持 alwaysAllow / alwaysDeny / needsConfirmation,并可组合(allOf / anyOf)成中间件。
  • telemetry:事件埋点(console / 内存缓冲 handler)、measureTime / withTelemetry 性能度量。
  • tool-factory:借鉴 Claude Code 的工具定义方式——用 Zod 做参数校验,支持 InterruptBehavior(交互式确认 / 拒绝),产出标准化的 ToolResult
  • worktree / prepare-step:支持数据驱动的预执行步骤与隔离工作区。

配套还有 *.test.ts 单测(planner / memory / permission / self-corrector / telemetry / tool-factory / prepare-step 等),体现工程严谨度。


6. 工具体系(40+ 工具)

6.1 Agent 工具(core/tools)

围绕数据生命周期分域,当前内置 ~40 个工具,按职责归类:

类别 工具
规划 update_plan
数据管理 list_datasetsquery_databasepreview_dataset
表 DDL create_tablealter_tableinsert_datadrop_table
统计分析(专项) analyze_aggregateanalyze_timeseriesanalyze_funnelanalyze_cohortanalyze_correlation
统计分析(通用) analyze_data
清洗(专项) clean_nullsclean_duplicatesclean_formattransform_derivetransform_pivot
清洗(通用) clean_data
可视化 / 报告 render_chartgenerate_reportreport_wizard_opener
联网 web_search
知识 add_knowledgeget_knowledgelookup_domain_wiki
图像 image_searchrecognize_image_structured
动态 API generate_api
数据探查 explore_schemaexplore_distributionexplore_qualityexplore_relationsexplore_size
行业处理器 search_product_priceae_data_processorae_statistics_analyzerae_statistics_file_handler

每个工具都有 adapter.ts / registry.ts / executor.ts 三层:注册表登记 → 适配器对接 services → 执行器调度。

6.2 服务层(services)

interfaces 定义契约,impl 提供实现,二者通过 adapter 桥接,便于替换底层引擎或做单测 mock:

  • AnalyzeServiceImpl / ICleanService / IQueryService / ISchemaService / ISyncService

6.3 基础工具库(lib/tools)

大量基础工具,覆盖:文本处理、日期时间、编码转换、语言(拼音 / 简繁)、图像检索、公司爬虫、线索处理、数据转换、MCP 工具等。这构成了 Agent 在"非数据"场景下的能力底座。


7. LLM 多模型配置(lib/config/llm.ts)

这是平台灵活性的核心:

  • Provider 注册表alibaba(通义千问) / deepseek / openai / ollama(本地) 为内置,未注册的自动走 @ai-sdk/openai-compatible 兜底(自建 vLLM、智谱、Kimi 等)。
  • 场景化配置agent / api / plugin / embedding / vision 五类场景各有默认模型、temperature、thinking(推理)、thinkingBudget、stream 设置。例如 agent 默认开启 thinking(预算 4096),api/plugin 关闭以提速,vision 开启 thinking(预算 2048)。
  • 数据库热配置:provider 与场景配置存于数据库,启动时把 API Key 加载进内存缓存,管理端改完配置调用 clearConfigCache 即可生效,无需重启。
  • 厂商原生 SDK:alibaba / deepseek 用专用 SDK 以原生解析 reasoning_content(思考链),openai 走 Chat Completions API 以兼容结构化输出(generateObject)。
  • thinking 透传:通过 getProviderOptions 把 enableThinking / thinking.type 等私有参数注入 providerOptions

8. 数据接入与知识增强

  • 应用数据:用户、会话、消息、数据集元数据、知识库、API Key、技能、任务、线索、LLM 配置等全部落 libSQL / SQLite(本地文件或远程 Turso)。
  • 外部数据源(datasource)connector(mysql / postgresql)、connection / config / crypto(连接凭据加密)/ scheduler(定时)/ sync(全量 / 增量同步)。
  • 知识库 / RAG(knowledge)embedding 向量化、wiki-compiler / wiki-injector / wiki-search / wiki-store 把领域知识(如临床试验术语)编译成可检索的 wiki,并在推理时注入上下文(injector / value-gate 控制注入质量);工具链集成 jsonata 表达式、opencc-js 简繁、pinyin-pro 拼音。
  • MCP(lib/mcp)client 提供 Model Context Protocol 支持,可把外部 MCP 服务暴露为 Agent 工具,并可经 API Key 鉴权与过滤。
  • API Key / 外部 APIapi-keys 管理与 external-apis 让对话产物对外暴露为受鉴权、限流、按表授权的可调用 API。

9. 前端体验

  • VSCode 风格 IDE:活动栏 + 可拖拽 resizable panels + 工作区标签页 + 对话面板(react-resizable-panels / framer-motion / sonner)。
  • 工作区实时渲染:Agent 每调用一个工具,工作区即追加结果页(可排序数据表 TablePanel、Recharts 图表 ChartPanel、Markdown 报告 MarkdownPanel、KPI 概览 StatsPanel)。
  • 对话流ChatPanel / MessageBubble 展示消息与工具调用过程,带思考链与权限确认交互(react-markdown + 语法高亮)。
  • 暗色主题 + 等宽字体,整体交互体验对标 Claude Code / VS Code。

10. 安全

  • 权限中间件:所有工具调用经 permission 层校验(requireOwnership 等),跨用户数据访问受限。
  • 只读查询:Agent 执行的数据查询仅放行 SELECT / WITH,禁止 DROP / DELETE / UPDATE / INSERT / ALTER / TRUNCATE / CREATE / GRANT / REVOKE 等危险语句。
  • SQL 注入防护:标识符经净化 / 引号包裹,查询使用参数化占位符,禁用危险关键字。
  • 操作审计:表结构变更操作记录正向 / 回滚 SQL(operation_history)以便追溯。
  • 凭据加密:数据源连接信息经 lib/datasource/crypto 加密存储。
  • 密钥脱敏:API Key / Token 在所有 console / stdout / stderr 输出中被掩码。
  • 认证:NextAuth.js + bcrypt 密码哈希,JWT 会话,支持微信 OpenID。
  • API 边界:外部 API 强制 Key 鉴权、限流、按表授权。
  • 上传限制:文件大小、类型受控(CSV / XLSX / XLS)。

11. 快速开始

# 依赖(Bun 为首选运行时,>= 1.3)
bun install

# 启动
bun run dev
# 访问 http://localhost:19410 → 注册 → 登录 → 开始分析

常用脚本:

bun run dev                 # 开发服务器(端口 19410)
bun run build / start       # 生产构建 / 启动(standalone)

生产部署推荐 docker compose up --build,镜像内置 Bun + Next.js standalone,使用本地 libSQL/SQLite 数据库。LLM Provider 的 API Key 也可在运行时通过管理后台(/admin/llm)配置,存于数据库而非 .env

一键脚本启动(scripts/)

仓库内置跨平台一键启动脚本,自动完成「检测 / 安装 Bun → 安装依赖 → 构建 → 启动生产服务器」全流程:

# Linux / macOS
./scripts/install_start.sh

# Windows(CMD / PowerShell)
scripts\install_start.bat

脚本行为:

  • 未安装 Bun 时自动下载安装(Linux/macOS 走 bun.sh/install,Windows 走 PowerShell bun.sh/install.ps1);
  • 执行 bun run build 构建后 bun run start 拉起生产服务器,访问 http://localhost:19410

12. 小结

agentic-data 不是一个简单的"聊天 + 图表"demo,而是一套 工程化、可扩展的 Agentic 数据分析操作系统

  • 内核是一套参考 Claude Code 的 Harness(规划 / 执行 / 自纠错 / 权限 / 遥测 / 工具工厂);
  • 通过多 Provider + 多场景的 LLM 配置,灵活适配不同模型与成本;
  • 借助数据源同步、知识库 RAG、Skills 技能、MCP、动态 API、插件、行业分析模板,能力可被持续扩展;
  • 把对话产物沉淀为外部可调用的 API 与可复用技能,真正形成数据资产闭环;
  • 在数据接入、权限、查询安全、密钥管理上有明确的工程约束。

它适合作为"让业务人员用自然语言分析数据"的基础平台,尤其对医药等强监管、强领域知识的行业,配合内置的 AE 分析模板与 Skills 体系,能快速落地为专业工具。

 

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐