把 claude 的 /effort 选择器从反编译源码 1:1 扒出来
claude-effort-selector 是把 Claude Code 里那个 /effort 选择器 1:1 复刻出来的项目。切到 ultracode 时从标记处荡开的那圈紫色涟漪, 配色、波纹、布局全照原样搬, 不是对着截图凑近似。
做法是直接反编译 claude.exe, 从源码里把布局常量、每个阶段的配色、ultracode 涟漪的数学抠出来用原值。要的就是一模一样, 不是相似。
给了两份实现。一份终端 TUI, 纯 Python 标准库写的 effort_selector.py 加它依赖的整个 ui/ 渲染引擎包, 自包含, 拷走就跑。一份单文件网页版 claude-ultracode-effort-card.html, 浏览器双击就开, 不用构建也没依赖。快速看效果开网页, 抠细节逐帧对比跑终端。
六个阶段 low / medium / high / xhigh / max / ultracode。前几个是干净灰字配强调色, xhigh 加一道微光扫过, max 上彩虹, 压轴的 ultracode 是主角: 紫色涟漪走 cosine 波, 8 级 violet 调色板, 白字叠在上面, 从标记处一圈圈往外扩。波纹没写成内联一坨数学, 交给 ui/field.py::Ripple 逐格采样, 跟原实现结构对齐, 每格颜色都是算出来的, 后面核对也方便。
终端版在 Windows 上有个坑: 不设 UTF-8, 紫方块和框线会乱码成问号, 先设好编码。
$env:PYTHONIOENCODING="utf-8"
cd effort_selector
python effort_selector.py # ← / → 切换 Enter 确认 Esc 退出
python effort_selector.py --once --stage ultracode --frame 1 # 单帧 确定性 逐帧对比用
--once --stage ultracode --frame 1 调对齐时用得最多, 输出确定, 一帧一帧跟原版比。整个环境很轻, Python 3.x 纯标准库零依赖, 既然是从底层扒出来的, 就别再往上堆一层依赖。