一层连接所有数据库,一句话代替所有 SQL。DataWeaver 部署在你的数据库和聊天工具之间, 让每个人都能用自然语言获取跨系统的数据洞察。
用日常语言提问,AI 自动理解意图、找到相关表、生成精准 SQL 并执行。 支持简单查询到多表关联的复杂分析,4 层安全防护确保准确性。
不需要额外装软件。在钉钉、企微、Slack、飞书、Telegram 等你已经在用的工具里直接查数据, 图表自动适配每个平台的消息格式。
用一句话创建定时报表:"每天早上 9 点把销售日报发到运营群"。 系统自动查询、生成图表、按时推送 —— 无需人工干预。
ERP、CRM、BI 工具各管一个系统。DataWeaver 站在所有系统之上,解决它们解决不了的问题。
| 门店 | 销售额 | 投诉数 | VIP 占比 |
|---|---|---|---|
| 北京旗舰店 | ¥1,280,000 | 12 | 38.5% |
| 上海中心店 | ¥960,000 | 8 | 42.1% |
| 深圳科技园店 | ¥720,000 | 15 | 28.3% |
从自然语言到 SQL、从原始数据到可视化图表、从即时查询到定时报表 —— 数织云 DataWeaver 覆盖数据智能的完整链路。
DIN-SQL 风格多步推理链、HybridRetriever 混合检索、4 层幻觉防护、语义摘要 RAG。
Chart.js 服务端渲染、智能图表类型推断、双 Y 轴检测、全渠道图片分发。
对话式创建定时报表、Cron 调度、多段查询 + 图表组合、精准推送。
内置 7 种数据库插件 + 跨数据源联合查询,更多数据源持续扩展。
LLM 语义摘要、TF-IDF 向量检索、增量同步、MD5 checksum 缓存。
14 种 SQL 注入拦截、白名单操作控制、Levenshtein 表名校验、角色级权限执行。
不是只有技术人员才能用数据。看看不同岗位的人如何通过 DataWeaver 改变工作方式。
DataWeaver 的终极目标不是"查数据",而是让数据自动触发业务动作,成为你的数据产品层。
从零售电商到政务数据,从智慧物流到医疗健康 —— 数织云 DataWeaver 适配多种业务场景。
自然语言驱动的销售数据分析与运营决策支持。
政府数据资产盘活与公共服务决策支撑。
跨部门数据协作与管理决策智能化。
智能仓储管理与物流自动化数据中枢。
借还书智能化管理与阅读数据分析。
医疗数据智能查询与院内运营分析。
从用户消息到数据洞察,一个请求的完整旅程。
用户消息从任意渠道进入 Gateway,经会话隔离和队列管理后,由 AgentRouter 基于意图分类分发到对应 Agent。每个 Agent 调用专属 Tool 执行操作,最终将结果(数据表格、图表、知识回答、告警)回传至原始渠道。
意图路由 + Agent 调度,声明式 YAML 配置 + Markdown 知识驱动。
多步推理链(DIN-SQL 风格),混合检索(关键词 + 向量 + 语义摘要),自纠错 + Levenshtein 幻觉防护。支持 SELECT/INSERT/UPDATE 多操作类型。
自然语言 → SQL → Chart.js 图表。智能列过滤(排除 ID/时间戳),双 Y 轴检测,启发式配色,全渠道图片分发。
对话式创建定时报表:自然语言创建/修改,Cron 调度,多段查询+图表组合,channel:peer 精准推送。
定时巡检数据库,阈值触发自动告警,多渠道通知推送。支持自定义告警规则和检查间隔。
基于 RAG 的文档知识库问答。PostgreSQL + pgvector 混合检索(关键词 + 向量 + trigram),LLM 生成带引用来源的回答。支持目录分类管理文档。
# workspace/agents/nl2sql/agent.yaml name: nl2sql description: 自然语言查询数据库,将用户问题转化为 SQL 并执行 type: builtin enabled: true triggers: keywords: [查询, 统计, 分析, 多少, 排名] intent: nl2sql intentDescription: 用户想查询数据库中的数据... fallback: true llm: temperature: 0.1 maxTokens: 2000 tools: - sql_execute - schema_lookup - chart_render permissions: allowedOps: [SELECT] maxRows: 10000 timeout: 30
知识文件放置在 workspace/agents/{name}/ 目录,由 AgentConfigLoader 自动加载并注入 LLM prompt。
从自然语言到精确 SQL,5 步智能管线。
LLM 分析查询复杂度,分为 simple(单表)、join(多表关联)、complex(子查询/聚合)三类。不同类型触发不同步数的推理链:simple = 1 次 LLM 调用,join = 2 次,complex = 3 次。
HybridRetriever 三路融合:KeywordRetriever(BM25 关键词匹配)+ VectorRetriever(TF-IDF 向量相似度)+ 语义摘要匹配。RRF 排序融合,Top-K 返回最相关表结构。当表数 <= 30 时全量发送,> 30 时 RAG 检索 Top 12。
DIN-SQL 风格分步提示:先 Schema 关联(识别相关表和列),再 SQL 草稿生成,最后 SQL 优化和修正。每步 LLM 调用都携带 databaseType(PostgreSQL/MySQL)和业务词汇表(glossary),确保生成正确方言。
Layer 1: Prompt 规则约束(只使用已知表和列)。Layer 2: extractTableNames 提取 SQL 中的表名。Layer 3: Levenshtein 相似度匹配,为不存在的表名提供最近建议。Layer 4: 执行错误反馈 → 自动重试,携带错误信息重新生成。
查询结果格式化为 Markdown 表格,附带自然语言解释。可选图表渲染(VizAgent 协作)。错误分为 7 种类别(NL2SQLErrorCategory),每种返回友好的用户提示。降级链:合并失败 → 独立分类,多步失败 → 单步,无 LLM → 关键词匹配。
用户: "上个月销售额最高的前5个产品是什么?" → 分类: join (涉及 orders + products 表) → 检索: HybridRetriever → orders, products, order_items (Top 3) → 生成: Step 1 - Schema Link: orders.total, products.name, order_items.product_id Step 2 - SQL Draft: SELECT p.name, SUM(oi.quantity * oi.price) ... Step 3 - SQL Refine: 添加 DATE_TRUNC, GROUP BY, ORDER BY, LIMIT 5 → 校验: 表名 ✓, 列名 ✓, 语法 ✓ → 执行: 返回 5 行数据 + Markdown 表格 + 柱状图
一次部署,全渠道触达。
| 渠道 | 协议 | 富文本 | 图表推送 | 双向对话 |
|---|---|---|---|---|
| Web API | HTTP + WebSocket |
Markdown | JSON 数据 | Yes |
| WebChat | Web UI |
Markdown | 内嵌图表 | Yes |
| Slack | Events API |
Block Kit | files.uploadV2 | Yes |
| DingTalk | Webhook |
Markdown | Markdown 内嵌 | Yes |
| 企业微信 | Callback |
Markdown | 临时素材上传 | Yes |
| 飞书 | Event v2 |
卡片消息 | im.image.create | Yes |
| Telegram | Bot API |
HTML | sendPhoto | Yes |
| 微信公众号 | XML Push |
纯文本 | 文本降级 | Yes |
| 微信中继 | Relay |
纯文本 | 文本降级 | Yes |
| Discord | Bot Gateway |
Markdown | Attachment | Yes |
Cloud API |
纯文本 | Media Upload | Yes | |
| 微信个人号 | QClaw Long-Poll |
纯文本 | — | Yes |
| Webhook | HTTP POST |
Markdown | JSON 数据 | 单向 |
数据源和 LLM 提供商通过插件接入,支持运行时热加载。
plugins/ # 内置插件 datasource-postgresql/ # PostgreSQL 数据源 package.json # "dataweaver": {"plugin":true,"type":"datasource"} index.js datasource-mysql/ # MySQL 数据源 package.json index.js llm-openai/ # OpenAI LLM package.json # "dataweaver": {"plugin":true,"type":"llm"} index.js llm-anthropic/ # Anthropic LLM package.json index.js workspace/plugins/ # 用户自定义插件(gitignore 安全) datasource-sqlite/ # 示例:自定义 SQLite 插件 package.json index.js
POSTGRESQL_URL 或 DATABASE_URL 配置MYSQL_URL 或 DATABASE_URL 配置DatasourcePlugin 接口,package.json 声明 "dataweaver": {"plugin":true,"type":"datasource"}OPENAI_API_KEY + OPENAI_MODEL + OPENAI_BASE_URL 配置ANTHROPIC_API_KEY + ANTHROPIC_MODEL 配置LLMPlugin 接口,package.json 声明 "dataweaver": {"plugin":true,"type":"llm"}BusinessPlugin 接口,package.json 声明 "type":"business"
插件支持 Admin API 管理:列表查看、运行时加载、上传安装、连接测试、热重载。API Key 等敏感配置持久化至 workspace/config/plugin-configs.yaml。
Agent、业务、网关 — 所有配置集中管理。
name: viz description: 根据查询结果自动生成可视化图表 type: builtin enabled: true triggers: keywords: - 图表 - 画图 - 可视化 - 柱状图 - 折线图 - 饼图 intent: viz intentDescription: 用户想生成可视化图表 tools: - sql_execute - chart_render permissions: allowedOps: [SELECT] timeout: 30
businesses: - id: default description: 示例业务 database: type: postgresql url: postgresql://user:pass@localhost/mydb security: allowedOps: [SELECT] schema: autoDiscover: true reports: - id: daily-sales name: 每日销售统计 cron: "30 8 * * *" sections: - title: 总销售额 query: "SELECT SUM(amount) FROM orders WHERE date = CURRENT_DATE" targets: - telegram:12345678 enabled: true
Agent 知识文件约定:每个 Agent 目录下可放置
AGENT.md(角色定义)、
SKILL.md(专业技能)、
TOOLS.md(工具说明)。
AgentConfigLoader 自动加载并注入 LLM prompt,无需修改代码。通过 Admin API 可在线编辑知识文件。
从开发到生产,三种部署方式。
# 1. 克隆仓库 git clone https://github.com/nickliu2002/dataweaver.git cd dataweaver # 2. 安装依赖 pnpm install # 3. 配置环境变量 cp .env.example .env # 编辑 .env 填入数据库连接和 LLM API Key # 4. 构建并启动 pnpm build pnpm start # 开发模式(热重载) pnpm dev
FROM node:20-alpine AS builder WORKDIR /app COPY package.json pnpm-lock.yaml ./ RUN corepack enable && pnpm install --frozen-lockfile COPY . . RUN pnpm build FROM node:20-alpine WORKDIR /app COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/package.json ./ COPY --from=builder /app/public ./public EXPOSE 18790 CMD ["node", "dist/index.js"]
docker build -t dataweaver . docker run -d \ -p 18790:18790 \ -e DATABASE_URL="postgresql://..." \ -e OPENAI_API_KEY="sk-..." \ -e ADMIN_KEY="your-admin-key" \ --name dataweaver \ dataweaver
DATABASE_URL — 默认数据库连接串POSTGRESQL_URL — PostgreSQL 连接串MYSQL_URL — MySQL 连接串
OPENAI_API_KEY — OpenAI API 密钥OPENAI_MODEL — 模型名称 (默认 gpt-4o)OPENAI_BASE_URL — API 地址ANTHROPIC_API_KEY — Anthropic API 密钥ANTHROPIC_MODEL — 模型名称
ADMIN_KEY — Admin API 认证密钥ADMIN_PORT — Admin 端口 (默认 18790)LOG_LEVEL — 日志级别 (默认 info)NODE_ENV — 运行环境
完整的 RESTful API,覆盖插件、Schema、会话、报表全生命周期管理。
| Method | Path | Description |
|---|---|---|
| GET | /admin/health | 系统健康检查 |
| GET | /admin/stats | 运行时统计(队列、缓存、限流器) |
| GET | /admin/metrics | Prometheus 指标(支持 ?format=json) |
| GET | /admin/config | 运行时配置摘要 |
| GET | /admin/channels | 渠道列表及健康状态 |
| Method | Path | Description |
|---|---|---|
| GET | /admin/plugins | 已注册插件列表 |
| POST | /admin/plugins/load | 从路径加载插件 |
| GET | /admin/plugins/catalog | 插件市场目录 |
| POST | /admin/plugins/install/upload | 上传 ZIP 安装插件 |
| POST | /admin/plugins/reload | 热重载所有插件 |
| DELETE | /admin/plugins/datasource/:name | 卸载数据源插件 |
| DELETE | /admin/plugins/llm/:name | 卸载 LLM 插件 |
| POST | /admin/plugins/datasource/:name/configure | 配置数据源连接 |
| POST | /admin/plugins/datasource/:name/test | 测试数据源连接 |
| POST | /admin/plugins/llm/:name/initialize | 初始化 LLM 插件 |
| POST | /admin/plugins/llm/:name/test | 测试 LLM 插件 |
| Method | Path | Description |
|---|---|---|
| GET | /admin/schemas/:businessId | 业务表结构列表 |
| POST | /admin/schemas/:businessId | 新增/更新表结构 |
| DELETE | /admin/schemas/:businessId/:tableName | 删除表结构 |
| POST | /admin/schemas/:businessId/discover | 自动发现 Schema(异步) |
| Method | Path | Description |
|---|---|---|
| GET | /admin/businesses | 所有业务配置 |
| GET | /admin/businesses/:id | 单个业务配置 |
| POST | /admin/businesses | 创建/更新业务 |
| PUT | /admin/businesses/:id | 更新业务配置 |
| DELETE | /admin/businesses/:id | 删除业务 |
| POST | /admin/businesses/reload | 重新加载配置 |
| Method | Path | Description |
|---|---|---|
| GET | /admin/sessions | 活跃会话列表 |
| DELETE | /admin/sessions/:sessionId | 终止会话 |
| DELETE | /admin/sessions | 清除所有会话 |
| GET | /admin/history/sessions | 历史会话列表 |
| GET | /admin/history/sessions/:sessionId | 会话详情 |
| GET | /admin/history/search | 搜索查询历史 |
| Method | Path | Description |
|---|---|---|
| GET | /admin/reports/:businessId | 报表列表 |
| PUT | /admin/reports/:businessId/:reportId | 编辑报表 |
| DELETE | /admin/reports/:businessId/:reportId | 删除报表 |
| POST | /admin/reports/:businessId/:reportId/run | 立即执行报表 |
| Method | Path | Description |
|---|---|---|
| GET | /admin/permissions/:businessId | 权限规则列表(角色映射 + 表级/行级规则) |
| POST | /admin/permissions/:businessId | 创建权限规则 |
| PUT | /admin/permissions/:businessId/:role | 更新权限规则 |
| DELETE | /admin/permissions/:businessId/:role | 删除权限规则 |
| Method | Path | Description |
|---|---|---|
| GET | /admin/agents | Agent 列表及状态 |
| GET | /admin/agents/:name/knowledge | 读取 Agent 知识文件 |
| PUT | /admin/agents/:name/knowledge/:file | 更新 Agent 知识文件 |
| GET | /admin/tools | 工具列表 |
| Method | Path | Description |
|---|---|---|
| POST | /admin/knowledge/:bizId/documents | 上传文档(支持 folder 字段) |
| GET | /admin/knowledge/:bizId/documents | 文档列表(?folder= 目录筛选) |
| GET | /admin/knowledge/:bizId/documents/:id | 文档详情 + 分片预览 |
| DELETE | /admin/knowledge/:bizId/documents/:id | 删除文档 |
| GET | /admin/knowledge/:bizId/folders | 目录列表 |
| PATCH | /admin/knowledge/:bizId/documents/:id/folder | 移动文档到目录 |
| DELETE | /admin/knowledge/:bizId/folders/:name | 删除目录(文档归入未分类) |
| PUT | /admin/knowledge/:bizId/folders/:name | 重命名目录 |
| POST | /admin/knowledge/:bizId/reindex | 重新生成向量嵌入 |
| POST | /admin/knowledge/:bizId/search | 混合检索测试 |
| Method | Path | Description |
|---|---|---|
| GET | /admin/jobs | 异步任务列表 |
| GET | /admin/jobs/:jobId | 任务详情 |
| POST | /admin/cache/clear | 清除查询缓存 |
| POST | /admin/query/test | 测试 NL 查询 |
| GET | /admin/channels/configurable | 可配置渠道表单 |
| GET | /admin/channels/:name/config | 渠道配置 |
| POST | /admin/channels/:name/configure | 配置渠道 |
| POST | /admin/channels/:name/disconnect | 断开渠道 |
跟踪 DataWeaver 的成长历程,了解最新功能和改进。
|/?: 特殊字符的 sessionId 无法检索的问题mongodb:// 和 mongodb+srv:// 协议自动识别扫码添加微信,获取定制化部署方案与技术支持。