v0.28.2.zh.md
docs/i18n/release-notes/v0.28.2.zh.md
Tesserae v0.28.2 — 在 shell 里调用 verify_claim,以及一份对此撒谎的文档
<!-- translations:start -->
English · 한국어 · 日本語 · Русский · Español · Français · Deutsch
<!-- translations:end -->
Released 2026-07-27 · PyPI · GitHub release · pip install --upgrade tesserae==0.28.2
两项都来自一个在另一个代码库里基于 verify_claim 开发的团队。两者都属于只有真正 成为使用方才会发现的问题。
tesserae verify-claim
verify_claim 此前只是一个 MCP 工具,仅此而已。这意味着凡是通过子进程而非导入方 式与 Tesserae 通信的调用方根本够不着它——而导入并不是免费的:它会把整棵依赖树拉进 你的虚拟环境,并把你的项目版本与我们的绑死。
这与 v0.25 中 graph-map 填补的是同一个缺口,解法也相同。
tesserae verify-claim -s 'Flash Attention' -p uses -o 'Tiling'
# -> {verdict, reason, triple, citation, provenance, advisory}
端点只按精确的节点 id、大小写折叠后唯一的名称,或唯一的别名解析。按设计不存在自 然语言输入——其他任何输入都返回 NOT_RESOLVABLE,而不是去猜。
退出码对每一个构成答案的判定都是 0,包括 ABSENT("该图未主张此事"是一个真 实的答案,而非错误),而 NOT_RESOLVABLE 返回 2,好让脚本能区分*无法检查*与 已检查,结果如下。请结合 verdict 与 provenance.class 分支;绝不要基于 reason。
重新落地(re-grounding)会改变判定。文档却说它永远不会。
reground 参数的文档承诺它"仅供参考"且"永远不会改变判定"。而实现自写下之日起就 与之相悖:document_backed 要求 regrounded is not False。
实现是对的。 SUPPORTED 断言一条主张的证据是真实文档中的逐字片段,而在真实 的 15,284 条边的图上,2,088 个 SUPPORTED 判定中有 198 个引用了文件中可证明并 不存在的文本——那是抽取器跨标题拼接出来的碎片。仅凭 class 看不出来,因为 class 来自元数据,而只有重新落地才会去读磁盘。
因此被修正的是文档,而不是那道闸门:
regrounded: false— 我们读了文件,片段不存在。被证伪的证据不能是SUPPORTED,判定降级为PRESENT_UNEVIDENCED。regrounded: null— 未检查(--no-reground,或没有可读的source_path)。不 降级任何东西。要证伪,不要臆断。
在 reground 固定的前提下,判定仍然是图字节的纯函数。重新落地是同一张图可能给 出不同答案的唯一一个维度,因为它是唯一去读取图所不拥有的文件的维度——而且它只能 把判定向下移动。
如果你在消费 verify_claim,这会改变你该读什么。 以 verdict 为准一直是对 的;但把 regrounded 当作可忽略的装饰则不对:它是 verdict 的输入,而不是叠在 上面的点缀。
其他
CLI 动词现在通过与 MCP 工具相同的路径加载图,因此连接发现叠加层在两侧都会生效。 verify_claim 是成对局部的,所以若被检查的两个端点之间存在一条被发现的边,它原本 只会落进一侧的边集合,而不会落进另一侧——同一个三元组会因调用方式不同而给出不同 答案。
tesserae --help 曾把 verify-claim 列出两次。
从 v0.28.1 升级
可直接替换。无 API 变更;verify_claim 的七种判定契约与载荷键自 v0.27.0 起未变。