只问模型一次。
留下一个永远作答的符号。
符号是把一个关于你数据的问题,变成一段签名过的、精确的过程,由你的 AI 助手通过 MCP 调用。模型只编写一次;floor 证明它;由人批准;你的机器运行它。每个答案都带有 model_calls: 0 和产生它的推导。
you> How much have we paid, by vendor region? → tools/call derive_demo_paid_by_region ← DERIVED · model_calls: 0 Central 11215.45 East 21576.59 South 4800.25 West 32996.02 rows -> filter(status equals 'paid') -> join(vendors on vendor_id=id) -> group_by(vendors.region) -> sum(amount)
记录自 1.1.2 运行时通过 MCP stdio 在下载包自带的虚构演示数据上的运行。本页没有任何一行输出是手工敲出来的。
一个问题。一条过程。两重签名。回答时没有模型。
由封闭词汇表组成
不是代码。是一条由命名步骤组成的流水线——rows → filter → join → group_by → reducer → top——执行器只认这些,别的一概不认。没有通往 Python 的后门,没有 eval,没有网络。
先由 floor 准入,再由人审核
十项机械检查(列是否存在?是否确定性?验证器是否拒绝错误答案?是否扎根于数据?),证明三次,然后由人阅读并把批准签名进工具。
精确,并附带推导
全程十进制算术——9,007,199,254,740,992 + 1 保持精确。每个答案都指明产生它的过程。当数据无法支持精确答案时,工具按名称拒绝,而不是返回一个貌似合理的数字。
模型提议。floor 裁决。人批准。你的机器执行。
软件里大多数“AI 决策”,其实是对你已经持有的数据做算术。把它们送给模型,意味着为一件本来就可以核对的事按 token 付费、每次都付——还拿回一个无法核对的数字。Perslis Symbols 把模型留在它有用的地方:把问题读一次。
六个已审核的符号,作用于虚构发票。在这里运行它们。
选一个问题。先显示真实运行时记录的答案;按运行会用运行时执行器的 JavaScript 移植版在你的浏览器里重新计算,并告诉你两者是否一致。先修改数据,就能看到拒绝发生。
本站自己的测试(scripts/check_symbols.js)把移植版钉在与 Python 运行时逐例相等:数值、拒绝文本、推导与工具描述。它只执行,从不准入——闸门留在 Perslis。
运行时自己的检查,已记录
冷数字,标注日期。
model_calls: 0来源:Perslis Floor 构建状态(2026 年 9 月 26 日)、论文的测量一节,以及上方演示背后的记录。
按次付费永远增长。符号只付一次。
设一次模型回答成本为 c,编写一个符号(几次模型调用编写规格,加上人的审核)成本为 A。问过 N 个问题之后:
t = 每次调用的 token 数,p = 每百万 token 价格,ε = 一次本地执行的成本(几毫秒 CPU——实际上为零),N* = 盈亏平衡的调用次数。超过 N* 之后,每多问一个问题就节省 c − ε;模型账单随问题数线性增长,符号账单是平的。
填入你自己的数字。默认值是供修改的占位数字,不是任何服务商的报价。
公式之外、无法诚实定价的一项:答错的代价。模型的数字无法核对;符号的答案带着产生它的过程,数据无法支持时就拒绝。
它还做不到的事。
尚未支持
相对日期(“最近 30 天”)、带参数的工具、直接连接数据库,以及自助闸门。词汇表之外的问题会被报告为无法映射——那个问题确实仍然需要模型,如实说出来就是输出。
工具通过试点获得
准入闸门和签名密钥有意留在 Perslis:一个错误却被签了名的工具会自信地、离线地、永远地作答,再没有东西来重新审视它。在测试版中,你发来导出数据和问题;我们构建、审核并签名每个工具;你运行工具包。
状态
试点。运行时可从 Perslis Floor 1.1.2 免费下载使用,包括商用。本页测量的一切都标注日期且可复现;不做超出范围的宣称。
人们最先问的六件事。
- 什么是符号?
- 一个关于你数据的问题——“我们按供应商地区各付了多少?”——绑定到封闭词汇表中的一条过程(rows → filter → join → group → sum),由 floor 证明,由人批准并签名,作为 MCP 工具提供给你的 AI 助手,在本地运行,回答时没有模型参与。
- 还有模型参与吗?
- 只参与一次:根据你的问题编写规格。准入之后,答案由你机器上的运行时计算;每个答案都带有
model_calls: 0和产生它的精确推导。 - 它拒绝做什么?
- 证据缺失时它不会猜(
NO_EVIDENCE);签名或审核无法验证的工具它不会运行;数据无法支持精确答案时它不会作答——数字列里的 N/A、含糊的日期、无匹配或重复的查找键——每一种都按名称拒绝。 - 为什么每个符号都必须由人批准?
- 闸门能证明过程按其书写是正确的,却无法证明过程的含义就是问题的含义。一条标着“已付发票总额”却筛选
status = open的规格能通过所有机械检查。因此必须有人把工具计算的内容用文字读一遍,对照它在真实数据上的答案,批准后签名进工具。 - 它如何改变使用模型的成本?
- 按次付费随每一个问题增长;符号只花一次编写加审核的成本,之后在本地执行,几乎为零。盈亏平衡点等于编写成本除以一次模型回答的成本——按本页的示例数字,是几千次调用,约两天。
- 演示是真的吗?
- 这些页面上所有运行时和闸门的输出,都是真实 1.1.2 运行时和真实准入闸门在虚构演示数据上的记录。“在浏览器中运行”按钮执行的是运行时执行器的 JavaScript 移植版,本站自己的测试把它钉在与 Python 运行时记录答案逐例相等。
发来导出数据和你的问题。拿回一个工具包。
我们只接纳少数拥有真实数据和真实问题的团队。你得到为你的数据审核并签名的符号,以及一个离线作答的运行时;我们得到缺口日志——那些还没有符号能回答的问题。