跳到正文
Hacker News· cjododev·· 9 天前AI 评分38

Claude Code Colorizer:为 Claude Code 提供颜色可视化

Claude Code Colorizer

AI 导读

Claude Code Colorizer 是一款用 Go 编写、零依赖的 Claude Code 颜色可视化工具,可在提示词下方实时显示对话中提到的颜色色块,支持 #rgb、#rrggbb(aa)、rgb()/rgba()、hsl()/hsla() 和 oklch() 格式。

正文 · AI 翻译

为 Claude Code 提供颜色可视化,灵感来自 nvim-colorizer。使用 Go 编写, 无任何依赖。

  • 状态栏色块。 对话中提到的颜色(Claude 的 回复、它编写的代码、你的提示词)会以实时色块的形式显示在 提示符下方。它会读取 #rgb、#rrggbb(aa)、rgb()/rgba()、hsl()/hsla() 和 oklch()。
  • 状态颜色。 随着会话在 工作中 → 需要你 → 完成 / 出错 之间切换,终端标签页和背景色调会随之变化。
  • show / try。 高亮任意文件中的颜色字面量 (claude-colorizer show styles.css),或将某种颜色预览为你的终端 背景(claude-colorizer try '#1e1e2e')。

终端支持

Ghostty 是测试最充分的终端:claude-colorizer 正是在它上面 开发的。其他驱动遵循各终端文档中记载的转义 序列,并配有单元测试,但实际使用较少。如果你使用其中 某一款,请参阅 CONTRIBUTING.md 了解简短的测试清单,以及 如何报告结果或添加终端。

终端 标签页颜色 背景色调 标题回退
Kitty ✅ 远程控制¹ ✅ OSC 11 —
Ghostty —(不存在转义序列) ✅ OSC 11 ✅ 字形
WezTerm ✅ 用户变量 + Lua² ✅ OSC 11 —
iTerm2 ✅ OSC 6 ✅ OSC 1337 —
Warp — — ✅ 字形
Alacritty —(无标签页) ✅ OSC 11 ✅ 字形
Windows Terminal — ✅ OSC 11 ✅ 字形
其他类 xterm — ✅ OSC 11 ✅ 字形

状态栏色块使用 24 位 SGR 颜色,在所有这些终端中均可正常工作。

每个终端都是一个驱动,实现 terminal.Terminal (internal/terminal/drivers.go)。检测会读取环境变量 (internal/terminal/detect.go)。在 tmux 内部,它会改为询问 tmux 每个连接到会话的客户端 tty 正在运行哪个终端, 因为环境变量描述的是启动 tmux 服务器的那个终端。如果 连接了不同的终端,标签页颜色会发送给所有这些终端。要覆盖检测,请设置 CLAUDE_COLORIZER_TERMINAL=kitty|ghostty|wezterm|iterm2|warp|alacritty|windows-terminal|generic。 运行 claude-colorizer detect 查看检测结果。

¹ Kitty:将 allow_remote_control yes 添加到 kitty.conf(或 socket-only 加上 listen_on)。否则,kitty 会忽略标签页颜色,只有 背景会变化。

² WezTerm:颜色会以用户变量 claude_colorizer_tab 的形式发布。 要绘制标签页,请将以下内容添加到 wezterm.lua:

wezterm.on('format-tab-title', function(tab)
  local c = tab.active_pane.user_vars.claude_colorizer_tab
  if c and c ~= '' then
    return { { Background = { Color = c } }, { Foreground = { Color = '#000000' } },
             { Text = ' ' .. tab.active_pane.title .. ' ' } }
  end
end)

tmux:背景色调和标题无需任何设置即可工作;tmux 会将 它们应用到窗格。标签页颜色(kitty、iTerm2、WezTerm)必须传达到外层 终端,因此需要 set -g allow-passthrough on。当设置了 $TMUX 时,它们会被 自动包裹。

标题回退:Claude Code 会自行设置终端标题,可能会 覆盖字形。如果你的版本支持 CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1,请设置它。如果你不想要该字形, 请设置 "title": false。

安装

你需要 Go 1.22+ 和 Claude Code。

git clone <this repo> && cd claude-colorizer
make install

