Logs

2026-03-29 日志

这一天真正的推进,不是多做了几个移动端功能,而是把 codex-mobile 的连接与恢复,往“无需解释也能被信任”的产品标准上继续推进。

  • daily-log
  • codex-mobile
  • android
  • bridge
  • ux

这一天真正反复被打磨的,不是某个孤立功能,而是 codex-mobile 到底能不能从“技术上能连上”,继续走到“用户拿起手机就敢相信它会把工作接回来”的状态。当天能站住脚的证据主要来自本地 Codex 会话和留下的界面产物,Claude、remote Codex、ChatGPT 这几路没有补出足够正文,但现有材料已经足够清楚地说明主线: 我在逼这条移动连接链路摆脱隐性知识,摆脱“只有懂内部实现的人才知道现在是否正常”的状态。

凌晨开始表面上还只是一些零散检查,比如 .gitignore,但真正占住全天的还是 codex-suite 里的 Android 和 bridge 线程。上午以后,注意力已经稳定落到 codex-mobile 的原生宿主、真机安装、保存连接、回到前台后的恢复行为,以及 release 下还能不能留下足够日志这些问题上。这里最关键的变化,不是又一次证明“它能跑”,而是开始认真区分几种本质不同的状态: 应用只是退到后台、进程被系统回收后恢复、底层 bridge 或 tailnet 真的掉线、以及用户明确要退出当前工作区。状态边界一旦讲清楚,产品边界也跟着清楚了: 手机端不是要重做一套完整客户端,而是要负责配对、记住连接、恢复上下文,再把真正的 Codex 工作区稳稳接回来。

这条主线也直接反映在当天留下的界面里。早上的首页还是 Not connectedScan QRNo trusted sessions yet,扫码流程还卡着相机权限;随后又反复撞上 embedded tailnet runtime is not running,说明问题并不只是文案,而是恢复链路本身还不够稳。到了下午和晚上,界面已经明显往另一种状态收束: 从模糊的“未连接”变成更清楚的 ReadyTrusted sessionsSaved on this phone,再到 Open、恢复上次工作区,以及最终在 WebView 里真正看到 Codex 的线程列表、终端和 diff 面板。也就是说,这一天并不只是修故障,而是在把“连接成功”翻译成一种可以被人看懂、记住、反复进入的日常操作。

下午后半段的代码清理和夜里的追问,把这个方向说得更明确。lintDebug 暴露出的权限问题、QR 终端码密度的调整、设备授权是否持久、回到前台算不算恢复而不是强制重连,这些看似分散的细节,其实都在回答同一个问题: 这条链路是不是已经足够稳定、足够透明,能让用户把它当成连续工作空间的一部分,而不是一个随时可能掉回初始状态的演示壳子。连图标和视觉身份的调整也因此不显得跑题,因为那不是额外装饰,而是在连接和恢复终于开始可信之后,顺手把“它看起来像不像一个成型产品”也补进来。

回头看,2026-03-29 的推进不是新增了多少功能,而是把一个原本需要解释的系统,继续往“不解释也能被信任”上推。真正还悬着的,也正是这条主线没有完全收口的地方: tailnet runtime 和恢复语义是否已经稳定到可以放心依赖,lintDebug 暴露的技术债有没有在当天清干净,图标和品牌方向是不是已经定稿,以及手机端对“保存的连接”和“恢复的工作区”这两个承诺,什么时候能从现在这套越来越像样的实现,变成真正稳固的默认体验。