整理日期:2026-11-04。上一篇《token 浪费的五个地方与解决办法》记了问题和统计,这篇只讲一件事:每一步怎么做、结果如何、留下什么经验。
结论先行
这周 Claude 的钱,一半花在主会话;主会话里 57% 又花在处理监控提醒上。根因不是提醒多,而是拿 20 万 token 的大会话去处理”没事”这种琐事——结论再轻,上下文也得整篇重读一遍。本周做了五件事,监督助手已经把大部分提醒从主会话手里接走了。
三个来源,说清楚:
- 所有提醒都压给主会话处理——这是设计代价。
- 监控交接误判断线,每轮多一次空的
rearm-resurface唤醒——疑似 bug。 - 会话长期跑在大上下文:压缩门槛 37.2 万,单会话最长跑了 3806 回合。
做了什么,结果如何
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 很快就停,影响不大,但说明靠人记就会漏。 经验:写进偏好还不够,派活时逐条核对,更稳的是塞进派活模板。
操作上踩的坑
- SSH 写派活说明,反引号被 shell 执行了。 远程命令用双引号包,里面
`check: rearm-resurface`被当命令跑,内容变空。含反引号的用单引号 heredoc 传,写完回头查。 - 派活说明别用”船长原话:“开头。 系统拒绝 “Captain’s intent” 一节以称呼或说话人标签开头,直接写引号里的原话。
- 挂起任务要在清理之前做。 先挂起(带到期日)再清 worker,任务才留在待办;顺序反了,清理会直接把任务关掉。
当前状态(2026-11-04)
| 项目 | 状态 |
|---|---|
| 监督助手 | 开着,正常,大部分提醒不再打扰主会话 |
| 空唤醒 | 同步合并后没再出现,观察到 11-05 |
| 自动压缩门槛 | 25 万,观察一两天 |
| 空闲预压缩 | 开着但没触发,等船长决定是否排查 |
| worker 少写进度 | 规则已有,派活记得写上 |
该养成的习惯(不变)
- 主会话大约每天重开一次,重开前跑
/stow。 - 人不在用
/afk;在但不需要实时消息用/quiet。 - 动画、视频类任务先出样片,确认再做全片。
- 大任务拆小,一个 worker 只做一段明确的活。
- 看 Codex 额度时,把 skymate 之外的直接使用也算进去。
怎么判断有没有好转
- 一周后再比主会话”被提醒唤醒”对”人主动发消息”的回合比。11-03 那周是 1184:581,目标是明显下降。
state/.supervision-host.log里handled应远多于to-main。state/.watch-deliveries.log里rearm-resurface应接近 0。- 单个主会话不该再出现上千回合。