Agentic Data — 面向数据分析的 Agentic
基于 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_datasets、query_database、preview_dataset |
| 表 DDL | create_table、alter_table、insert_data、drop_table |
| 统计分析(专项) | analyze_aggregate、analyze_timeseries、analyze_funnel、analyze_cohort、analyze_correlation |
| 统计分析(通用) | analyze_data |
| 清洗(专项) | clean_nulls、clean_duplicates、clean_format、transform_derive、transform_pivot |
| 清洗(通用) | clean_data |
| 可视化 / 报告 | render_chart、generate_report、report_wizard_opener |
| 联网 | web_search |
| 知识 | add_knowledge、get_knowledge、lookup_domain_wiki |
| 图像 | image_search、recognize_image_structured |
| 动态 API | generate_api |
| 数据探查 | explore_schema、explore_distribution、explore_quality、explore_relations、explore_size |
| 行业处理器 | search_product_price、ae_data_processor、ae_statistics_analyzer、ae_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 / 外部 API:
api-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 走 PowerShellbun.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 体系,能快速落地为专业工具。
更多推荐

所有评论(0)