刷 Twitter 时看到一段动图:Ghostty 终端里飘着一个黑洞,随着上下文逐渐填满,黑洞慢慢长大,把屏幕上的字符一点点吞噬。
这个视觉隐喻非常直观——每次和 Claude Code 对话时,上下文窗口接近上限,模型会自动触发 /compact 压缩,前面的细节就模糊掉了。这个过程通常很突兀,而黑洞插件让你用余光就能感知进度。

有一个开源项目解决了这个问题:你在终端使用 Claude Code 时,上下文使用率越高,黑洞越大。从右上角一粒米大小,逐渐长大到能吞掉半个屏幕。不用看进度条,就知道该 /compact 了。
项目原理
ghostty-blackhole 是 Ghostty 终端的一个 shader 插件。Ghostty 是一个开源终端模拟器,GitHub 上已有 5 万多 Star。

Ghostty 1.0 之后开放了自定义 Shader 接口,允许开发者编写 GLSL 代码对终端画面进行处理。理论上可以实现水波纹、CRT 扫描线、赛博朋克霓虹等各种效果,这个项目选择渲染一个实时光线追踪的黑洞。
灵感来自 Eric Bruneton 的 black hole shader,该项目使用预计算查找表配合光线追踪渲染黑洞效果。每一帧、每个像素都在 GPU 中实时计算。

这个项目的核心亮点在于:屏幕上所有元素——视界、光子环、黑洞吸盘、被弯曲的字符——都是光线追踪的涌现结果,而非手工绘制的贴图。GPU 实时计算时空弯曲和光线路径,每个像素的颜色都从物理公式中计算得出。
黑洞离字符越近,字符扭曲越严重。看着自己写的代码在黑洞边缘被拉成"意大利面",视觉效果非常震撼。
实际表现
安装后的效果:
- • 新会话:黑洞缩在右上角,约米粒大小,占屏幕面积约 0.06%
- • 上下文增长:黑洞逐渐变大,从角落漂移到屏幕上方,最大可达 80%+
- • 视觉反馈:吸盘和光子环随黑洞增长而变亮
- • 100% 满:黑洞会吞噬整个屏幕
- • /compact 或新会话:黑洞瞬间弹回角落并消失,终端恢复正常
安装步骤
前置要求
Ghostty 1.3+ 终端
第一步:Clone 仓库
git clone https://github.com/s0xDk/ghostty-blackhole
第二步:配置 Shader
在 Ghostty 配置文件中添加 shader(macOS 路径:~/Library/Application Support/com.mitchellh.ghostty/config):
custom-shader = /path/to/blackhole.glsl
custom-shader-animation = true
保存后 reload(macOS 快捷键 cmd+shift+,),新开窗口的角落会出现黑洞。
第三步:接入 Claude Code
要让黑洞跟随上下文变化,需要配置 claude-token.py 脚本。
修改 ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "/path/to/claude-token.py"
},
"hooks": {
"SessionStart": [{
"hooks": [{
"type": "command",
"command": "/path/to/claude-token.py"
}]
}],
"SessionEnd": [{
"hooks": [{
"type": "command",
"command": "/path/to/claude-token.py"
}]
}]
}
}
新开 Claude Code 会话,光标变为琥珀色,黑洞开始跟随上下文增长。
苏米注:这个项目巧妙地将抽象的"上下文使用率"具象化为物理现象,用 GPU 实时计算替代传统进度条。对于需要长时间使用 Claude Code 的开发者来说,这种视觉反馈比数字更直观。GLSL shader 的性能开销极低,因为计算在 GPU 上并行执行,不影响终端响应速度。