跳转到正文
Captain 的博客
返回

skymate token 浪费:排查到解决的复盘

整理日期:2026-11-04。上一篇《token 浪费的五个地方与解决办法》记了问题和统计,这篇只讲一件事:每一步怎么做、结果如何、留下什么经验。

结论先行

Claude 花费和主会话监控提醒成本构成

这周 Claude 的钱,一半花在主会话;主会话里 57% 又花在处理监控提醒上。根因不是提醒多,而是拿 20 万 token 的大会话去处理”没事”这种琐事——结论再轻,上下文也得整篇重读一遍。本周做了五件事,监督助手已经把大部分提醒从主会话手里接走了。

三个来源,说清楚:

做了什么,结果如何

监控提醒处理改造前后对比

1. 先让监督助手真跑起来,再谈别的。 11-03 开监督助手,引擎换成 Claude sonnet。之前配的 gpt-5.5-sol、gpt-6.1-terra 全报 unrecognized_model,提醒静默退回主会话——配置错了不报大错,只是悄悄走回老路。开启后:处理 24 次提醒,只有 3 次转主会话,每次约 $0.09,远低于主会话一轮。 经验:上游已有解法时,先确认它真在工作。看日志 state/.supervision-host.log 里 handled 和 to-main 的比例,别假设。

2. 同步上游,再修 bug,不要反过来。 上游 6 个新提交含监控和状态判断的修复,所以先合 PR #6 再动手。PR 情况:Herdr 过;第 5 组串行测试连续超时、重跑没过;“必须经 no-mistakes 提交”这项失败,在 direct-PR 下是预期;11-04 船长手动合。合完派 Codex worker 在隔离环境重修”误判断线”——正常接管不再空唤醒,异常退出仍正常提醒,原来那次复现不出来。查真实记录,最后一次空唤醒在合并前约 12 小时,之后没再出现。 决定:先不改,停 worker,观察到 11-05。不复发就关任务,复发就拿新记录重派。 经验:上游在修同一块代码,先同步省得白修、也省冲突。worker 复现不出来,别硬凑一个”看着像修复”的改动,先用真实记录确认问题还在不在。两次修复一次丢弃、一次发现可能不用修——说明当初的”推测”从没被证实,修之前先坐实根因。

不同上下文压缩门槛的成本对比

3. 调低压缩门槛,算过账再动。 疑问是频繁压缩也花钱,划不划算?按权重(普通输入 1、读缓存 0.1、写缓存 1.25、输出 5)估:

项目估算
压缩一次读上下文 ≈2 万 + 写摘要 ≈2.5–5 万 + 摘要入缓存 ≈4 万 ≈ 10 万单位
门槛 37 万,每回合读平均 20 万上下文 ≈ 2 万
门槛 20 万,每回合读平均 11 万上下文 ≈ 1.1 万
每回合省≈0.9 万,约 11 回合回本

主会话每天两百多回合,上下文从 3 万涨到 20 万要 80 多回合,压一次远比不压省;只有涨得特别快、几回合就得压一次时才不划算。压缩真正的代价是丢细节——但 skymate 的任务、决定、记录都落在桌面机文件里,下次重读,影响比普通聊天小。 做法:11-04 船长先调到 25 万,观察一两天再看要不要降 20 万。改的是 VPS 上 /data/home/.claude/settings.json 的 autoCompactWindow(372000 → 250000),备份为 settings.json.bak-compact-20261104。在跑的会话可能要重开才按新值压。 经验:压不压,取决于”压一次的成本”对比”之后每回合省的 × 回合数”。回合多、涨得慢的会话,门槛低更省。

4. 空闲预压缩(warm-compact)还没生效。 11-03 开了 config/warm-compact(空闲 45 分钟、上下文超 8 万时趁缓存没过期先压),但到 11-04 日志里一次压缩都没有。推测(未证实):主会话跑在 VPS、经 SSH 连桌面机,系统判断不了它空不空闲、输入框空不空,为安全就不压。下一步:派一个只排查、不改代码的 Codex worker,等船长定。 经验:开了功能不等于它在跑。找到日志,确认真触发过。

5. 减少 worker 进度汇报。 11-03 写进船长偏好:派活说明里写清 worker 只在阶段变化、卡住、等决定、完成时追加状态,不写 “working”。但 11-04 派重修时漏了这条——worker 很快就停,影响不大,但说明靠人记就会漏。 经验:写进偏好还不够,派活时逐条核对,更稳的是塞进派活模板。

操作上踩的坑

  1. SSH 写派活说明,反引号被 shell 执行了。 远程命令用双引号包,里面 `check: rearm-resurface` 被当命令跑,内容变空。含反引号的用单引号 heredoc 传,写完回头查。
  2. 派活说明别用”船长原话:“开头。 系统拒绝 “Captain’s intent” 一节以称呼或说话人标签开头,直接写引号里的原话。
  3. 挂起任务要在清理之前做。 先挂起(带到期日)再清 worker,任务才留在待办;顺序反了,清理会直接把任务关掉。

当前状态(2026-11-04)

项目状态
监督助手开着,正常,大部分提醒不再打扰主会话
空唤醒同步合并后没再出现,观察到 11-05
自动压缩门槛25 万,观察一两天
空闲预压缩开着但没触发,等船长决定是否排查
worker 少写进度规则已有,派活记得写上

该养成的习惯(不变)

  1. 主会话大约每天重开一次,重开前跑 /stow。
  2. 人不在用 /afk;在但不需要实时消息用 /quiet。
  3. 动画、视频类任务先出样片,确认再做全片。
  4. 大任务拆小,一个 worker 只做一段明确的活。
  5. 看 Codex 额度时,把 skymate 之外的直接使用也算进去。

怎么判断有没有好转