news 2026/10/11 12:10:29

从黑体辐射到相对论聚束:Ghostty Blackhole吸积盘的物理实现深度解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从黑体辐射到相对论聚束:Ghostty Blackhole吸积盘的物理实现深度解析

【免费下载链接】ghostty-blackhole

Ghostty Blackhole puts a real, ray-traced black hole inside your terminal. It grows as Claude Code's context window fills up, live. A fresh session is a quiet hole in the corner. A full one swallows half your screen. You'll always see /compact coming.

项目地址:https://gitcode.com/gh_mirrors/gh/ghostty-blackhole
点击查看免费下载

Ghostty Blackhole 把一颗真正"光线追踪"的黑洞放进 Ghostty 终端:它的吸积盘颜色由黑体辐射公式计算,左右明暗不对称来自相对论聚束(beaming),而黑洞的大小会实时跟随 Claude Code 上下文窗口的填充程度生长——上下文快满时,黑洞会吞掉你半个屏幕,让你随时"看见"/compact正在逼近。本文带你从黑体辐射到测地线积分,逐层拆解这颗终端黑洞背后的物理实现。

🕳️ 它是什么:会随上下文"吃"屏幕的黑洞着色器

Ghostty Blackhole 的核心只有一个文件:blackhole.glsl。它是一个 Shadertoy 风格的 Ghostty 自定义片元着色器,把终端画面当作"背景天空",对黑洞附近的每个像素实时求解光线的弯曲轨迹。注意 README 里的一句话:这里没有任何"画上去"的东西——阴影、光环、吸积盘全部是光线追踪"落出来"的结果。

