← 发布

id 20260626-1 · 2026-06-26 · kernel v0.15.0 · TUI/Portal v0.10.0

Kernel v0.15.0 · TUI/Portal v0.10.0

LingTai release day:让座舱看清 token 花在哪里

这是一组配套的 kernel 与 TUI/Portal 发布,围绕一个想法:让座舱对「一个会话把 token 花在哪里」保持诚实。TUI 新增了 home 与 session 的 token 遥测——context 百分比条与按轮用量——随后是一轮聚焦的文案与布局打磨、双语状态提示、更安静的回放、更丰富的 session/kanban 可观测性,以及更快的 SQLite 索引会话加载。kernel 让 bash 结果报告内层失败,把 refresh-watcher 事件经由密钥脱敏器写出,用 SQLite 索引 token ledger 并带显式的报告 scope,为每次 daemon run 写出 artifact manifest,在磁盘源码与运行时漂移时提醒 agent,并在把 Codex summarize 引导表述为一个投资比率之后微调了它的阈值。

升级 / runtime

$ brew update && brew upgrade lingtai-ai/lingtai/lingtai-tui

上面的 Homebrew 命令在 tag v0.10.0 发布后用于更新 TUI/Portal。Kernel package lingtai v0.15.0 是 LingTai-managed environment 使用的 runtime package source;已有项目仍应按 TUI 管理的 refresh / setup 路径更新,不应把全局裸 pip 命令当作普通用户升级故事。本条目由干净的 release-worktree gate 准备;v0.10.0 / v0.15.0 的 GitHub Releases、PyPI 上传与 Homebrew tap bump 在 publish 步骤中完成。

