Kernel v0.15.1 · TUI/Portal v0.10.1
LingTai release day:自我更新的 TUI、Claude Code provider,与更稳的 runtime 状态
一组配套的 patch release,补完上一轮为 Homebrew 开头的「自我更新」故事:source / user-local 的 TUI 现在可以自我更新——手动地、也在启动时——面向非 Homebrew 管理的安装。kernel 新增 `claude-code` LLM provider、一份为 curated MCP 提供捆绑手册的 MCP manual sidecar 契约、降低 kernel 状态写入风险的共享文件系统/JSON/JSONL helper 与一次 session-recovery 重构,以及对 spill/refresh 失败更诚实的可见性——外加座舱、doctor 与 mail 的打磨。
升级 / runtime
上面的 Homebrew 命令用于更新 TUI/Portal。source / user-local 的 TUI 现在也可以原地自我更新(手动命令或启动提示),无需 Homebrew。Kernel package lingtai v0.15.1 是 LingTai-managed environment 使用的 runtime package source;已有项目仍应按 TUI 管理的 refresh / setup 路径更新,不应把全局裸 pip 命令当作普通用户升级故事。本条目由干净的 release-worktree gate 准备;v0.10.1 / v0.15.1 的 GitHub Releases、PyPI 上传与 Homebrew tap bump 已发布。
新功能与改进
-
01
source / user-local 的 TUI 自我更新(#404 补完)
v0.10.0 发布了 Homebrew 更新后端;v0.10.1 为非 Homebrew 管理的安装补完 issue #404,让 TUI 无论怎样安装都能保持最新。
- 一个手动 TUI self-update 命令(#416)与一个 source 安装的 self-update 后端(#417),把原地更新带给 source / user-local 安装。
- 一个启动更新提示(#418),在磁盘源码落后于已发布 TUI 时提供更新,让操作者在落后时被告知。
- 这些建立在 v0.10.0 的基础之上——Homebrew 更新后端、doctor 安装方式检测与 source 安装元数据——现在扩展到非 Homebrew 安装。
为什么重要:一条只对 Homebrew 有效的 self-update 路径,会把 source 与 user-local 用户搁浅在陈旧二进制上;补完 #404 意味着 TUI 无论怎样安装都保持最新,并对自己的版本保持诚实。
-
02
给 kernel 的 `claude-code` provider(#525)
kernel 新增一个
claude-codeLLM provider,经由claudeCLI 驱动一个 Claude 订阅,拓宽操作者在不改动既有座舱的前提下支撑运行时的方式。-
claude-codeprovider 把 Claude 订阅上的claudeCLI 当作 LLM provider 来驱动(#525)。 - 它最初由已 closed 的 PR #299 提出,并在本窗口合并——原始贡献者已致谢。
为什么重要:同一个运行时背后更多的 provider 选择,意味着操作者可以按自己的账户与预算来支撑 fleet,而无需重新学习座舱。
-
-
03
MCP manual sidecar 与捆绑的 curated 手册
kernel 为 MCP addon 记录了一份 manual sidecar 契约,并为 curated MCP 附带捆绑手册,让一个 MCP 能携带运行时可呈现的使用引导。
- MCP manual sidecar 的结构与一份最小 sidecar 契约被记录在案(#529、#530)。
- 为 curated MCP 附带捆绑手册(#528),并新增一份 Telegram 媒体引导手册(#526)。
为什么重要:一个自带手册的 MCP,让运行时能从有据可查的来源回答「我该怎么用这个 addon」,而不是靠猜——这对媒体与消息类接口尤其重要。
-
04
更安全的 kernel 状态写入与一次 recovery 重构
两次 kernel 重构减少了那些手写的、各自略有差异、可能被长任务 fleet 写坏的状态写入:共享的文件系统 helper,以及 session-recovery / 工具执行的合并。
- 共享的
_fsutil文件系统 / JSON / JSONL helper 统一了 kernel 读写状态的方式(#510、#522),并记录了迁移引用。 - session-recovery 与 ToolExecutor helper 在
turn.py中合并,把_post_send_housekeeping重命名为_turn_boundary_housekeeping(#511、#523)。
为什么重要:每一条略有差异的状态写入路径,都是 fleet 在负载下写坏文件的潜在地点;把它们经由共享且经过测试的 helper,让运行时在长时间无人值守的会话里更稳。
- 共享的
-
05
把 spill 与 refresh 如实说清
过去会悄悄通过的失败现在会浮现:过期的 spill 工件会说明、refresh 的永久失败可见,且 headless 运行时存活性可被证明。
- 过期的 spill 工件现在带消息,而不是不透明地失败(#192、#291),refresh 的永久失败被变得可见(#292)。
- 一份 headless 运行时存活性证明,确认一个无人值守的运行时确实活着(#351)。
- Codex pre-molt summarize 引导被变得更清晰(#531)。
为什么重要:一个悄悄失败的 spill 或 refresh,正是长时间自治运行会发现得太晚的那类故障;把它们浮现出来,让操作者能在失败累积之前行动。
-
06
座舱与 doctor 打磨
围绕主线工作,座舱与 doctor 经过一轮聚焦的打磨,并随之落地一个 headless agent 就绪可靠性修复。
- 座舱:mail 视图底栏的实时 agent 活动指示(#422)、mail 视图复制模式(#402),以及实时
/vizghost-avatar 可见性修复(#354)。 - doctor:保存一份脱敏的报告 bundle,带隐私提示与导出提示、安装方式检测,以及诊断分区布局澄清(#406、#407、#409、#449、#450)。
- 可靠性:在继续之前等待 headless agent 就绪(#365),外加 dev-guide 的 release-workflow 文档与 README 安装方式输出(#448)。
为什么重要:一个 patch 窗口正是清理座舱与 doctor 小毛刺的好时机;一个能看到 agent 活动、能从 mail 视图复制、能读到干净诊断报告的操作者,会在长会话里更信任这个界面。
- 座舱:mail 视图底栏的实时 agent 活动指示(#422)、mail 视图复制模式(#402),以及实时
-
07
release hygiene、验证与贡献者
这对 patch 版本——TUI/Portal v0.10.1 与 kernel v0.15.1——在 publish 步骤之前从干净的 release worktree 完成验证。
- 在 v0.15.1 bump commit
2d23801(基于834ce8b)上的 kernel gate:compileall通过;完整pytest3034 passing、4 skipped、0 真实失败(三个 subprocess-import 失败被证明是本地 PYTHONPATH / 包未安装的工件,用PYTHONPATH=src复查转绿);python -m build产出 sdist + wheel;twine check两者均 PASSED。 - 在候选 head
418e470(构建版本经由make ... VERSION=v0.10.1注入,无源码 bump)上的 TUI/Portal gate:对比 v0.10.0 的git diff --check干净;完整 Portal Go 测试通过;portal/web npm ci && npm run build通过;make build产出 TUI 与 Portal 二进制。 - 记录在案、不阻塞发布:两个
internal/config安装检测测试只在维护者机器上失败,因为本地/usr/local//opt/homebrewdev 符号链接被解析到 Homebrew prefix 之外——归类为 host / 测试隔离敏感性,底层分类器已验证在干净路径上返回homebrew;portal/web的 npm-audit 警告只影响 dev-only 工具链,不影响 Go 二进制实际打包的静态资产;本地构建的 kernel wheel 带 macOS-arm64 平台标签,因此 PyPI 的工件是可移植的 sdist。 - 本窗口贡献者:@huangzesen(lead,scope 与验证负责人)、@TZZheng(source self-update epic 与 kernel 的文件系统/recovery 重构)、@wchwawa(mail 视图实时 agent 活动指示)、@rawpaper123(headless 就绪与存活性可靠性修复)、@LuuOW(
/vizghost-avatar 修复的 review)、@zechenzhangAGI(在 closed kernel PR 中提出claude-codeprovider,后由 #525 落地),以及 @9s5bz2jvd2-lang(closed/unmerged/kanbanmain/daemon API-call 拆分 PR #367,在窗口内完成 review 与致谢后关闭)。
为什么重要:一次 patch 同样值得有完整的 gate 证据与诚实的贡献者列表;记录「publish 工件与 tag 正是从这些经过验证的 commit 切出」,是负责任地发布的一部分。
- 在 v0.15.1 bump commit
贡献者
感谢本发布窗口中提交代码、共同完成提交、参与 PR / review / assignment、报告或推动 issue closure 的贡献者。
验证
最终 release validation 来自干净 release worktree,commit 2d2380186ace.
- Kernel compileall src + tests compiled clean
- Kernel full pytest 3034 passing, 4 skipped, 0 genuine failures (3 subprocess-import failures proven local-env artifacts, green on re-check with PYTHONPATH=src)
- Kernel build and twine check sdist + wheel built; both PASSED
- Kernel version bump single pyproject.toml line, 0.15.0 → 0.15.1
- TUI diff-check clean against v0.10.0
- TUI Go tests/build go test passed (2 install-detection tests failed only on host dev-symlinks, non-blocking); make build → lingtai-tui v0.10.1
- Portal web npm ci/build passed (dev-only npm audit advisories noted, not in shipped static assets)
- Portal Go tests/build go test passed; make build → lingtai-portal v0.10.1
- PyPI artifact policy portable sdist is the PyPI artifact; local wheel is macOS-arm64 platform-tagged