文档版本:v2.0
版本定位:本版本是 v1.0 之后的新增能力白皮书。它接替 v1.0 继续描述 Foggy 的语义层引擎演进,但不把 v1.0 标记为废弃,也不替代 v1.0 中的基础语法参考。
实现口径:本文以 Java 引擎已经实现并经过测试、覆盖审计或验收签收的能力为主。规划项、prompt-only 评估和未签收实验能力不写成稳定功能。
边界声明:本文描述的是公开语义契约和 Java-first 引擎能力边界,不等同于某个 Maven 包、Python 包、Odoo 集成包或产品 UI 的版本号。
v1.0 的核心问题是:LLM 与数据库之间应该用什么契约连接?
v2.0 的核心问题进一步推进为:当 LLM 不只做单次筛选、分组和聚合,而是要执行时期对比、漏斗、透视、跨结果对齐、二次分析和经验方案复用时,语义层引擎如何继续保持治理边界?
Foggy v2.0 的答案不是开放自由 SQL,也不是把更多规则塞进提示词,而是在 Java 引擎中引入一组可签收、可验证、可回放的窄执行合同:
这些能力共同把 Foggy 从“LLM 语义查询引擎”推进到“LLM 语义分析引擎”,但仍坚持关闭式失败、权限内执行和证据可复核。
v2.0 不重新定义 Foggy 的基础架构。以下 v1.0 原则仍然是前提:
v2.0 的新增能力全部建立在这些前提上。它们不是绕过 DSL 和权限治理,而是在治理边界内扩展更复杂的分析形态。
v2.0 可以理解为在 v1.0 之上新增五个层次:
| 层次 | 作用 | 关键边界 |
|---|---|---|
| Java MCP 编排层 | 处理路由校准、重新分发、trace 和工具调用链路 | 不让过期计划继续执行;不把 trace 当成权限绕过入口 |
| DSL_CTE 分阶段执行层 | 表达聚合、派生、窗口、后置过滤、排序和有限桥接模板 | 不开放任意 SQL CTE |
| Governed Expression 层 | 在上一阶段输出 alias 上做签名小公式 | 不引用物理字段,不开放任意表达式 |
| Memory Grid 层 | 对受治理查询结果做有界二次分析和跨模型对齐 | 不接收无界明细,不开放任意内存 SQL API |
| Pivot / Recipe 层 | 支持多维透视、下钻合同和经验方案复用 | 不等于完整 BI 产品或经验市场 |
这种分层的价值在于:复杂分析不再被压成一个巨大 SQL,也不依赖 LLM 一次性生成完整物理查询。每一层都有自己的输入、输出、校验和拒绝边界。
LLM 问数系统中常见的问题是:初始路由或计划判断错误,后续却继续执行旧计划。v2.0 的 Java MCP 编排层加入 calibrated-route re-dispatch:当校准结果要求重规划时,引擎可以清除过期结果,触发新的 planner/tool path,并在结果中暴露重新分发证据。
这类能力的目标不是让 LLM 永远判断正确,而是在判断需要改变路线时,执行链路能够真正改变。
同时,v2.0 引入非阻断 trace correlation。对不需要重规划的正常查询,引擎可以记录同一 trace 下的模型目录、planner 输出、工具调用、validator 结果和 query result 捕获状态。trace 的作用是支持排查、复核和回放,而不是改变查询语义。
能力边界:
v1.0 的 JSON Query DSL 适合表达单次语义查询。v2.0 中,Java 引擎进一步把一类复杂分析收敛为 DSL_CTE 分阶段执行:
DSL_CTE 的关键不是“让 LLM 写 CTE”,而是让 LLM 生成结构化 stage plan,由 Java 引擎校验每一阶段是否只引用可见字段和签收 alias。底层是否使用 SQL CTE 是实现细节,不是对 LLM 开放的自由 SQL 能力。
能力边界:
v2.0 对 relation result-stage 的表达式能力做了扩展,但扩展方式是 signed formula subset,而不是任意表达式语言。
当前 Java 引擎已签收的表达式面包括:
这些能力覆盖了很多业务分析中的“小公式”需求:占比、差额、偏差、分档、排名和后置过滤。它们的安全性来自两个约束:
明确拒绝的能力包括:
时期对比、漏斗和归因是企业分析中高频但风险较高的场景。v2.0 的策略不是直接开放通用能力,而是按业务模板逐项签收。
已经进入 Java-first 签收范围的典型能力包括:
convertedOpportunityId、convertedOrderId 等受治理 marker 计算转化率。这些模板的共同点是:模型、字段、分母、分子、时间窗口、分组和公式都有明确合同。LLM 不需要自由发明漏斗定义,也不能把缺失上下文的复杂归因直接交给引擎执行。
能力边界:
v1.0 中的 Compose 组合式分析强调多步骤查询。v2.0 中,Memory Grid 把“多步骤结果集”进一步收敛为有界、可校验、可审计的二次分析边界。
Java 引擎已经形成以下能力:
Memory Grid 的定位是小结果、受控结果和可复核二次分析,不是把数据库导入内存后让 LLM 任意查询。
明确不签收的能力包括:
v2.0 将 Pivot 从普通聚合结果展示推进到 Java 引擎签收的多维透视合同。
已实现能力包括:
Pivot 的关键是把多维透视当成引擎合同,而不是前端临时拼装。响应中的 contract evidence 应明确哪些 shape 已签收,哪些组合仍是 unsigned。
能力边界:
复杂业务分析往往需要可复用经验:哪些模型可用,哪些字段组合稳定,哪些参数必须澄清,哪些场景应该拒绝。v2.0 中,Experience Recipe 从离线文档和评测样本推进到最小 Java/MCP registry 能力。
已实现的核心能力包括:
Experience Recipe 的价值不是让系统盲目套模板,而是让已签收经验在合适的 namespace、tenant、权限和 owner 条件下被发现,并在冲突或缺参时保持可审计。
能力边界:
v2.0 继续坚持方言差异由引擎处理,而不是交给 LLM。新增复杂能力后,方言差异不只出现在基础 SQL,还会影响窗口、日期、weekday、pivot column window 和派生指标。
当前 Java 引擎证据覆盖了:
需要明确的是:窄证据不自动扩大为完整数据库 release gate。尤其是 SQL Server,当前 v2.0 只应声明已有 weekday parity 等签收证据,不应声明完整 SQL Server Maven profile 已成为发布门槛。
v2.0 的复杂分析能力必须配套更强的证据输出。一个结果如果包含重规划、stage plan、Memory Grid handle、pivot contract 或 recipe 命中,就应能展示相应证据:
这些证据的目标不是替代人工判断,而是让人工和系统都能复核:引擎到底执行了什么,拒绝了什么,哪些能力属于签收边界。
本矩阵只列入 Java 引擎已有实现证据的能力。状态含义如下:
| 能力 | 当前状态 | 适合场景 | 不适合场景 |
|---|---|---|---|
| Calibrated-route re-dispatch | 已签收 | 初始计划需改道时重新进入 planner/tool path | 忽略权限或执行自由计划 |
| Non-blocked trace correlation | 已签收 | 成功查询的调试、回放和审计 | 把 trace 当成数据访问 API |
| DSL_CTE stage plan | 窄合同可用 | 分阶段聚合、派生、窗口、排序、后置过滤 | 任意 SQL CTE、自由物理 Join |
| Governed expression subset | 窄合同可用 | 比率、差额、偏差率、标签、分桶、有限 ranking | 任意函数、任意 CASE、任意表达式 |
| Period-over-period templates | 窄合同可用 | 月同比、季度同比等已定义口径 | 通用日历推断、任意时期比较 |
| Funnel / attribution templates | 窄合同可用 | CRM lead funnel、target-event window、target-month matched bucket | 通用跨模型漏斗、复杂归因 |
| Memory Grid | 已签收 | 有界结果集二次分析、跨模型 alignment | 无界明细、任意内存 SQL、完整 durable backend |
| Pivot | 窄合同可用 | 树形轴、轴窗口、下钻、透视派生指标 | 完整 BI、任意透视 shape、未签名交互 |
| Experience Recipe registry | 已签收 | 受治理经验方案精确发现和复用 | 完整市场、向量检索、绕过签收合同 |
| Multi-database evidence | 窄合同可用 | SQLite/MySQL8/PostgreSQL 关键 parity;SQL Server weekday parity | 完整 SQL Server release gate |
为了避免误用,以下能力不属于 v2.0 稳定范围:
如果你已经基于 v1.0 集成 Foggy,v2.0 不要求推翻原有模型和查询方式。推荐路径是:
业务方不应只问“能不能回答复杂问题”,而应检查以下问题:
当这些问题无法回答时,系统应该澄清或拒绝,而不是给出看似完整但无法复核的答案。
Foggy v2.0 的核心变化,是把 LLM 数据访问从“受治理查询”推进到“受治理复杂分析”。它没有放弃 v1.0 的语义层、结构化 DSL、权限治理和证据原则,而是在 Java 引擎中增加了更细的执行合同、更明确的拒绝边界和更完整的可观测证据。
v2.0 因此适合被理解为 v1.0 的后续能力版本:它接替 v1.0 描述新的 Java-first 引擎能力,但不废弃 v1.0,也不把尚未签收的泛化能力包装成稳定功能。
本文能力口径主要依据以下内部签收与实现记录整理:
docs/v3.8/acceptance/version-signoff.mddocs/v3.8/README.mddocs/v3.8/P0-engine-capability-continuation-plan.mddocs/v3.8/coverage/v3.8-engine-capability-coverage-audit-20260528.mddocs/v3.6/P29-relation-expression-compiler-boundary-refactor-report.mddocs/v3.0/acceptance/*docs/v3.0/coverage/*这些记录用于约束 v2.0 的宣传边界:只有具备 Java runtime、validator、fixture、CI 或验收证据的能力才进入本文稳定描述。