新功能与改进

  1. 01

    看清 token 花在哪里的座舱

    TUI/Portal v0.10.0 把 token 与 context 遥测带到操作者本就会看的地方——home 视图与按轮的 API-call 底栏——而不是藏在一段 metadata 转储后面。

    • API-call 分组底栏现在显示当前轮的 token 用量——input、cache miss、output 与 cache rate——让一个 turn 的代价就出现在调用旁边(#441)。
    • home 视图底部一行显示当前会话的 token 遥测与一个紧凑的 context 百分比条,让一个会话的预算一眼可读(#441)。
    • Ctrl+O 回放默认隐藏臃肿的 _meta 信封,并在真正需要完整 metadata 时指向 /notification(#440)。

    为什么重要:看不见就无法削减;把按轮 token 代价与会话 context 放进默认视图,是让操作者注意到「某个会话正在悄悄烧预算」的第一步。

  2. 02

    把遥测文案与布局打磨清楚(#442–#447)

    新遥测只有读起来干净才有用,因此 home 遥测之后跟着一轮聚焦的文案与布局打磨:保留底栏、修正布局,并让状态提示双语且正确。

    • 在显示 session 遥测时保留底栏(#442),且 session 遥测不再需要 Ctrl+O 才出现(#443)。
    • 修正 home 遥测的 context 行布局(#444),并清理 home 状态提示与中文遥测文案(#445)。
    • home 状态提示改正为「expand」(#446),随后被本地化,让它用操作者的语言说话(#447,即 TUI 候选 head)。

    为什么重要:一个会溢出、会盖住底栏、或对中文操作者只显示英文提示的遥测行,会抵消数据本身的价值;这一轮打磨,正是把一个功能变成「默认可读」的关键。

  3. 03

    更丰富的会话可观测性与更快的加载

    除了 home 行之外,session 与 kanban 详情面板携带更多缓存的按会话统计,并以 molt 窗口为键,使 refresh 不再漂移;会话事件现在从 SQLite 索引加载,而不是重新扫描文件。

    • session/kanban 详情面板显示更丰富的缓存按会话统计——API 调用统计、展开的 token 拆分与 agent 路径——并以 molt 窗口为键,使 refresh 不再漂移(#428、#430、#432、#433、#438、#439)。
    • 会话事件从 SQLite 索引加载,而不是重新扫描事件文件,因此打开一个长会话更快(#435)。
    • markdown 查看器渲染 YAML front matter(name / description / version),而不是悄悄把它剥掉(#426)。

    为什么重要:每次 refresh 都漂移、或每次打开会话都要重新全扫的可观测性,会让操作者逐渐不再信任它;把统计钉在 molt 窗口、从索引读取,让它既正确又快。

  4. 04

    bash 结果与 token ledger 说真话

    Kernel v0.15.0 让运行时最被信任的两个信号更难被误读:完成的 bash 命令现在会报告它的内层命令是否真的成功,token ledger 也带着显式的报告 scope 被索引。

    • 完成的 bash 命令携带附加的、模型可见的 ok / command_status / warning 字段,使得非零内层退出或 Python traceback 不再藏在 status: ok 之下;status 字段为兼容保留旧含义。
    • token ledger 在 SQLite 中被索引,sum_token_ledger 新增显式 scope——main_agent 排除 daemon 行,all 包含它们——并记录与测试了 parent/child 重复计数语义。
    • tool-result 顶部列表 metadata 被精简,最新的 agent-meta 负载被瘦身,让模型在自己的记账上花更少 token(#490、#516)。

    为什么重要:一个把 `status: ok` 当成成功(而内层命令其实失败了),或说不清一个 token 总数是否包含它的 daemon 的 agent,会自信地做出错误决定;这些改动让信号与现实一致。

  5. 05

    密钥脱敏、源码漂移与 daemon 工件

    若干 kernel 改动加固了长任务 fleet 最暴露的接缝:一个可能泄露密钥的独立进程事件日志、悄悄与运行时漂移的源码,以及检查代价高昂的 daemon run。

    • relaunch/refresh watcher 子进程现在把 events.jsonl 写入经由 kernel 脱敏器(key-aware、fail-open,并带可诊断的 redaction_unavailable 标记),堵住了一个独立进程里 stderr 尾部、命令行或错误可能持久化密钥状值的缺口。
    • 启动时的运行时指纹(git HEAD + 源码摘要)写入 .status.json;当磁盘源码与运行时分叉时,agent 发出 source_drift 提醒,lingtai-doctor 也会报告——在 dev 运行时跳过(关闭 #178)。
    • 每次 daemon run 写出一个仅含 metadata 的 artifacts.json,使 daemon(action="check") 无需扫描 run directory 即可呈现 path、size、mtime 与 role,并为旧 run 提供安全回退。

    为什么重要:这些正是 fleet 在数小时无人值守后才会撞上的失败模式——被旁路进程持久化的密钥、在陈旧源码上动手的 agent、贵到无法审计的 daemon;修好它们,让长时间自治保持可信。

  6. 06

    把 Codex summarize 引导表述为一个投资比率

    Codex adapter 的 summarize 引导从陈旧的 wait/countdown 字段,被重新表述为一个投资比率,随后它的阈值被微调——这是本发布窗口里最新的功能改动。

    • _meta.agent_meta.adapter_comment 现在报告 full / incremental 计数、一个 full_to_incremental_ratio1:10 的目标,以及动态的 summarize_economy 维护提示,而不是陈旧的 wait/countdown 字段(#518)。
    • 随后微调了 summarize 引导阈值,让提示在正确的时机触发,而不是过度或不足地催促(#519)——版本 bump 之前最新的功能改动。
    • 配套的 Codex 工作把 continuation 与 transport 解耦,让 session identity 感知 molt,在 molt 边界轮换并允许覆盖 endpoint pool,并暴露 WebSocket cache ledger(#486、#495、#498、#502、#504、#517)。

    为什么重要:summarize 是每个长会话都要交的税;把它表述为一个可维护的比率并调好阈值,能把含糊的「快 summarize」唠叨变成 agent 真正能据以做预算的引导。

  7. 07

    release hygiene、验证与贡献者

    这对版本被重新定位为 TUI/Portal v0.10.0 与 kernel v0.15.0(kernel bump PR #521),并在任何 publish 步骤之前从干净的 release worktree 完成验证。

    • 在 v0.15.0 bump commit c365eec(基于 0797e93)上的 kernel gate:compileall 通过;完整 pytest 2935 passed、4 skipped;python -m build 产出 sdist + wheel;twine check 两者均 PASSED。
    • 在候选 head 37be28b(= origin/main,构建版本经由 make ... VERSION=v0.10.0 注入,无源码 bump)上的 TUI/Portal gate:除已知生成文件 docs/stars/stars.csv 的 CRLF 注脚外 git diff --check 干净;完整 TUI 与 Portal Go 测试通过;portal/web npm ci && npm run build 通过;make build 产出 lingtai-tui v0.10.0lingtai-portal v0.10.0
    • 记录在案、不阻塞发布:portal/web 的 npm-audit 警告只影响 dev-only 工具链,不影响 Go 二进制实际打包的 web/dist;本地构建的 kernel wheel 带 macOS-arm64 平台标签,因此除非有意发布按平台的 wheel,PyPI 的工件应为可移植的 sdist。
    • 本窗口贡献者:@huangzesen(lead,scope 与验证负责人)、@ktwu01(TUI preset 重构)、@9s5bz2jvd2-lang(TUI 新手工作手册重写)、@TZZheng(kernel 运行时 source-drift 提醒与 MCP inbox 延迟诊断)。
    • 本窗口因 issue 报告而推动落地/完成的报告者:@lin-du(kernel #301 → 以 PR #488「Expose Telegram rich formatting options」落地,另有 #300 completed)与 @888yzbt888(TUI #401 preset bug;Bug 1 由窗口内 kernel PR #479 修复,issue 标记 COMPLETED)。
    • 同样感谢 @BrianLiubr(TUI #429/#431)与 @xczics(TUI #437)在窗口内提交的 bug 报告——这些仍在 triage 中,此处仅作致谢记录,尚非已发布的修复。

    为什么重要:一次版本 bump 同样值得有完整的 gate 证据与诚实的贡献者列表;记录「publish 工件与 tag 正是从这些经过验证的 commit 切出」,是负责任地发布的一部分。

贡献者

感谢本发布窗口中提交代码、共同完成提交、参与 PR / review / assignment、报告或推动 issue closure 的贡献者。

验证

最终 release validation 来自干净 release worktree,commit c365eec927eb.