Logs

把会自己跑的状态抓回来

这一天的推进,集中在把那些会在后台持续漂移、反过来消耗注意力的运行状态,重新拉回可见、可控、可恢复的边界里。

  • daily-log
  • codex-run
  • codex-suite
  • openword
  • lvshe

这一天真正推进的,不是哪一个项目突然做完了,而是开始把那些会在后台自己持续、自己漂移、最后反过来消耗注意力的状态,一件件抓回到可见、可控、可恢复的边界里。当天能站得住脚的证据主要来自本地 Codex、Claude 和仓库产物;remote Codex 与 ChatGPT 都检查过,但没有补出新的独立内容,所以整篇日志更像是在还原“状态是怎么被重新驯服的”。

过了零点,前一天的 easyvoice 迁移尾巴还拖进来,但很快,重心就转向几条更直接的“别再让它自己偷偷运行”的线。codex-session-watch.ts 被重新整理,监控、解析、继续执行这些职责不再混成一团;lvshe-be 一开始像是在问把 TS 运行时换成 gots 会快多少,后面却被拉回更实的启动链路和真实日志。到了凌晨到清晨,codex-run 成了最重的一条线,不只是想做一个能自动继续的 run,而是把 supervisor、reporter、resume 这几种角色拆开,把终端退出后的行为讲清,把默认模型分配压回合理成本,下午还专门追了一次真实进程来源,确认到底是不是某个后台 run 在持续吃额度。这里关键的不是“又做了个脚本”,而是不再接受“它应该还在某处继续跑”这种模糊判断。

上午,同一种压力换了个更贴近使用体验的入口,落到了 codex-suite 的 iOS 端。Claude 那条会话从“少即是多”的整体重设计要求开始,很快落到现有 UI 过重、连接态不够干净的问题上,然后又在真机验证里暴露出更具体的错位:floating bar 挡住内容、safe area 没算对、从保存的 session 进入时会卡在 Opening Workspace。这条线表面上像设计工作,实际仍然是在对齐表象和真实状态:让 WebView 真正占住屏幕,让工具条别再假装悬浮,让 reconnect 逻辑别继续被临时 profile 覆盖。到了傍晚,app icon、Assets.xcassets 接线和 ipadmini 重装,又把这条线往“可交付的真实应用状态”上推进了一步。

中午到下午,openword 继续占着这一天最深的思考密度,但相比前一天又往前收紧了一层。重点已经不是泛泛地知道 WPS 里有哪些类、哪些词,而是继续把 importer 和 projection lookup 的边界逼得更硬,逼到能写成接近实现的伪接口和伪代码,而不是停在“我们差不多知道它怎么工作”的研究姿态。仓库里连续三次提交都在强化这件事:parser chain、orchestrator、IKReadIterator、property bag 这些中间层,被一点点从文档印象拉成以后真能接着实现的骨架。和 codex-run 放在一起看,这一天像是在两个方向上做同一件事:一个是在驯服未来会自己继续跑的工作流,一个是在驯服过去一直停留在猜测里的实现边界。

再往后看,Clash Verge 对 Tailscale 的错误代理、lvshe-be 启动时撞上的 EADDRINUSE,以及 easyvoice-stack 对 Windows FishTTS 启动脚本的补强,都像是同一主题的旁证:这一天不太愿意再把问题留在“应该差不多”“大概会这样”的层面。无论是网络到底走哪条路,服务到底卡在编译还是端口,还是某个 Codex run 到底为什么还活着,4 月 4 日都在把这些会自己失控、自己误导人的中间状态抓回来。真正留下来的不是一个单点成果,而是一种更硬的工作姿态:让长任务能被监督,让会话状态对得上界面,让运行路径和实现边界都能说清楚,这样第二天回来时,接手的就不再是一个黑箱。