以上就是全部设置。make install 做两件事:

  1. 运行 go install,它会将二进制文件构建到 $(go env GOPATH)/bin。
  2. 运行 claude-colorizer install,它会使用该二进制文件的 绝对路径 将状态栏和所有钩子添加到 ~/.claude/settings.json,因此 该目录是否在你的 $PATH 中并不重要。

重启 Claude Code,然后试试看:向 Claude 索要一个调色板,色块 就会出现在提示符下方。它工作时标签页或背景会发生变化。

Kitty 和 WezTerm 中的标签页颜色需要额外一项终端配置。请参阅 终端支持。

install 会更改什么

  • 备份: 之前的文件会保存为 settings.json.bak。如果 settings.json 不是有效的 JSON(例如,它包含注释),安装 会拒绝改动它。
  • 你现有的状态栏会被保留: 它会被串联起来,因此其输出会渲染在 色块上方的那一行。uninstall 会将其精确还原。
  • 钩子: 它们会被追加到你已有的任何钩子旁边,绝不会 替换它们。再次运行 install 不会添加重复项。
  • 键顺序: settings.json 中的键会按字母顺序重写。

先用 claude-colorizer install --dry-run 预览更改。

标志 效果
--dry-run 打印更改而不写入
--no-hooks 仅状态栏(或在你安装了插件时使用此项)
--no-statusline 仅状态颜色
--settings PATH 编辑另一个文件,例如项目中的 .claude/settings.json

通过 make 传递标志,使用 make install ARGS="--no-statusline"。

卸载

make uninstall        # or: claude-colorizer uninstall

这只会移除它添加的条目,恢复链式状态栏,并删除二进制文件。

替代方案:作为 Claude Code 插件

该仓库同时也是一个插件市场。该插件只提供钩子,因为插件无法设置状态栏:

/plugin marketplace add /path/to/claude-colorizer
/plugin install claude-colorizer@claude-colorizer

然后运行 claude-colorizer install --no-hooks 来添加状态栏,而无需重复注册钩子。若想在不安装的情况下试用单个会话,请运行 claude --plugin-dir /path/to/claude-colorizer。

颜色含义

标签页、背景色调和标题字形显示会话正在做什么,因此你可以从另一个标签页或窗口判断 Claude 是否需要你。

颜色 字形 状态 含义
蓝色 🔵 working Claude 正在工作:思考、写入、运行工具。你暂时无需做任何事。
琥珀色 🟡 attention Claude 正在等待你:权限提示,或它已空闲等待输入。
绿色 🟢 done Claude 完成了它的回合。阅读回复并发送下一条提示。
红色 🔴 error 出错了:API 请求出错,或工具调用失败。
你的默认值 none reset 会话刚刚开始或结束。

工具调用失败后的红色并不总是意味着回合结束。Claude 通常会恢复,颜色会在下一次成功的工具调用时变回蓝色。API 错误后的红色会一直保持,直到你发送另一条提示。

字形是为无法给标签页着色的终端提供的后备方案。它出现在窗口标题的开头。请参阅 终端支持 中的 Title fallback 列。

每个状态背后的钩子事件

钩子事件 状态 默认标签页 / 色调
UserPromptSubmit、PostToolUse working #3b82f6 / #151b2b
Notification(权限、空闲) attention #f59e0b / #2a2112
Stop done #22c55e / #13231a
StopFailure、PostToolUseFailure error #ef4444 / #2b1515
SessionStart、SessionEnd reset 终端默认值

要更改任何颜色或字形,请参阅 配置。

配置

~/.config/claude-colorizer/config.json(或 $CLAUDE_COLORIZER_CONFIG)。每个键都是可选的,并叠加在默认值之上。运行 claude-colorizer config 以打印生效的配置。

{
  "tab": true,
  "background": true,
  "title": true,
  "states": {
    "working": { "tab": "#7c3aed", "background": "#1a1426" },
    "done":    { "background": "#eef9f0" }
  },
  "statusline": {
    "max": 12,
    "sources": ["assistant", "tools", "user"],
    "label": "hex",
    "prefix": "🎨 ",
    "empty": ""
  }
}

默认背景色调假定为深色主题。在浅色主题上,请设置浅色 background 值,或设置 "background": false。

开发

make test     # go vet + unit tests (parser, drivers, detection, transcript)
make cross    # linux/darwin/windows binaries in dist/

关于在终端上测试以及添加新终端,请参阅 CONTRIBUTING.md。

来源:Hacker News · github.com