Forge

agent
Guvenlik Denetimi
Gecti
Health Gecti
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 11 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Trustworthy AI data-query infrastructure with constrained candidates, deterministic SQL compilation, reviewable execution, and auditability.

README.md

Forge

CI
License

面向 Data Agent 的开源可信数据运行时:让 AI 辅助的数据查询可约束、可审核、可执行、可追溯。

Forge 位于上游 Agent 与数据库之间。它接收 Direct SQL 或受约束的 Forge JSON 候选,通过 Registry、确定性 SQL 编译、只读与权限校验、人工审核、Evidence 和 Audit 降低静默错误。它不是只把自然语言转成 SQL 的 wrapper,也不把“模型生成了 SQL”等同于“查询可信”。

English README · 贡献指南 · 文档索引

30 秒理解 Forge

普通 Text-to-SQL 路径 Forge 当前路径
模型直接生成并执行开放 SQL 候选先进入受约束、可拒绝的保障流程
Prompt 同时承担语义、语法和安全 Registry 管语义,编译器管转换,运行时管校验与执行
失败通常只有“SQL 报错” 保留输入类型、SQL hash、版本、失败阶段和 Evidence
结果正确性依赖单次模型表现 用可复现 benchmark 和 regression 迭代,不承诺开放世界 100% 正确

当前已有的核心能力:

  • Forge JSON 受约束中间表示与确定性 SQL 编译;
  • Direct SQL / Forge JSON 统一候选、QueryRun 审核和执行链;
  • Registry 结构与语义约束、关系和粒度校验;
  • 只读 SQL、字段/表范围、审批 hash、超时和结果上限;
  • SQLite、PostgreSQL、MySQL 的自动化兼容性检查;
  • 可回放的准确率 Benchmark、Exact Result 比较和失败诊断。

项目状态:early-stage,actively iterating。 当前适合评估、贡献和带人工审核/只读账号的受控部署,不代表功能完备、开放世界准确或大规模高可用。最新完整 500-case BIRD 运行中,Forge EA 为 45.4%,Direct SQL 为 56.4%;历史 Spider2-Lite SQLite 子集 EA 仍为 9.2%。这些结果受数据集、模型、Provider、Prompt、Registry 与运行配置约束,不能外推为普遍能力。详见 当前项目状态Benchmark 边界


快速开始

# 1. 克隆 & 安装
git clone https://github.com/shisuidata/Forge
cd Forge
bash scripts/bootstrap-dev.sh

# 2. 配置(填入 LLM_API_KEY + EMBED_API_KEY)
cp .env.example .env

# 3. 一键启动 Demo(生成 200 表数仓 + 同步 Registry + 跑通测试)
bash scripts/demo-setup.sh

# 4. 启动服务
uvicorn main:app --host 0.0.0.0 --port 8000  # Web UI + API

Docker 开发方式(自带 PostgreSQL,热重载):

docker compose up
# 访问 http://localhost:8000/admin

生产交付方式:

cp .env.production.example .env.production
docker compose -f docker-compose.prod.yml --env-file .env.production up -d --build
forge doctor --profile prod
bash scripts/production-smoke.sh

生产部署必须使用数据库只读账号,并确认 /health/readinessfail 项。详见 生产交付部署说明

接入自己的数据库:

# 修改 .env 中的 DATABASE_URL,然后同步 schema
forge sync --db postgresql://user:pass@host/db
# 或写入指定 Registry 路径
forge sync --db "$DATABASE_URL" --out registry/data/schema.registry.json

使用火山方舟 Ark(OpenAI 兼容接口):

LLM_PROVIDER=openai
LLM_BASE_URL=https://ark.cn-beijing.volces.com/api/v3
LLM_MODEL=doubao-seed-2-1-pro-260628
LLM_API_KEY=你的火山方舟 API Key

运行测试:

# 编译器 + API 测试(本地,无需服务运行)
pytest tests/ -v

# Playwright E2E 测试(需服务运行)
pip install playwright && playwright install chromium
FORGE_BASE_URL=http://localhost:8000 pytest tests/test_e2e.py -v

工作原理

flowchart LR
    NL["自然语言"]

    subgraph forge["Forge 管道"]
        direction TB
        REG["Registry<br/>结构层 + 语义层"]
        RETRIEVER["SchemaRetriever<br/>向量检索 / BM25 降级"]
        LLM["LLM<br/>Structured Output"]
        JSON["Forge JSON<br/>有约束的中间表示"]
        COMPILER["确定性编译器"]
        SQL["SQL"]
    end

    DB["数据库"]
    RESULT["结果集"]

    NL --> RETRIEVER
    REG --> RETRIEVER
    RETRIEVER -->|"top-k 相关表"| LLM
    LLM --> JSON
    JSON --> COMPILER
    COMPILER --> SQL
    SQL --> DB
    DB --> RESULT