项目提供三种大小模式(见 blackhole.glsl#L73-L79):

  • Token 模式(默认):黑洞大小实时映射 Claude Code 上下文窗口的占用率。空上下文时它是右上角一颗安静的"角落种子",满上下文时移动更快、游走范围扩大,直到覆盖整个可玩屏幕。
  • 番茄钟模式:无守护进程、无脚本,纯靠墙钟在着色器内完成 55 分钟工作 / 5 分钟休息的生长-收缩循环,还能用光标活动检测"你停止打字就变小"。
  • 演示模式:42 秒自运行展示循环,黑洞从角落种子长到 100%,同时吸积盘外观在 Gargantua、M87* 甜甜圈、Quasar、Blazar 等预设间轮播——也就是上面那张预设网格图里看到的形态。

Token 模式的"数据通道"堪称巧思:Ghostty 着色器不支持自定义 uniform,但会传入光标颜色。随附脚本 claude-token.py 把上下文占比编码进琥珀色光标颜色的低 4 位(带 16 位签名校验,主题自带的光标色不可能"误召唤"黑洞),着色器每帧从iCurrentCursorColor解码还原,无需写文件、无需重载,更新在下一帧直接生效。

一根光线:Schwarzschild 测地线实时积分

经典的黑洞着色器方案会把史瓦西测地线预先算成查找表纹理,但 Ghostty 着色器没有自定义纹理,所以每个像素现场数值积分自己那条零测地线。

物理上用的是 Binet 形式的光子加速度:

a = -(3/2) h² x / r⁵

其中 h 是守恒的角动量矩。这一项不是近似——它复现的是史瓦西度规下精确的光子偏折。着色器用 leapfrog(kick-drift-kick)积分器推进光线,步长随半径自适应:靠近光子球时细、远离时空粗(blackhole.glsl#L497-L515)。每像素的积分预算由N_STEPS控制(默认 48),它也是首要的性能旋钮。

几个关键尺度(单位均为史瓦西半径 r_s,定义见 blackhole.glsl#L217-L222):

尺度位置你看到的
事件视界1 r_s光线进入即被捕获,文字"真的消失"而非淡出
光子球1.5 r_s光线在此盘旋,光子环由此涌现
ISCO(最内稳定圆轨道)3 r_s吸积盘内边缘的物理参考线
临界碰撞参数b_crit ≈ 2.598 r_s阴影半径——小于它的弯入视界,大于它的被弹开

逃逸的光线会被投影回终端"天空"平面:远处的像素直接切换到解析弱场偏折(α = 2r_s/b)做廉价计算,只有黑洞近旁的高代价像素才支付测地线积分;蓝光的偏折略大于红光,制造出一丝色散(blackhole.glsl#L445-L474)。

🔥 吸积盘的物理实现

黑体辐射:从温度到颜色

吸积盘每一圈辐射环的颜色不是调色盘里挑的,而是按温度算出来的。着色器内置一个黑体辐射近似函数(Tanner Helland 拟合,blackhole.glsl#L258-L269),输入开尔文温度,输出归一化 RGB——5500 K 落在白热,3000 K 偏琥珀,15000 K 开始泛蓝。

温度分布则采用 Shakura–Sunyaev 盘模型的温度剖面:内圈热、外圈冷,最热环归一化到DISK_TEMP(blackhole.glsl#L548-L552)。这就是为什么盘的边缘呈暖橙色、中心趋白——和真实吸积盘的多色温度结构一致。

相对论聚束与多普勒色移

盘面绕黑洞做开普勒轨道运动,内侧气体速度可观。着色器为每次光线-盘面交叉计算相对论因子:

g = √(1 − 1.5 r_s/r) / (1 − β·k̂)

(blackhole.glsl#L540-L546)。它的三个物理效果一次到位:

  1. 色移:g 乘回温度再喂给黑体函数——朝向你运动的一侧被蓝移成炽蓝,背离的一侧被红移变暗;
  2. 聚束(beaming):观测强度按 g^N 缩放,N 即DISK_BEAM(默认 2.5,约对应光子计数级)——接近侧整体变亮,形成标志性的"一边亮一边暗";
  3. 引力红移:分子 √(1 − 1.5 r_s/r) 是轨道上的固有时率,内圈光被额外拉红、变暗。

DOPPLER_MIX在 0(纯牛顿盘)到 1(全物理)之间平滑过渡,方便你直观感受"关掉相对论"长什么样。

"星际穿越"外观:多次穿越的薄盘与涌现的光子环

盘面是几何薄盘,而弯曲光线可以多次穿越它:光线先穿过远侧、绕到黑洞后面、再穿过近侧,于是远侧光弧同时出现在阴影的上方和下方——这正是《星际穿越》里 Gargantua 的既视感。而盘面上那圈明亮的细环(光子环)不是描边画出来的:它由在 1.5 r_s 光子球附近多绕几圈的高阶光线"涌现"而来,是积分的天然产物。

引力时间膨胀:内圈轨道肉眼可见地"冻住"

盘面花纹的时间推进速度按 √(1 − 1.5 r_s/r) 缩放——内圈轨道走得越慢,越靠近中心花纹几乎静止;整颗盘还会随着黑洞"质量"增大而整体减速(DILATION_MIN)。这是相对论效应在这个项目里最戏剧化的呈现。

上手与调参:让黑洞跑起来

安装步骤

  1. 克隆仓库:git clone https://gitcode.com/gh_mirrors/gh/ghostty-blackhole

  2. 在 Ghostty 配置(~/.config/ghostty/config)中加两行:

    custom-shader = /path/to/ghostty-blackhole/blackhole.glsl custom-shader-animation = true
  3. 若使用 Token 模式,把 claude-token.py 接入 Claude Code 的statusLine与SessionStart/SessionEnd钩子(完整 JSON 见 README.md 的 "Install token mode" 一节),新开一个会话即可看到角落里的种子黑洞。

用 Tuner 调参台实时改物理量

不想手改着色器常数?项目自带原生 SwiftUI 调参台 tuner/:按"黑洞 / 吸积盘 / 颜色与光 / 运动 / Token / 番茄钟"分组的全参数滑块,内置Gargantua、Quasar、M87* donut、Blazar、Inferno、Zen等预设,每次拖动都通过 SIGUSR2 热重载 Ghostty,即时生效(参数定义见 ParamSpec.swift)。运行方式:

cd tuner && swift run # 直接跑 ./tuner/make-app.sh # 或打包成 Black Hole Tuner.app

最值得拨的几颗旋钮:DISK_TEMP(黑体温度)、DOPPLER_MIX(相对论不对称开关)、DISK_BEAM(聚束强度)、DISK_INCL(盘面倾角,0 = 正面朝你,π/2 = 侧视"星际穿越"视角)、STAR_GAIN(点亮被透镜化的程序化星空,看恒星被拉成弧线绕洞而行)。

小结

Ghostty Blackhole 用单个片元着色器装下了相当完整的"黑洞物理课":黑体辐射定颜色、Shakura–Sunyaev 剖面定温度、Binet 形式测地线定弯曲、多普勒因子 g 定色移与聚束、固有时率定时间膨胀——而它最妙的地方,是把这些严肃的物理量接到了 Claude Code 的上下文窗口上:黑洞越大,越提醒你该/compact了。

【免费下载链接】ghostty-blackhole

Ghostty Blackhole puts a real, ray-traced black hole inside your terminal. It grows as Claude Code's context window fills up, live. A fresh session is a quiet hole in the corner. A full one swallows half your screen. You'll always see /compact coming.

项目地址:https://gitcode.com/gh_mirrors/gh/ghostty-blackhole
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 12:07:35

海德堡PDF tool box:印前预检、色彩转换与拼版实战

简介:海德堡插件PDF tool box是一套专门面向Acrobat 6.0、7.0、8.0用户的PDF文件批量拆分工具,主要解决大型PDF文档一键逐页分割、拆版输出等常见痛点,适合印刷出版、数码快印、制版排版等需要按页整理文档的工作场景。压缩包内共有17个文件&…

作者头像 李华
网站建设 2026/10/11 12:07:14

信用卡欺诈检测:工业级端到端实战指南

简介:本资源是一个基于R语言的信用卡欺诈检测实践项目,面向数据分析初学者与金融风控领域学习者,聚焦于利用机器学习方法识别隐蔽性高、样本极度不平衡的欺诈交易。项目涵盖从数据清洗、特征工程到模型构建与评估的完整流程,重点演…

作者头像 李华
网站建设 2026/10/11 12:06:41

发票关键字段检测数据集解析与实战指南

简介:本资源是面向计算机视觉开发者与财务自动化场景的发票关键字段检测专用数据集,聚焦Invoice Number、Date、Amount三类核心业务字段的目标定位任务,适用于YOLO系列模型(v5/v8/v12等)训练与文档结构识别算法验证。压…

作者头像 李华
网站建设 2026/10/11 12:06:08

REA建模实战:从ER图到可追溯业务事件

我第一次见到REA这个缩写,是在和一个做财务系统的朋友聊天时。他提到核心表全部按“资源-事件-参与者”来建模,我当时第一反应是:这不就是把ER图画细一点吗?直到后来,自己被一个销售对账需求逼到墙角,被一堆…

作者头像 李华
网站建设 2026/10/11 12:05:21

光纤水声信号识别:从时序预处理到TCN部署实战

简介:本资源是一套面向毕业设计、课程设计与期末大作业的深度学习实践项目,聚焦光纤水声信号识别这一典型海洋声学应用场景,适用于具备Python与PyTorch基础的本科生及入门级研究者。压缩包共276个文件,含11个核心Python脚本&#…

作者头像 李华
网站建设 2026/10/11 12:02:30

微信记录导出备份打印助手

在微信手动选中复制聊天内容后,将剪贴板里的聊天信息整理导出为可离线浏览的 HTML 文件夹。支持图片、视频、原附件保留,还原类似微信聊天界面样式;无需打开微信,脱离微信环境即可本地调阅查看,支持内容搜索、浏览器打…

作者头像 李华