Releases: gzy3894-png/codex-cli-zh-binary-skill
Release list
codex-for-tui-v2.5.26
Codex for TUI 2.5.26
2.5.26 是模型默认值与上下文压缩热修,修复 2.5.25 真机上 /model 已切换、control 配置仍是旧值,以及低上下文占用切模连续自动 compact。
用户可见变化
1. /model 即时写回配置真源
- Codex 仍先把选择写到当前 profile 的隔离 runtime。
- 交互 launcher 自动启动轻量
codex-session-defaults watch-runtime。 - runtime 变化后立即事务更新当前 profile 与
~/.codex/config.toml,不再等下一次启动消费 pending 文件。 - 每次写回携带 profile generation;配置模式或其他新会话已改过配置时,旧 watcher 会停止,不能覆盖较新的选择。
2. 固定压缩阈值真正生效
Codex 0.144.1 在两个模型的 comp_hash 不同时会无条件 auto compact,即使只用了很少上下文。固定策略 materialize 到 runtime 时,本版会清除 runtime 副本中的:
comp_hash- 模型自带
auto_compact_token_limit
profile/control 模型目录仍保留上游值;切回「跟随模型」会恢复。固定模式下只有用户设置的 token 阈值和上下文安全边界能触发自动压缩。
3. 只读命令零副作用
codex --version、codex -V、codex --help、codex -h、codex help 直接调用真实二进制,不再准备 profile runtime,也不会消费待写默认值。
回归证据
问题会话在约 57 秒内发生两次 PreCompact:auto:
- 第一次约
8k / 353k - 第二次约
26k / 258k
两次都紧邻 thread_settings_applied,对应 gpt-5.5.comp_hash=2911 与 gpt-5.6-sol.comp_hash=3000 的切换,而不是达到 token 阈值。
版本元数据
versionName=2.5.26versionCode=92- runtime epoch:
apk-2.5.26 - Codex binary:
0.144.1-zh.1 - 包名:
com.gzy3894.codexfortui
回滚
Android 已安装 versionCode=92 后不能普通覆盖降级。若本版安装后出现产品问题,应发布更高 versionCode 的前滚热修;脚本级临时回退可设置:
CODEX_FOR_TUI_SESSION_DEFAULTS_WATCH=0 codex这只关闭即时默认值同步,不会改写模型目录或会话记录。
codex-for-tui-v2.5.25
Codex for TUI 2.5.25
2.5.25 在 2.5.24 之上补齐 flag on 时自动常驻 watch(Runtime Emitter 产品路径),默认仍 不改变 折叠行为。
相对 2.5.24 的变更
1) ensure-watch / stop-watch
codex-tui-fold-bridge ensure-watch:仅当session-fold-bridge.policy为enabled=1时后台启动watch;enabled=0时 no-op 并停掉旧 daemon。stop-watch:停止后台 watch。status增加watch.running/pid/ log 路径。
2) launcher 自动挂钩
codex交互启动(codex_for_tui_run_real)best-effort 调用ensure-watch。- 默认 policy
enabled=0→ 不启 daemon(≡ 2.5.23 / 2.5.24 flag-off)。 - 可用
CODEX_TUI_FOLD_BRIDGE_AUTO_WATCH=0完全关闭挂钩。
3) 仍继承 2.5.24
- fold-bridge map/tail/discover/watch + 库内包装
- 文件托盘文本可选中/复制/分享(
MediaPreviewPane) - flag 默认
enabled=0/mode=dry-run
明确未完成
- T-DELIVER 长 final 强制入托盘 + T-S1 终端摘要分流
- 默认仍 不 开 PTY tap
版本元数据
versionName=2.5.25versionCode=91- runtime epoch:
apk-2.5.25 - 包名:
com.gzy3894.codexfortui
test 开启(测完务必关)
cat > "$PREFIX/local/ops/session-fold-bridge.policy" <<'EOF'
enabled=1
mode=apply
title_prefix=turn
EOF
# 下次 `codex` 交互启动会 ensure-watch;也可手动:
codex-tui-fold-bridge ensure-watch
# 回滚
cat > "$PREFIX/local/ops/session-fold-bridge.policy" <<'EOF'
enabled=0
mode=dry-run
EOF
codex-tui-fold-bridge stop-watch回滚
- flag:
enabled=0/mode=dry-run+stop-watch - 卸 2.5.25,重装 2.5.23(
versionCode=89)或 2.5.24(versionCode=90)
验证建议
sh tests/codex-for-tui-fold-bridge-smoke.sh
sh tests/codex-for-tui-static-guards.sh
CODEX_TUI_EXPECTED_VERSION_CODE=91 \
CODEX_TUI_EXPECTED_VERSION_NAME=2.5.25 \
sh tests/codex-for-tui-installed-device-smoke.sh
# flag on:单 turn 后 session-fold 出现 start…done(无需模型调 codex-session)
# flag off:无自动 fold
# 托盘文本可复制codex-for-tui-v2.5.24
Codex for TUI 2.5.24
2.5.24 是 test 通道 能力包:会话折叠 Runtime Emitter(fold-bridge)库内 MVP + 文件托盘文本可复制。
默认不改变 2.5.23 的折叠/长文行为:session-fold-bridge flag 默认 enabled=0 / mode=dry-run。
本版包含
1) session-fold Runtime Emitter(方案 A · N3.4)
- 新增
libexec/codex-tui-fold-bridge.py:把 Codex rollout jsonl 的
task_started/task_complete/turn_aborted映射为codex-session start|done|fail。 - 命令:
map-file·tail-once·discover-active·watch·status·self-test。 - 策略文件:
$PREFIX/local/ops/session-fold-bridge.policy(样例见docs/architecture/session-fold-bridge.policy.example)。 - 安装路径:support 清单 / bootstrap / apk-upgrade /
MkSessionmanaged assetcodex-tui-fold-bridge。 - 本地门禁:
tests/codex-for-tui-fold-bridge-smoke.sh+ statictest_fold_bridge_runtime_emitter。
test 开启(测完务必关):
cat > "$PREFIX/local/ops/session-fold-bridge.policy" <<'EOF'
enabled=1
mode=apply
title_prefix=turn
EOF
# 对当前活跃 rollout 轮询(或指定路径)
codex-tui-fold-bridge watch --interval-ms 1500
# 回滚
cat > "$PREFIX/local/ops/session-fold-bridge.policy" <<'EOF'
enabled=0
mode=dry-run
EOF2) 文件托盘文本复制修复
MediaPreviewPane文本预览:SelectionContainer可选中;顶栏 复制 / 分享。- 缩略图长按文本 → 复制正文(不再跳过 TEXT)。
- 复制/展示优先读磁盘全文(上限 2Mi 字符),避免卡在 12KB
textPreview切片。
3) 明确未完成(后续版本)
- 随 worker 自动常驻
watch(本版需 test 手动/脚本拉起)。 - T-DELIVER 长 final 强制入托盘 + T-S1 终端摘要分流。
- 默认仍 不 开 PTY tap。
版本元数据
versionName=2.5.24versionCode=90- runtime epoch:
apk-2.5.24 - 包名:
com.gzy3894.codexfortui(debug/test 变体仍带 suffix)
回滚
- flag:
enabled=0/mode=dry-run(或删 policy)。 - 卸 2.5.24,重装 2.5.23(
versionCode=89)APK;Android 不支持覆盖降级时需先卸载。
验证建议
# 本地(发版前)
sh tests/codex-for-tui-fold-bridge-smoke.sh
sh tests/codex-for-tui-static-guards.sh
# 安装后
CODEX_TUI_EXPECTED_VERSION_CODE=90 \
CODEX_TUI_EXPECTED_VERSION_NAME=2.5.24 \
sh tests/codex-for-tui-installed-device-smoke.sh
# 另:flag on 时单 turn 后 session-fold 出现 start…done;flag off 无自动 fold
# 托盘文本可长按选择 + 顶栏复制codex-for-tui-v2.5.23
Codex for TUI 2.5.23
2.5.23 是配置模式 可用性热修:在 2.5.22 列表枢纽基础上,修选中高亮、API Key 密文反馈、删除当前配置、确认语义与首页文案。
用户可见变化
| 项 | 行为 |
|---|---|
| 列表选中行 | 白底黑字(不再用反色黑条) |
| API Key | 密文输入,每字显示 •;提示「密文输入,显示 •;回车确认」 |
| 确认 | 回车确认,q 取消(不再依赖 y) |
| 删除配置 | 任意站(含当前 ★)都显示删除;可直接删当前站,删完回配置主页 |
| 首页 | 「新建配置」去掉 + 号 |
结构不变
- 首页:配置名列表 + 新建配置 + 官方登录 + 退出
- 选中站:使用并启动 / 编辑配置 / 删除配置
- 编辑:字段列表 + 保存并启动 / 返回
- 站级 vs 通用数据模型与
compact_policy全局规则不变
版本标识
versionName=2.5.23versionCode=89- runtime epoch:
apk-2.5.23 - Codex binary:
0.144.1-zh.1(与 2.5.22 相同固定制品)
升级说明
覆盖安装本版 APK 后打开配置模式:
- 选中行应为白底黑字。
- 编辑 Key 时应看到
•反馈,而不是空白。 - 当前配置也可点「删除配置」;确认后回主列表。
codex-for-tui-v2.5.22
Codex for TUI 2.5.22
2.5.22 是配置模式 单页枢纽 + 方向键操作 重构。数据模型仍是「站级 vs 通用」;交互从编号连环嵌套改为终端列表选择。
目标交互
| 场景 | 操作 |
|---|---|
| 主界面 | 一页列出全部中转站 + 新建/压缩/权限/完成 |
| 选中站 | 对该站 切换 / 查看 / 编辑 /(第三方)刷新 / 删除 |
| 列表选择 | ↑/↓(或 j/k)移动,回车确认,b/Esc返回,q退出 |
| 文本输入 | 名称 / API / Key / 固定阈值仍用行输入(带默认值) |
| 非 TTY / 测试 | 自动回退编号列表,行为可脚本化 |
用户可见变化
- 去掉主菜单 0–9 密麻编号分区;进入配置模式即是中转站列表枢纽。
- 对某一站的增删改查选在站内操作菜单完成,不再「先选功能再选站」的两层编号迷宫。
- 模型、推理、压缩策略、脏配置处理统一走同一套列表选择器。
- 真机终端优先方向键;管道/CI 仍用编号,不破坏自动化。
结构不变
- 站级:名称、模型策略、API、Key、模型目录。
- 通用:压缩策略、权限/沙箱、TUI、features、projects;
compact_policy只在index.json。
版本标识
versionName=2.5.22versionCode=88- runtime epoch:
apk-2.5.22 - Codex binary:
0.144.1-zh.1(与 2.5.21 相同固定制品)
升级说明
覆盖安装本版 APK 后打开配置模式:应看到中转站列表 + 底部操作项;用方向键移动、回车确认。若终端不支持方向键,仍可用编号。
codex-for-tui-v2.5.21
Codex for TUI 2.5.21
2.5.21 是 2.5.20 后的配置模式结构优化。2.5.20 已修好大会话 dual-sync 启动慢;本版把「站级 vs 通用」从文案落到可操作的字段结构。
目标结构
| 层级 | 字段 | 切换时是否变 |
|---|---|---|
| 中转站 | 名称、模型策略(模型 + 推理)、API Base URL、Key、模型目录 | 随站切换 |
| 通用 | 上下文/压缩策略、权限/沙箱、TUI、features、projects | 全站共用 |
用户可见变化
- 主菜单分区:
—— 中转站 ——/—— 通用(全站共用)——/—— 退出 ——。 - 当前摘要:顶部显示当前站模型策略与 API,以及全站压缩策略标签。
- 字段级编辑:编辑中转站不再强制整站向导;可单独改名称 / API / Key / 模型策略,也可选「全部重设」。
- 查看中转站:分区展示站级字段与通用压缩策略(标明全站共用)。
- 压缩策略:文案明确「全站共用,不随中转站切换」;引擎侧
compact_policy只写index.json,不再写入各站profile.json。
引擎
create_profile_directory/ migrate / repair 不再把compact_policy镜像进站级 meta。redact_profile剥离遗留的站级compact_policy;materialize/ APK repair 顺带清理旧字段。profile list/show附带全局compact_policy,供菜单摘要显示。- 站级仍只 materialize:
model/model_reasoning_effort/model_provider/model_providers/model_catalog_json+ 全局 compact 阈值。
版本标识
versionName=2.5.21versionCode=87- runtime epoch:
apk-2.5.21 - Codex binary:
0.144.1-zh.1(与 2.5.20 相同固定制品)
升级说明
覆盖安装本版 APK 后打开 App。配置模式进入后应看到分区菜单与当前站/通用摘要;编辑中转站可只改一个字段。压缩策略改完后,切换 grok2 / krill / pipi 不应再出现「每站一份压缩」的错觉。
codex-for-tui-v2.5.20
Codex for TUI 2.5.20
2.5.20 是 2.5.19 后的启动性能热修。2.5.19 已完成配置模式统一、krill service_tier 清理与 provider 同步 fast path;本版针对用户反馈「Codex 启动将近半分钟」继续下刀。
根因
原生 /resume 跨站可见性依赖 Codex++ 风格 dual-sync:
- 改写共享 rollout 的
session_meta.model_provider - restamp 各 runtime SQLite
threads.model_provider
2.5.19 的 fast=True marker 在 sessions 未变化 时可跳过全量同步。但用户每开一轮新会话都会推进 sessions mtime,marker 失效后旧实现会对 每一个 rollout-*.jsonl 做整文件 read_text + 行扫描。本机实测约 93 个文件 / 173MB(最大单文件约 94MB);热路径整文件扫描约 2.3s,手机存储与冷页上可放大到用户体感的半分钟级。
另外,session_meta 在全部现网 rollout 中均位于 首行,整文件读取本身是浪费。
修复内容
- session_meta 首行热路径
_rewrite_rollout_session_meta_provider只读首行;provider 未变则立即返回。- managed provider id 等长时原地补丁首行,不重写多 MB 正文。
- 长度变化时流式拼接首行 + 正文(不把整文件读进 RAM)。
- 仅对 ≤4MB 且首行不是
session_meta的异常文件回退全量扫描。
- warm launch 减负
codex_for_tui_runtime_sessions_linked:runtime 的 sessions/history 已链到 control home 时,跳过重复seed-shared-sessions与 legacy importer。- V2 热启动:
config-profiles-v2/index.json已是 schema 2 时,跳过多余的引擎status进程,直接profile launch。
- 2.5.19 能力保持
- 中转站只含模型策略 / API / Key;上下文/压缩/权限全站共用。
sanitize_service_tier、legacy 指纹去重、provider fast marker、安全删除 runtime。
本机验证(热补丁后)
- 94MB 文件 noop 改写:约 1ms(旧约 1.3s)
- 94MB 同长 provider 原地补丁:约 40ms(旧约 1.8s+ 且会重写整文件)
- 全量 dual-sync(93 文件):约 0.28s(旧约 2.3s)
- 正确性:改写后正文字节不变;首行 provider 可逆
用户墙钟「半分钟 → 可接受」仍需安装 APK 后确认;未确认前不宣称产品侧完全修好。
版本标识
versionName=2.5.20versionCode=86- runtime epoch:
apk-2.5.20 - Codex binary:
0.144.1-zh.1(与 2.5.19 相同固定制品)
升级说明
覆盖安装本版 APK 后打开 App。首次启动按新 epoch 完成 support/runtime 升级。之后再启动 Codex,即使会话库很大,provider dual-sync 也不应再整文件吞掉启动时间。若仍明显偏慢,请反馈是「输入 codex 到 TUI 出现」还是「打开 App 到 shell 就绪」。
codex-for-tui-v2.5.19
Codex for TUI 2.5.19
2.5.19 是 2.5.18 后的配置模式 / 启动性能 / 本机配置清理热修。2.5.18 已恢复原生 /resume 跨站列表;本版聚焦「只保留中转站差异字段、通用策略全站共用」,并修掉 krill 的无效 service_tier=high 与升级反复导入 -legacy 站。
修复内容
- 配置模式心智模型
- 菜单文案明确:中转站只含模型策略 / API / Key;上下文、压缩、权限等为通用项(全站共用)。
- 选择列表隐藏
-legacy*噪声站,并展示 base_url。
- 统一配置格式
model_providers改为站级专属:激活时整表替换为当前站 managed provider,不再把孤儿[model_providers.custom]合并进 common / runtime。strip_managed_fields始终剥离model_providers,避免跨站泄漏。
- krill high 错误
- 新增
sanitize_service_tier:仅允许空或priority;high/default/flex等会在 materialize 时剥掉。
- 新增
- 启动变快
sync_provider_visibility(..., fast=True):provider 与 sessions mtime 未变时跳过全量 dual-sync(约 3s → ~0.5s 热启动)。
- 升级不再刷
-legacylegacy_profile_already_imported按 name /name-legacy*/ base_url 指纹去重,避免 APK 升级反复再导入 v1config-profiles。
- 删除中转站更干净
profile delete清理 runtime 磁盘(sqlite/catalog),先卸掉 sessions/history 等共享链接,不跟随链接清空 control home 会话。
版本标识
versionName=2.5.19versionCode=85- runtime epoch:
apk-2.5.19 - Codex binary:
0.144.1-zh.1(与 2.5.18 相同固定制品)
升级说明
覆盖安装本版 APK 后打开 App。首次启动会按新 epoch 完成 support/runtime 升级。配置模式应只显示真实中转站;krill 不再因 service_tier=high 报错;再次打开 Codex 时启动应明显更快。若本机仍有历史噪声站,可在配置模式删除,或沿用升级前已清理的 grok2 / krill / pipi 三站。
codex-for-tui-v2.5.18
Codex for TUI 2.5.18
2.5.18 是 2.5.17 后的原生 /resume 列表热修。2.5.17 只重标 SQLite threads.model_provider,但 Codex 启动会从 rollout session_meta backfill 索引,旧站 provider 会把列表再次滤空。
修复内容
- 启动 materialize /
seed-shared-sessions/restamp-thread-providers时执行 Codex++ 风格 双写:- 改写共享
sessions/**、archived_sessions/**中 rollout 的session_meta.payload.model_provider为当前站 provider; - 把各 runtime
sqlite-builds/*/state_5.sqlite的threads.model_provider重标为同一 provider; - 将
has_user_event=0的行修复为1(可见性兜底)。
- 改写共享
- 这样即使 Codex 再 backfill,也会从已改写的 session_meta 写入正确 provider,原生
/resume(当前目录)可列出共享会话,无需--all。 - 不改会话正文、UUID、cwd;仅同步 provider 可见性字段。
版本标识
versionName=2.5.18versionCode=84- runtime epoch:
apk-2.5.18 - Codex binary:
0.144.1-zh.1(与 2.5.17 相同固定制品)
升级说明
覆盖安装本版 APK 后打开 App。首次启动会按新 epoch 完成 support/runtime 升级;进入任一中转站后原生 /resume 应显示共享会话列表。若仍为空,在启动台执行一次配置修复或重新打开 Codex 窗口,使 materialize 再次跑 provider 同步。
codex-for-tui-v2.5.17
Codex for TUI 2.5.17
2.5.17 是 2.5.16 后的原生 /resume 列表热修:会话文件虽已跨中转共享,但 Codex TUI 会按当前站 model_provider 过滤 SQLite threads,历史行仍带旧站 provider id 时会显示「还没有会话」。本版在 materialize / seed-shared-sessions 时自动把各 runtime 的 threads.model_provider 重标为该站当前 provider。
修复内容
- 新增
restamp_runtime_thread_providers/restamp_all_runtime_thread_providers:按 runtimeconfig.toml的model_provider更新其sqlite-builds/*/state_5.sqlite中threads.model_provider。 materialize_runtime在写完 runtime config 后对全部 runtime restamp,保证切站启动后列表可见。seed-shared-sessionsCLI 在共享 sessions 链接修复后一并 restamp;新增restamp-thread-providers运维入口。- 不改写 rollout jsonl 正文;仅改 per-runtime SQLite 索引,便于各站各自过滤通过。
- 版本同步:
versionName=2.5.17、versionCode=83、runtime epochapk-2.5.17。
验收重点
- 覆盖安装后打开 App,切换任意中转/配置档(含 grok 站)后启动 Codex。
- worker 内原生
/resume(不手动加--all、保持「当前目录」过滤):每个站应看到与共享 inventory 一致的非空列表(同 cwd 下条数一致)。 - 原先在 grok 等站显示 0 条、主站正常的场景,切过去应恢复可见。
- 2.5.16 的 sessions 共享符号链接语义保持不变。
版本
versionName=2.5.17versionCode=83- runtime epoch:
apk-2.5.17 - 包名:
com.gzy3894.codexfortui