机制 · 全文

Tablize 是怎么运作的。

不删节的论证:失效模式、为什么记忆不是账、受管的四步、 那道你自己拧紧的门,以及完整边界。 短版在首页 ←

01 / 失效模式

整张表塞进上下文,或写脚本绕过模型 —— 两条死路。

能把 50 行读明白的模型,读第 5000 行一样明白 —— 变的是它读的时候手里还攥着多少跟这行无关的表。

死路 01

把整张表塞进上下文。

能用,而且一直能用 —— 直到不能用的那一刻。注意力被摊到几千行它当下并不需要判断的数据上, 早先那些行滑出窗口,而且失败是无声的:不报错、不抛异常,只是答案开始漂。而会话一结束,这次跑批也跟着结束。

死路 02

写个脚本绕开模型。

便宜、快、可重复 —— 代价是本该由模型做的语义判断,被压成了字符串匹配。「这家公司是制造商 还是贸易商?」变成拿公司名跑正则。这时脚本成了规则的唯一表述,没人复核过它, 而它判错的那些行,长得跟判对的一模一样。

第三条路

把流程固化到服务端,再把活派出去。

你的 agent 要下一批、算完、交上去、再要一批:语义判断仍然由模型做, 但它手里从来只有派给它的那几行。而且既然算力是你的 agent 出的, 包月的 coding agent 订阅就顶下了原本要按 token 付的 API 账单。

要选的从来不是「模型还是脚本」。要选的是:这套流程活在一个会遗忘的上下文 窗口里,还是活在一个不会遗忘的结构里。

02 / 为什么要一本账

记忆不是账。

这一节讲的是一次运行里,裁判、状态和理由,三样东西全住在干活的那个人身上。

不独立

提取逻辑和它的测试,是同一个作者写的。

agent 在这次会话里写了提取逻辑。某一行看起来不对的时候,同一个 agent 去调 校验器 —— 于是这批就过了。没有任何东西能拦住这件事,因为没有任何东西在 agent 之外。

不连续

上下文一消失,状态就没了。

哪些行领出去了、哪些交回来了、哪些被拒了、为什么 —— 全在一份转录里。 新会话看到的是文件和半成品,只能从蛛丝马迹里重建这次运行,而不是接着跑。

不可追责

三周以后,没人答得上来。

这一行是按哪个版本的标准收的?哪个模型产出的?它之前被拒过吗? 如果答案是「翻一下聊天记录」,那就没有账,只有回忆。

如果干活的人能改裁判,你就没有一道门。你只有另一个 prompt。

03 / 受管的那一段

只管很窄的一段,并且说清每一头归谁。

Tablize 管四步,其余的一概不认领。看每个框最下面那一行 —— 它写着这一步是你的还是我们的

第 01 步

原始证据

append-only 的源行 —— 一次爬取、一份导出、一个手工拼的 CSV。重复会保留: 那是关于采集的事实,不是错误。

你或你的 agent采集 · Tablize 不去抓

第 02 步

agent 的尝试

你的 agent 领一个有界的批次到磁盘上,用你的模型跑你的 prompt, 然后把结果作为一个批次交回来,附上模型和 prompt hash。

跑在你的机器、你的模型 key 上 · Tablize 不提供模型

第 03 步 · 可选

金标门

建线时不给金标,这条线就没有门:什么都不判决,行落下来标记为 未验收。给了金标,已知答案的检查样本就混进每一批 —— 期望值只存在服务端、领活时从不下发,错一条,整批被拒。

这条线配了金标之后由 Tablize 持有 · 交活的 agent 永远既读不到也批不了

第 04 步

结果版

不是第四张表 —— 是过程表的一个读法,显示每个源行最近的那一行。门开着时它只显示通过验收的, 被拒的尝试推不动任何东西;没有门的时候它显示落下来的行,并标记为未验收。

Tablize 投影 · 下游有没有真的用它,由你判断

唯一一件没有 CLI 命令的事:在开了门的边上,当检查样本是你的 agent 自己写的,这条线会以草稿状态建出来,在有人进画布把门打开之前,一行活都不往外发。 这就是首页那次录制运行里的 403 · pending_signoff。 一个能批准自己答案的 agent,等于没被任何人检查过。 没开门的边根本走不到这个问题:它立刻开始派活,并把落下来的行标记为未验收。

04 / 那道你自己拧紧的门

行是你的 agent 产出的。谁检查过?