自然语言经 Registry 语义注入后,由 LLM 生成结构化的 Forge JSON,再由确定性编译器翻译为 SQL。在 Provider 严格执行动态 JSON Schema 的字段上,非法候选可在生成阶段被阻止;表达式透传、兼容降级路径、业务口径和算法选择仍需校验、审核与测试。用户审核的 SQL 和执行的 SQL 是同一份。

从产品价值、核心原理到生产落地的系统讲解,见 Forge 完整架构教材;快速参考见 工作原理与 DSL 能力


当前状态

信号 当前边界
BIRD 500-case 完整运行 Forge EA 45.4%;Direct SQL EA 56.4%
历史自有 40 题回归集 用于域内回归,不作为陌生 Schema 泛化证明
Python CI 完整 pytest,并覆盖 SQLite / PostgreSQL / MySQL compatibility smoke
Pi Orchestrator TypeScript typecheck 与 Node test 可在本地独立运行
Spider2-Lite SQLite 编译成功率 97.6%;EA 9.2%

不同数据集、模型、Provider、Prompt、Registry、重试策略和评价器的结果不可直接横向比较。详见 基准测试详情

已落地功能

功能 状态
Web UI(Chat + 12 个 Admin 页面 + Dashboard 概览)
SQL 审核编辑(生成后可修改 SQL 再执行)
查询结果导出(CSV / JSON,中文 BOM 兼容)
认证鉴权(Cookie session + API Key)
多租户基础(user → team 映射;org/team/user 仍在完善) ✅ 基础能力
数据权限(team 级别表可见性 ACL + 无权限提示)
PostgreSQL 支持(SQLite 零改动切换)
三层记忆系统(EMS / SMP / WMB)
Pipeline 引擎(分析 / 可视化 / 报告) ✅ 代码路径;需客户域验收
飞书 Bot(流式卡片 + 按钮回调)
五通道知识收集(RSS / URL / 文档 / 对话 / 手动)
文档导入(上传 .txt/.md → LLM 提取 → 确认入库)
自动化测试(API / compiler / executor / lint / docs / audit / feedback)
部署就绪检查(/health/readiness + forge doctor
生产部署包(Dockerfile / compose.prod / env 模板 / 部署文档)

项目结构

forge/
  ├── schema.json          — Forge DSL 格式定义(JSON Schema)
  ├── compiler.py          — 确定性编译器:Forge JSON → SQL
  ├── retriever.py         — Schema 向量检索器(四层召回 + ACL 过滤)
  ├── executor.py          — SQL 执行器
  ├── lint.py              — 业务/字段/结果契约检查
  ├── cache.py             — 查询缓存(精确 + 模糊匹配)
  ├── chart.py             — 图表生成(ECharts)
  └── cli.py               — CLI 入口(compile / sync / doctor)

agent/
  ├── agent.py             — Agent 调度(查询 / 指标定义 / 缓存反馈)
  ├── llm.py               — LLM 客户端(RAG + ACL + 约定注入)
  ├── pipeline.py          — Pipeline 引擎(分析 / 可视化 / 报告)
  ├── db.py                — 数据库抽象层(SQLite / PostgreSQL)
  ├── tenant.py            — 多租户(org / team / user / ACL)
  ├── knowledge.py         — 五通道知识收集框架
  └── memory/
      ├── ems.py           — Episodic Memory Store(对话历史)
      ├── smp.py           — Semantic Memory Pool(业务知识)
      └── wmb.py           — Working Memory Buffer(当前上下文)

web/
  ├── router.py            — FastAPI 路由(Web UI + API + execute-raw)
  ├── auth.py              — HMAC-SHA256 Cookie + API Key 认证
  └── templates/           — Jinja2 模板(Chat + Dashboard + 11 个 Admin 页面)

registry/
  ├── sync.py              — forge sync:直连数据库生成结构层
  ├── staging_sync.py      — 用户确认规则合并入 Registry
  └── data/                — 生产 Registry 路径(schema / metrics / disambiguations / conventions)

scripts/
  └── seed_mock_data.py    — Mock 数据填充(团队/用户/审计/会话/知识)

tests/
  ├── conftest.py          — 共享 fixtures(app / client / auth_client)
  ├── test_compiler*.py    — 编译器单元测试(118 个用例)
  ├── test_api.py          — API 端点测试(26 个用例)
  ├── test_e2e.py          — Playwright E2E 测试(22 个用例)
  ├── test_docs_links.py   — 公开文档本地链接检查
  ├── accuracy/            — 自有 40 题基准(当前推荐 Method AI)
  └── spider2/             — Spider2-Lite SQLite 子集(123 题)

文档

文档 内容
当前项目状态 当前产品定义、阶段、门禁、未关闭验收项与 OMP 继续开发入口
文档导航 区分当前事实、稳定约束、主动计划与历史材料
完整架构教材 从可信问数原理、核心技术优势到实战与生产架构
架构设计 系统整体架构与模块职责的精简入口
产品北极星 Forge 为什么存在、服务谁,以及正确性、共识、数据事实与产品边界的长期指导
产品设计与阶段路线重建提案 Human Control Plane、Agent Data Runtime、产品对象、信息架构与长期阶段方向
短期 Product Spine 历史计划 SP0–SP5 已完成实施与验证记录;仅作历史溯源,不是当前待办
Product Spine SP5 集成门禁证据 真实 Pi/Forge/Report 三连 Golden Journey、restart/idempotency/offline、Atlas candidate 与失败关闭反证
Product Projection v1 Contract Conversation、Task、Action、Workspace、Report 的版本化只读边界、状态、bounds、redaction 与 SP1 入口
产品公理 以第一性原理约束身份、证据、协同、记忆、成本与可信行动
AI Native 企业长期论证 Data Agent、组织协同、统一记忆、企业 AI Infra 的论证、反证与待验证假设
产品方向与架构复审 按产品公理审核当前实现、四平面缺口、目标架构与分阶段建议
企业演进主动计划 唯一主动计划;当前阶段为 S0 Design Partner / Problem Baseline
需求池 新需求的澄清、评估、接受、延期、拒绝、计划与验证记录
M0 Governance Contract 评审 跨 Contract 语义、Threat Model、迁移/回滚与 M1A 前置结论
工作原理与 DSL 能力 执行流程详解、DSL 特性表、Schema RAG
基准测试详情 版本演化、跨模型 EA 对比、Spider2 结果
设计哲学与工程洞察 核心哲学、工程经验、开放问题
商业化就绪清单 当前商业化差距、已补齐的安全/审计能力、PoC 到正式交付路线
商业化推进计划 P0/P1/P2 优先级、准确率闭环、PoC 到正式交付判定标准
兼容性矩阵 数据库、数据仓库、Agent 入口、LLM 服务的支持边界
客户 PoC 执行手册 客户域 golden questions、failure triage 和交付物
外部 Agent 集成边界 MCP / OpenAI Agents / Claude Desktop 等外部入口的 prepare-query 只读边界
交付前综合评估 业务板块、文档、目录、工作流、三轮测试和交付优化方案
生产交付部署说明 生产 compose、env、只读数据库账号、readiness、运维建议
DSL 形式化语义 DSL 的形式化定义
构建你的语义库 Registry 结构层 + 语义层三文件详解,从零构建指南
飞书 Bot 部署 飞书集成配置

开发日志

真实的建造记录,包括走错的路、自我怀疑的时刻,和偶尔出现的顿悟。

日期 主题
Day 0 · 开发实录 2026-03 为什么做这件事;错误分类;核心洞见的形成过程
Day 1 · 历史债 / 地面泥潭 2026-03-15 SQL 的设计哲学、四层召回演进、飞书 Bot 工程坑、SQL 缓存双阶段反馈
Day 2 · CROSS JOIN / HAVING 别名 / EA 95% 2026-03-16 CROSS JOIN 标量 CTE 模式、HAVING alias 展开修复、DeepSeek strict tool calling 实验、M/O/N 三组 EA 基准
Day 3 · 工程稳固 / 产品门面 / 连锁故障 2026-03-18 Session 持久化、编译器拆分、飞书 Bot 四层连锁故障、demo 向导、forge config CLI
Day 5 · 先看自己错没错 / 三层系统优化 2026-03-19 5 处设计缺陷修复、编译重试对齐、约定 lint 程序化验证、LAG 示例补全、M2.7 EA 72.5%
Day 6 · 从原型到产品 2026-03-25 PostgreSQL 支持、HMAC 认证、数据权限 ACL、Pipeline E2E、Web Admin 完整落地、EA 70.0%
Day 7 · 准确率回炉 / TopN lint 2026-05-05 测试口径拆分、Z.AI GLM-5.1 接入受阻、DeepSeek single-run EA 55.0%→65.0%、TopN lint/prompt 优化
Day 8 · 把准确率问题重新工程化 2026-05-06 面向博客发布的阶段总结:测试分层、GLM-5.1 接入受阻、DeepSeek EA 55.0%→65.0%、TopN 错误形式化为 lint

参与维护

贡献入口与复现要求见 CONTRIBUTING.mdshisuidata/Forge 是项目主仓库;仓库历史中出现的 rockythinkshisuidata 标识属于同一维护者/团队上下文。

License

Forge 使用 Apache License 2.0

官网

website/ 是 Forge 的 Astro + Starlight 对外站点,用于承载快速开始、概念说明、基准测试和商业化 PoC 叙事:

cd website
npm install
npm run build

Yorumlar (0)

Sonuc bulunamadi