4.6 KB · updated 2026-07-31 · md

v0.28.4.zh.md

docs/i18n/release-notes/v0.28.4.zh.md

Tesserae v0.28.4 — 你的其他账户从未被使用

<!-- translations:start -->

English · 한국어 · 日本語 · Русский · Español · Français · Deutsch

<!-- translations:end -->

Released 2026-07-31 · PyPI · GitHub release · pip install --upgrade tesserae==0.28.4

Tesserae 会在你已登录的 CLI 账户之间轮换:某个账户触及速率限制时切换到下一个,而不是 让本次运行的剩余部分退化为确定性提取。但这个轮换是关闭的——而且恰恰是在 Tesserae 最 常见的运行方式下。

一个环境变量让整套机制失效

设置 CLAUDE_CONFIG_DIRCODEX_HOME 会用那一个目录替换已发现的账户列表。 Claude Code 会话派生的每个进程都会继承 CLAUDE_CONFIG_DIR——因此编译只能使用启动它 的那个会话的账户,而当该账户耗尽时,轮换无处可去。

在本项目自己的图上,一天之内测得:

  • 一次编译耗尽了某账户的 5 小时限额,把 1,531 份文档丢给确定性提取,而另外两个 已登录账户配额充足却闲置;
  • 之后一次运行又因某账户 OAuth 过期损失 1,590 份,旁边就有一个健康账户。

图悄悄从约 13,000 个节点缩到 5,155 个,之后才被发现。

现在该环境变量指定的是最先尝试的账户,而不是唯一可被尝试的账户。

由你决定消耗哪些账户

设置后,llm_claude_config_dirs 和新增的 llm_codex_homes(按轮换顺序排列的列表) 具有最终权威——列表之外一律不试,并且优先于环境中那个继承而非选择的变量。

{
  "llm_codex_homes": ["/Users/you/.codex-work", "/Users/you/.codex-personal"]
}

每个提供方各有自己的键,因为 Claude CLI 配置目录和 Codex 主目录在磁盘上是不同的东西。 Codex 发现现在还要求 auth.json——在一台真实机器上,这条件排除了 24 个散落的 ~/.codex-*.log 文件,而它们此前每份文档都要浪费一次注定失败的 codex exec

账户耗尽不再让每份文档付出一个子进程

配额是账户的事实,不是文档的事实。当所有已配置账户都报告限额后,运行仍会为每份剩余 文档、每个账户派生一个 CLI 子进程去听同样的回答。现在这个判定会在本次运行中被记住。

它被刻意设计得难以误触发:所有尝试过的账户都必须是已证实的死路,且至少有一个明确说出 "you've hit your … limit"。其中只要有一个超时,运行就继续尝试——瞬时故障不等于耗尽。 判定按客户端划分,因此长期运行的守护进程不会在限额重置后仍被卡住。

丢失概念层的编译现在会说出来

Compiled project wiki: processed=2492 skipped=0 fallbacks=1531 nodes=… edges=…
WARNING: 1531 of 2492 document(s) (61.4%) fell back to deterministic extraction —
their concept layer is missing from this graph.

fallbacks=N 出现在机器可读的摘要行上,便于 CI 据此设卡;面向人的那行在超过 50% 时 从 note: 升级为警告。两者都指明恢复方式,而恢复不需要重新编译整个语料:

tesserae compile --changed-only --retry-fallbacks

这就是 #92。正是这份沉默让上面 所有 bug 隐形了一整天。退出码保持不变——那是对所有脚本化 compile 的契约变更,应当 单独决策。

其他

Claude 提取器不再传 --max-turns 1。该参数统计的是工具调用而非回复,因此在配置了 MCP 服务器的机器上,模型的第一次工具调用就用光了唯一一轮,CLI 在输出 JSON 之前就退出 了。"一次性调用"真正需要的是 --strict-mcp-config

@jokerized/tesserae 现在通过 npm OIDC 可信发布从 GitHub Actions 发布,因此发行版带有 来源证明,且不再存在长期有效的 npm 令牌。

从 v0.28.3 升级

直接替换即可。无 API 或模式变更;llm_codex_homes 是新增键,单数形式的 llm_codex_home 仍然可用。

如果你使用多个账户,请重新编译。 早期版本可能留下降级的文档,新的运行可以恢复它们, 而缓存意味着只有受影响的文件才有成本:

tesserae compile --changed-only --retry-fallbacks