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

10 天前
 cobiao
我经常用 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

好奇大家跑长任务是怎么处理睡眠这事的?
2098 次点击
所在节点    Claude
8 条回复
batnss
10 天前
用 mac mini 😅
Tink
10 天前
你是用的桌面客户端?CLI 不存在这个问题吧
Doragd
10 天前
这类脚本感觉已经不需要了,直接让 cc 帮想办法就行
cobiao
9 天前
@Doragd 脚本还是需要的,只是不用你自己手写了,可以让 cc 写
cobiao
9 天前
@Tink CLI,你试试吧,跑一个长任务,中途合盖看看是否会中断
Tink
9 天前
@cobiao 用 Claude agents 不会中断呀
skuuhui
9 天前
你在提示词里加一句
任务开始前 执行 pmset -a disablesleep 1
任务完成后 pmset -a disablesleep 0

不就行了吗?
cobiao
9 天前
@skuuhui 是个办法,但是你如果你考虑多 session ,过热,异常中断等等情况就发现这样还不够

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1231529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX