工作原理

模型提出方案。
SQAI 裁决。

智能体从不编写 SQL,也从不生成可执行代码。它写出一个类型化请求——每个请求都走同一条路径:对照固定合约验证,对照策略检查,由确定性引擎执行,并附带可供重放的哈希值返回。

每个请求——ask()、compute() 或 AI SDK 工具调用——都走同一条路径。所有检查通过之前,任何内容都不会触达引擎。

01类型化意图

引擎可解析的请求,而非需要信任的字符串。

模型输出的是类型化对象——从不是 SQL,从不是代码。查询意图是 QuerySpec:对具名数据源进行聚合的指标。计算意图是 ComputationSpec:合约中的具名函数,附带参数与绑定。一个可辨识联合类型,两种形态——两者均无处容纳可执行字符串。

这就是全部的创作空间。形态无法表达的,模型便无法请求。

QuerySpec结构解析
{
"kind": "query",联合标签——query 或 computation
"version": "1",规范版本,已固定
"source_name": "sales",已连接的数据源,按精确名称
"metric": "revenue",待聚合的列
"aggregation": "sum",sum · avg · count · min · max 之一
"group_by": "region"可选——按字段拆分结果
}

同样可选filter · limit · order

计算形态module · function · args · kwargs · bindings · seed?

02合约校验

单一合约,哈希固定。未知请求被拒绝并附带指引。

规范对照能力合约进行验证——该合约是一个经哈希固定的生成文件,列出每项操作、其精确签名及确定性标志。能力可达的前提是:只读且确定性,或在给定种子时确定性。具备写入能力及非确定性的操作并非在运行时被拦截——它们从未被生成进入可用接口。

未知函数以 unsupported_operation 失败,并从同一索引返回 nearest_matches——模型自我修正,而非陷入循环。

能力合约

contract_hashsha256:79f1c5a6c7164e7e9e1750e70a5c03292fa87eb52d8148a740c06695924be9a1

4,778
合约中列出的操作
4,574
向 SDK 开放,只读
4,564
完全确定性
10
需要种子的模拟
204
排除在接口之外

准入条件read_only && (deterministic || deterministic_when_seeded)

遇未知名称时unsupported_operation + nearest_matches

03策略校验

由您的允许列表决定是否执行及如何执行。

策略在 createSQAI() 构建实例时固定,并在任何内容执行之前于进程内强制执行——作用于数据源、每个指标、分组、过滤器、绑定列及函数名。策略只能收窄合约:指定不在合法接口内的能力,仍会抛出 unsupported_operation。

模型的工具输入不携带任何 allowed* 字段。请求中没有任何内容可以扩大访问权限——因此提示注入也无从扩大。

allowedSources模型可命名的数据源

  • "sales"

allowedFields每个数据源可读取的列

  • sales.region
  • sales.revenue
  • sales.order_date

allowedFunctions默认值——所有只读能力,仅此而已

  • "all-readonly"

拒绝精确、有据可查、不可撤销

  • policy_denied_source
  • policy_denied_field
  • policy_denied_function

source: "sqai" · 不可重试

04确定性引擎

运行前已固定:float64,单线程,单运行时。

首先,绑定解析。模型命名了数据源和字段;SQAI 通过引擎的行对齐原语 extractColumns 提取实际值,空值按对处理。SQAI 从不自行压缩数组——因此被哈希的输入与实际执行的输入完全一致。

请求此时才触达引擎。运行时经过签名、版本控制与固定:float64 精度,单线程。首次 compute() 调用约需 110 秒完成初始化,此后常驻内存——finance.npv 热态耗时 0.83–0.93 ms。

确定性边界
runtime_bundle_version0.1.0
runtime_bundle_sha2564d64142e4c1ff63d299cfc8b172fdf97cb59169b545e1e02978e678a632ce6e1
platformdarwin
architecturearm64
precision_modefloat64
thread_count1
seed
input_hash2ea5ede72acd2912fe9e1230cef34afad4c9436bfa8a709bac2da02b478e3212

随每次结果一并记录——边界声明保证的范围,而非过度承诺。

05结果与溯源

两个哈希:一个在前,一个在后。

invocation_hash 在执行前盖章——覆盖模块、函数、参数、已解析绑定、种子、合约与作用域。computation_hash 在执行后盖章:将调用哈希与规范结果折叠而成。重放即再次运行并逐字节比对。

两个 SDK 共用同一规范序列化器,因此相同计算在 TypeScript 和 Python 中产生字节完全一致的哈希。查询结果遵循同等规范:对规范解析计划生成 plan_hash,附带决策路径及其运行时的精确作用域。

3188.1687606249325finance.npv · 绑定至实时列 · 热态 0.83 ms

执行前盖章

invocation_hash

8223a694250fc751fcf8a7777b8e1f524c44ff1f0e7e83451467f554a6123950

模块 · 函数 · 参数 · 已解析绑定 · 种子 · 合约 · 作用域

执行后盖章

computation_hash

ff5280ea128113f528dd1e9a28b9bc4a81469075ed7c981c7176fb172d98085d

调用哈希,与规范结果折叠合并

在 TypeScript 与 Python 中字节完全一致——在一种语言中计算的结果,可在另一种语言中重放并验证。

两者均计算自contract_hash sha256:79f1c5a6…

在查询平面上plan_hash f87610d8afeb…decision_path "exact_spec"deterministic_scope "local_registered_source"

06发现循环

不猜测。先发现,再试运行,再执行。

字段名与函数签名来自发现,而非臆造。AI SDK 仅暴露三个工具——其中只有一个会执行。

  1. 01listSources()

    我能访问什么?

    已连接的数据源,含精确字段名、类型及每个字段的允许操作。从不执行。

  2. 02listSources({ capabilitySearch: "npv" })

    我能计算什么?

    同一工具,检索确定性目录——匹配模块、精确签名,以及是否需要种子。

  3. 03explainQuery({ … })

    能否运行?

    试运行。返回已解析的计划、置信度及预览 invocation_hash——仅为预览,非已执行的哈希。

  4. 04queryData({ … })

    执行。

    唯一会执行的工具。返回结果及其完整溯源;超大结果可通过 result_id 检索。

工具从不抛出异常——每种结果均有类型ok · needs_clarification · rejected · error

逐字段解析其机制。

阅读文档