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
上面的 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 步骤中完成。
新功能与改进
-
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 放进默认视图,是让操作者注意到「某个会话正在悄悄烧预算」的第一步。
-
02
把遥测文案与布局打磨清楚(#442–#447)
新遥测只有读起来干净才有用,因此 home 遥测之后跟着一轮聚焦的文案与布局打磨:保留底栏、修正布局,并让状态提示双语且正确。
- 在显示 session 遥测时保留底栏(#442),且 session 遥测不再需要 Ctrl+O 才出现(#443)。
- 修正 home 遥测的 context 行布局(#444),并清理 home 状态提示与中文遥测文案(#445)。
- home 状态提示改正为「expand」(#446),随后被本地化,让它用操作者的语言说话(#447,即 TUI 候选 head)。
为什么重要:一个会溢出、会盖住底栏、或对中文操作者只显示英文提示的遥测行,会抵消数据本身的价值;这一轮打磨,正是把一个功能变成「默认可读」的关键。
-
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 窗口、从索引读取,让它既正确又快。
-
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,会自信地做出错误决定;这些改动让信号与现实一致。
- 完成的 bash 命令携带附加的、模型可见的
-
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;修好它们,让长时间自治保持可信。
- relaunch/refresh watcher 子进程现在把
-
06
把 Codex summarize 引导表述为一个投资比率
Codex adapter 的 summarize 引导从陈旧的 wait/countdown 字段,被重新表述为一个投资比率,随后它的阈值被微调——这是本发布窗口里最新的功能改动。
-
_meta.agent_meta.adapter_comment现在报告 full / incremental 计数、一个full_to_incremental_ratio、1: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 真正能据以做预算的引导。
-
-
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通过;完整pytest2935 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.0与lingtai-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 切出」,是负责任地发布的一部分。
- 在 v0.15.0 bump commit
贡献者
感谢本发布窗口中提交代码、共同完成提交、参与 PR / review / assignment、报告或推动 issue closure 的贡献者。
验证
最终 release validation 来自干净 release worktree,commit c365eec927eb.
- Kernel compileall src + tests compiled clean
- Kernel full pytest 2935 passed, 4 skipped
- Kernel build and twine check sdist + wheel built; both PASSED
- Kernel diff-check only delta vs origin/main is the pyproject.toml version bump to 0.15.0
- TUI diff-check clean apart from known generated docs/stars/stars.csv CRLF caveat
- TUI Go tests/build go test passed; make build → lingtai-tui v0.10.0
- Portal web npm ci/build passed (dev-only npm audit advisories noted, not blocking)
- Portal Go tests/build go test passed; make build → lingtai-portal v0.10.0
- PyPI artifact policy portable sdist is the PyPI artifact; local wheel is macOS-arm64 platform-tagged