在你把那道检查写出来之前,没有人。这里没有一个「先关着」的开关: 拿你还没准备好写的验收样本搭起来的门是一道噪声门,而噪声门比没有门更糟。档位在建线时就定死了,所以要拧紧就意味着重建这条线: 这是一个要专门去做的动作,等这条管线值得保护了再做。老线已经产出的结果原样留着。

none unverified 什么都不判 observe 3/4 unverified 只测量,不拦截 enforce ■ accepted 错一条,拒整批
三个档位,一个差别:错的那条能不能拦住整批。只有 enforce 授予「已验收」。
none · 没给金标文件

还没有门 —— 没有东西在检查。

账一分没少:每一批、每个模型、每一版判读标准、每个时间点都记着。缺的是那道检查 —— 没有任何东西拿结果去比对人确认过的答案,所以它们交上来就是未验收的。 这一档是第一次跑对的选择,最后一次跑错的选择

observe · 只能显式指定

只看不拦 —— 一批都不拦。

每一批都拿验收样本比过,分数也记下了 —— 但没有任何一批被拦住,所以结果仍然是未验收的, 哪怕这一批金标全过也一样:门不具约束力的时候,一次通过是测量,不是认证。 先用这些分数判断样本配得对不对,再让它们真的拦人。

enforce · 给了金标

错一条,整批被拒。

验收样本是隐藏的,而且有约束力。抽检没过就拒掉整批,连续被拒会让这条边停下来, 而不是让它空转。只有 enforce 能授予「已验收」 —— 这正是这个词到今天还值钱的 全部原因。

门是账上第一个可以拧紧的件。让管线耐久的不是它 —— 那部分在一条没有门的线上 就已经在跑了。

05 / 更多实物

同一次运行,还有一个角度。

产线和批次账都在首页。这是同一次录制运行剩下的那张图 —— 录制时门是开着的(enforce)。 未修图,100% 缩放,只在图头写明的地方做了裁切。

被拒的行

一行被拒,不等于它蒸发了。

筛到被拒,那 62 行还在 —— 公司名、模型选的分类, 以及它据以判断的那段证据文本

这就是下一次尝试能「讲道理」而不是「猜」的原因: 你可以先读弱模型到底说了什么,再决定改什么。

过程表 · 筛到被拒浅色主题 · 裁在系统列左侧
状态筛条上 rejected 62 处于选中状态,下面的表里是被拒的行:lst_0113 Linyi Chenglong Precision、lst_0085 Baoding Weiye Electronics、lst_0050 Guangzhou Brightway Rubber、lst_0014 Shaoxing Ruiheng Electronics,分类都是 manufacturer,各自带着证据文本。
筛到 被拒 62 —— 那些行仍然在账上, 并且带着当初据以判断的证据列。

截图来自 2026-07-28 的一台本机实例。机制、id、计数、判决和系统列都是产品自己的状态; 供应商那几行是为那次走查生成的样本数据。这张图拍摄于产品的浅色主题,在两个站点主题下都照原样显示 —— 我们宁可给截图打标签,也不给证据加滤镜。

06 / 边界

一行「落库」到底意味着什么,和不意味着什么。

这是整个论证最吃重的一节。一本夸大自己覆盖范围的账,比没有账更糟 —— 因为人会因此停止检查它从来就没管过的那一段。

采集 你的 · 账外 在账上 —— Tablize 管这一段 原始证据 尝试 ■ 验收门 已验收 消费 你的 · 账外
账管中间这一段。两头始终是你的。
这一段之内

Tablize 保证

标着「已验收」的行意味着它通过了当时那个版本的标准和检查样本,并且版本被记了下来。 标着未验收的行从来没被判决过 —— 标记本身会告诉你手上是哪一种

每一次尝试、每一个批次、每个模型、每次标准变更,都有账 —— 谁、什么时候、按哪一版。

失败的尝试留着且读得到,并且永远进不了已验收版。没有门的时候没有拒批可留 —— 什么都不判决,自然什么都不会被拒。

下一次运行从服务端状态接着跑 —— 未完的批次、租约、判决都在,不需要任何转录。

这一段之外

Tablize 不保证

源数据本身是真的、是全的。源行里从来就没有的证据,在门这里补不回来。

你定义的字段就是下游真正需要的字段。Tablize 执行你的契约,但不替你发现它。

结果真的被谁用了。在我们自己第一个跑通全流程的租户那里, 136 行里有 128 行通过验收之后从来没被下游取走过 —— 连续五轮,没人察觉,而账本自始至终是准的。

你的 agent 不往 Tablize 之外写东西。它有你的机器和你的 key; 这本账管的是一段边,不是这个 agent。

公开测试版 · 免费 · macOS、Linux 与 Windows

把源里没有的下一列,长出来。