自从用上 Claude Code 和 Codex 等神器之后,你是不是也和我一样,每天晚上都很难停下来?

凌晨两点还在写代码
明明只是想尝试点临时的新想法,然后随手改两个 bug,结果活还没干多少,一抬头已经凌晨两点了……context window 用了 80%,5 小时限速也快到了,但人还是停不下来,
这便是所谓的「AI 精神病」,需要把想到的每个 idea 全交给 AI,把套餐里的 token 用到一滴不剩……然后身体每况愈下,睡眠严重不足……体力非常之差……
为了拯救大家的睡眠,一位叫 s13k 的独立开发者小哥搞了个造福你我的有趣项目:
在终端里放一个黑洞。

黑洞效果演示
就字面意义上的黑洞,一个真正光线追踪渲染的史瓦西黑洞,它会直接漂浮在你的 Ghostty 终端里,陪伴着你c。
01
越用越大
不同于普通的屏保,这个黑洞会根据你 Claude Code 的 context window 使用量而实时变化。
刚开始一个新 session 的时候,黑洞只是右上角一个小小的暗影,几乎不影响你写代码。

context 模式演示
但随着你和 Claude 的对话越来越长,context 填充越来越多,黑洞就开始慢慢长大,漂移范围和幅度也越来越大。等你的 context 快满的时候,黑洞会占据将近半个屏幕,终端里的文字都会被引力透镜扭曲,弯曲着被「吸」进去。
而一旦你输入了 /compact 或 /clear,黑洞就会立刻缩回角落,重新变成一颗安静的小黑点,蓄势待发。

也就是说,你不用再盯着 status bar 上冰冷的百分比数字了,看一眼黑洞的大小就知道该 /compact 了。
02
物理计算
这个黑洞,并不是随便画个黑圆圈就糊弄过去了。
作者小哥用的是 Eric Bruneton 的黑洞着色器模型,在 GPU 上做实时光线追踪。每个像素都在积分自己的零测地线,沿着史瓦西度规弯曲。终端上的文字扮演的是被引力透镜弯曲的背景「天空」。

每个像素都在做物理计算
所以你能看到的所有效果,引力透镜、吸积盘、光子环,全都是物理计算出来的,没有一个是贴图画上去的。
吸积盘的颜色很物理:用 Shakura-Sunyaev 温度分布渲染成黑体辐射色,再经过相对论性多普勒频移,靠近的一侧偏蓝偏亮,远离的一侧偏红偏暗。
甚至连引力时间膨胀都有考虑:内侧轨道的盘面运动明显比外侧慢,越靠近视界越像是被冻住了一样。
(这样的高级货,你猜是哪个 AI 做的?我猜是已经用不到了的那个……
03
实现原理
有个问题是,Ghostty 的 custom shader 不支持自定义 uniform 变量,那……黑洞怎么知道你的 context 用了多少呢?
小哥想了个巧妙的小办法:把数据编码进光标颜色里。

数据藏在光标颜色里
Ghostty 的 shader 能读取光标颜色(iCurrentCursorColor),而任何程序都可以通过标准的 OSC 12 转义序列来改光标颜色。所以他写了一个 Python 脚本 claude-token.py,把 context 的填充比例编码进一个琥珀色光标的低位 nibble 里。
空的时候是 #f5b000,满的时候是 #f0bf0a。高位 nibble 加上一个 4-bit 校验和作为签名,防止普通主题的光标颜色误触发黑洞。
而 shader 每帧都会解码这个颜色,读出 context 填充率,再控制黑洞的大小。没有文件读写,也没有 reload,在下一帧就能实时生效。
Ghostty 在光标颜色变化时,还会把旧颜色存到 iPreviousCursorColor 里,所以 shader 可以在两个 level 之间做平滑过渡,离散的更新看起来就像连续的动画。
同时,状态栏会显示一行信息:context 填充百分比、当前模型、分支名、session 花费、以及用量限额。
04
番茄钟
除了 token 模式,黑洞还有个番茄钟模式。
这个模式完全在 shader 内部实现,不需要任何外部依赖,甚至不需要 Claude Code 在跑。
55 分钟膨胀,5 分钟收缩
黑洞会按照固定的时钟周期膨胀:默认 55 分钟的工作时间里,黑洞从小到大慢慢长;最后 5 分钟是休息期,黑洞自动缩回去。每小时循环一次。
如果你停止敲键盘超过 90 秒,黑洞会自动缩小直到消失,在你摸鱼的时候,它便不会来烦你。
05
黑洞进化
话说回来,s13k 最初做这个项目的时候,本来只是想搞个休息提醒工具。
但网友 @RoboCanvas 问了一句:「能不能让它根据 token 使用量来变大?」
另一位网友 @rominaramon 也来吐槽说,20 美元的 Claude 月费计划本身就已经是「内置的休息提醒」了……因为额度很快便会用完。
于是项目方向也因此一转,从休息提醒变成了 context 使用量的可视化指示器。
后来小哥又加了不少东西。
一个配套的 Black Hole Tuner 应用(用 SwiftUI 写的),可以实时调节黑洞的各种参数:吸积盘温度、倾斜角、多普勒强度、透镜深度、漂移速度……

Black Hole Tuner
还内置了 9 种预设风格:从《星际穿越》里的 Gargantua 到 M87* 的甜甜圈,从耀眼的类星体到纯透镜模式……总有一款适合你的审美。

9 种预设
黑洞甚至还从 Ghostty 终端里「逃」了出来,变成了一个 macOS 屏保。同样的 shader,不同的呈现方式。

macOS 屏保
06
快,去治病
项目已经开源,目前快 1000 颗 star。当然,也是由 Claude Code 写的代码:

安装很简单,不过前提是需要 Ghostty 1.3 以上版本。
当然,最省事的方式还是:把这篇文章全选复制,扔给 Claude Code,让它自己搞定。
为了身患「AI 精神病」的各位的身心健康,快去用起来吧。
当你终端里的黑洞大到连 cc 喷的啥都看不清了的时候,也正是你输入最后一个提前准备好的复杂指令,然后,回车、睡觉的时候!
◇ ◆ ◇
• 作者:https://x.com/s13k_





