写了两个脚本, Claude Code 干活时 Mac 不睡觉(合盖也行),干完自动恢复睡眠

cobiao 2026-08-02 13:43 1

我经常用 Claude Code 跑长任务,然后离开一会,回来发现 Mac 睡着了,任务还没做完。后来,我就跑下 caffeinate 让它一直醒着,但有时候出去比较长时间,任务做完了还在一直耗电,而且不能合盖,在外面咖啡厅办公就不是很适合。我希望能够 Claude 干活时醒着(可以合盖),干完活正常 sleep 。有个软件 Amphetamine 是 ok 的,但太重了。

于是写了两个小脚本,cc 帮忙写的,心跳 + 看门狗:

- 心跳:挂在 cc 的 hooks 上,提交 prompt 和每次工具调用后 touch 一个会话状态文件,回合结束删掉。文件新鲜 = 正在干活,多开几个窗口互不干扰。
- 看门狗:LaunchAgent 常驻,每 20 秒看一眼,如果有活跃会话且 CPU 不过热,就 `pmset -a disablesleep 1`,合盖也不睡;否则翻回 0 ,恢复正常睡眠。

状态文件 30 分钟没刷新就按孤儿清掉,所以 Claude 崩了、终端直接关了,机器也不会被永远钉住不睡。过热时看门狗会主动放行睡眠。

跑了一个多月,还挺稳定的。任务跑着的时候可以随时走开,回来时要么它还在干,要么任务结束,该睡就睡,省电。

脚本、安装步骤、已知边界(比如后台命令的盲区)都在 gist 里:
https://gist.github.com/whitefoxx/3579ba4370bdc82eacb0e7ab1f29057b

好奇大家跑长任务是怎么处理睡眠这事的?
最新回复 (8)
  • batnss 08-02 13:58
    1
    用 mac mini 😅
  • Tink 08-02 17:33
    2
    你是用的桌面客户端?CLI 不存在这个问题吧
  • Doragd 08-02 19:35
    3
    这类脚本感觉已经不需要了,直接让 cc 帮想办法就行
  • cobiao 楼主 08-02 20:50
    4
    @Doragd 脚本还是需要的,只是不用你自己手写了,可以让 cc 写
  • cobiao 楼主 08-02 20:51
    5
    @Tink CLI,你试试吧,跑一个长任务,中途合盖看看是否会中断
  • Tink 08-02 21:20
    6
    @cobiao 用 Claude agents 不会中断呀
  • skuuhui 08-03 10:13
    7
    你在提示词里加一句
    任务开始前 执行 pmset -a disablesleep 1
    任务完成后 pmset -a disablesleep 0

    不就行了吗?
  • cobiao 楼主 08-03 11:11
    8
    @skuuhui 是个办法,但是你如果你考虑多 session ,过热,异常中断等等情况就发现这样还不够
* 帖子来源V2EX
返回