v0.28.0.zh.md
docs/i18n/release-notes/v0.28.0.zh.md
Tesserae v0.28.0 — 不会不小心花钱的钩子
<!-- translations:start -->
English · 한국어 · 日本語 · Русский · Español · Français · Deutsch
<!-- translations:end -->
发布于 2026-07-27 · PyPI · GitHub 发布 · pip install --upgrade tesserae==0.28.0
为第一项升级。 这是一个花钱的错误,已在真实机器上复现。
$HOME 陷阱
位于 ~/.tesserae 的知识库使 $HOME 看起来像一个项目根目录。插件的 resolve_project_root() 从工作目录向上走,直到找到第一个 .tesserae/ — 因此任何在已注册项目外启动的会话都会解析为 $HOME,PostToolUse 钩子会在整个主目录上后台运行 tesserae compile --changed-only。
15k 个文件,一个 795 MB 的图,大约 10 小时的 LLM 花费,来自一个 setsid'd 进程,它的生命周期比生成它的会话更长。它在每次 Edit/Write 上都会触发。
后备选项使情况变得更糟。当没有找到 .tesserae/ 时,解析器会执行以下操作:
echo "$PWD"
return 0
它声称任何目录都是一个项目。调用者随后测试 -d "$root/.tesserae" — 这对 $HOME 下的任何工作目录都通过。该测试是最后一道防线,后备选项直接穿过了它。
现在有两道拒绝。$HOME 永远不是项目根目录,无论是通过向上走还是通过 git 根路径。不匹配时返回空值且状态非零,因此调用者不执行任何操作而不是猜测。
花钱的钩子是选择性加入的。 TESSERAE_HOOK_AUTOCOMPILE=1 启用自动重新编译;不设置时,它们什么都不做。仅应用于实际花钱的两个 — posttooluse-edit.sh 和 session-end.sh。session-start.sh 运行确定性的 code sync,pretooluse-compile.sh 仅拦截您自己输入的编译,因此两者都不受限。
后台运行模型工作的钩子应该被刻意打开,而不是在账单到达后关闭。
Python CLI 从未有过这个错误:ProjectWiki.load() 使用给定的路径且不会向上走,因此在项目外手动运行 tesserae compile 会干净地失败。陷阱仅存在于 shell 钩子中。
OKF v0.2
Google 的开放知识格式 v0.2 使出处、信任、生命周期和证明成为一级概念。Tesserae 现在发出 v0.2 并仍然使用 v0.1。
发出的内容:来自提取器和代理标记的 generated: {by, at};sources,包含可信度信号(来自会话计数的 usage_count、usage_window、last_modified,以及仅当恰好存在一个 authored_by 人物时的 author);从 supersedes 边派生的 status: deprecated 和 stale_after。
不发出的内容:verified,因此在 unverified 之上没有信任等级。 Tesserae 没有记录的验证事件,具有行为者和时间戳。其四个出处类是边属性 — 图表授权三元组的强度 — 而 OKF 的信任族是按概念验证事件。不同的轴;将一个映射到另一个会通过规范来漂白信任。验证了 5,193 个真实概念:verified 发出 0 次,generated.by 声称 human: 0 次。
三个消费者错误已修复,所有错误都是通过逐字导入规范的附录 A 通过真实 CLI 发现的,之前曾崩溃:未引用的 YAML 时间戳解析为 datetime 并破坏了序列化;v0.1 timestamp 后备在相同的未引用形式上以静默方式不执行操作;§6.1 的*推荐*bundle 相对链接(/tables/customers.md)产生零边,因此遵循规范的 bundle 导入为断开连接的节点。
由规范自身条款编写的验证器以零失败通过 5,193 概念导出,无损且字节等幂。
重言式判决已命名
关于 40% 的 verify_claim 的 SUPPORTED 判决是 evidenced_by 边,其引用的跨度是边本身的目标 — "C evidenced_by S",通过读取 S 确认。真实的、信息量不足的,以前与真正的文档支持判决无法区分。
有效载荷现在说明是哪一个。在所有 15,284 条边中:每个 evidenced_by SUPPORTED 被标记,没有其他标记,没有判决改变真值。加性的,所以 v0.27.0 的七判决契约保持不变。
从 v0.27.0 升级
库的直接替换。重新安装插件以获得钩子修复,如果您想要自动重新编译回来,设置 TESSERAE_HOOK_AUTOCOMPILE=1。
如果从较早的意外编译中在 $HOME 处存在一个杂散的 .tesserae,它现在是惯性的 — 但它也很大,一旦您确认您的注册表和配置存在于其他地方,删除它是安全的。