治理 · 只读架构

策略即代码。
而非提示词。

SQAI 将模型视为其本质:一个不受信任的客户端。允许列表在工具构建时固化于代码,在进程内于任何执行前完成校验,且不出现在模型的协议中。没有任何途径可以说服系统放行。

4,574合约暴露的能力数——全部只读
6某应用策略中的授权项
1实际执行的类型化请求

II完整收窄过程

三层约束,每层只减不增。

每个答案都经过相同的约束链。哈希锁定的合约定义可用范围,您的策略将其收窄至允许范围,一个类型化请求必须同时满足两者。

  1. 01

    合约

    锁定运行时中共有 4,778 项能力,其中 4,574 项暴露给智能体,全部只读。其余 204 项被完全排除——对模型而言,它们不存在。

  2. 02

    您的策略

    三个允许列表——allowedSources、各数据源的 allowedFields、allowedFunctions——在 createSQAI() 时固定。函数默认为 "all-readonly"。

  3. 03

    一个请求

    一个类型化计划,先对合约进行验证,再在进程内对策略进行校验——发生在执行之前,而非之后。

第 01 层 · 合约4,574 项暴露 · 只读
第 02 层 · 您的策略6 项授权
allowedSourcesorders
allowedFieldsregionrevenueunit_price
allowedFunctionsstats.medianfinance.npv
第 03 层 · 一个请求1 个类型化计划

QuerySpec v1 · median(revenue) by region · policy ✓

contract_hash sha256:79f1c5a6c7164e7e9e1750e70a5c03292fa87eb52d8148a740c06695924be9a1

只减不增。

策略只能缩小可用范围,任何操作都无法扩大它。若策略引用了合约未暴露的能力,createSQAI() 将在构建时抛出 unsupported_operation——应用在任何智能体连接之前即告失败。

模型的工具输入中不含任何 allowed* 字段。策略不在协议中,因此无论是提示词还是注入攻击,都无从扩大权限。

III策略即代码

一次编写,每次校验。

大多数治理工具位于数据路径旁侧,仅作观测。SQAI 的策略位于路径内部:三个允许列表写在构造函数中,在每次执行前于进程内强制执行。

const sqai = createSQAI({
  sources: { orders },

  // policy — fixed here, invisible to the model
  allowedSources: ['orders'],
  allowedFields: {
    orders: ['region', 'revenue', 'unit_price'],
  },
  // functions default: 'all-readonly'
  allowedFunctions: [
    'stats.median', 'finance.npv',
  ],
});
allowedSources
计划可引用的已注册数据源。其他任何数据源均返回 policy_denied_source。
allowedFields
各数据源允许访问的列。计划若触及其他列,返回 policy_denied_field。
allowedFunctions
计划可调用的只读函数——默认为 "all-readonly"。超出范围的调用返回 policy_denied_function。
tool input
不含任何 allowed* 字段。模型从不知晓策略内容,因此无法发送更宽泛的策略。

拒绝记录

拒绝以数据形式呈现,而非异常。每条拒绝携带智能体可读的稳定错误码——且均不可重试,循环无法通过反复尝试磨穿策略。

构建时

unsupported_operation

策略引用了合约未暴露的能力。构建时抛出异常,应用在任何智能体连接之前即告失败。

请求时

policy_denied_source

计划引用了 allowedSources 之外的数据源。

policy_denied_field

计划触及了该数据源 allowedFields 之外的列。

policy_denied_function

计划调用了 allowedFunctions 之外的函数。

source: "sqai"每次策略拒绝均以结构化、不可重试的结果返回。工具从不抛出异常。

IV数据托管

结果被托管,而非留存。

完整结果集不会进入模型上下文。它存入受治理的存储并以 id 引用;模型仅接收声明的样本。

结果存储

受治理存储 · TTL 15 分钟

result_id
16 个随机字节,base64url 编码。不可猜测,从不连续。
authorization
租户绑定。错误租户只会收到 result_not_found——存储从不确认记录是否存在。
ttl
15 分钟。到期后条目即被删除。
capacity
最多 256 条结果——总计 64 MB,每租户 16 MB。

存储持有结果。模型读取样本并如实说明。

模型上下文上限

defaultLimit100计划未设置行数限制时的默认值
maxExecutionRows1,000单次执行返回行数的硬性上限
maxRowsToModel25模型上下文最多接收的行数
maxCellsToModel250模型上下文最多接收的单元格数
maxBytesToModel32,000模型最多接收的结果数据字节数

截断情况始终在结果中声明。不完整的行不会显示——行要么完整呈现,要么不呈现。

审计视角

17%的组织能够事后重建智能体的完整工具调用序列

GDPR 第 30 条与 SOC 2 CC7.2 明确要求此类记录。

每条 SQAI 答案已自带完整的重建信息:

plan_hash · invocation_hash · computation_hash · contract_hash

回放是一次查询,而非一场调查。 回放机制说明

VI常见问题

治理问题,直接作答

模型能否自行扩大访问权限?

不能。策略在 createSQAI() 时固定,并在执行前于进程内完成校验。模型的工具输入不含任何 allowed* 字段,协议层面无从扩权——超出策略的请求将返回结构化的 policy_denied 结果。

只读是否是某个可被绕过的标志位?

不是标志位。暴露的契约包含 4,574 项只读能力;写入路径在构造上即不存在,而非被禁用。提示注入可以改变模型的请求内容——但无法向已固定的契约添加能力。

GDPR 第 30 条或 SOC 2 CC7.2 审查需要哪些记录?

每条结果均携带 plan_hash、invocation_hash、computation_hash 和 contract_hash。事后可随时对精确计算过程进行回放,并与这些哈希值进行验证。

查询后结果数据存储在哪里?

存入租户授权的结果存储:id 为 16 个随机字节,条目 15 分钟后过期,存储总容量上限为 64 MB,每租户 16 MB。模型上下文最多接收 25 行、250 个单元格及 32,000 字节——截断情况始终声明。

VII下一步

治理答案。

带上 schema 和合规问题,我们将为您呈现对应的策略。