终端标签也能看状态:Claude Code 支持 OSC 7501
同时开好几个终端标签、每个里面跑一个 Claude Code 会话,是很多人的日常。麻烦在于:你得一个个切过去看,才知道哪个还在跑、哪个卡在权限确认上等你点、哪个早就做完了。
CLI 2.1.295 加入了 Program Status Protocol(OSC 7501) 支持。只要你的终端实现了这个协议,就能在标签、窗口或任务栏这类位置直接显示 Claude Code 当前的状态:正在工作(working)、在等你(waiting on you)、已完成(done)。
OSC 是什么
OSC(Operating System Command)是终端转义序列的一类。程序往终端输出一段特殊格式的字符,终端不会把它当文字显示,而是当成「指令」来执行。你可能已经在用它的一些老成员:
- 设置窗口 / 标签标题;
- 输出可点击的超链接;
- 把内容写进系统剪贴板;
- 告诉终端当前工作目录。
7501 是这个家族里的一个编号,对应 Program Status Protocol:程序用它向终端汇报「我现在处于什么状态」,终端再决定怎么呈现——变色的标签、图标、徽标、进度提示等,取决于终端自己的设计。
升级后你能看到什么
在支持 OSC 7501 的终端里:
| 状态 | 含义 | 你通常该做什么 |
|---|---|---|
| working | Claude 正在思考、调工具、跑命令 | 去干别的,不用盯着 |
| waiting on you | 需要你回复、确认权限或做选择 | 切回来处理 |
| done | 本轮任务已完成 | 检查结果,给下一步指令 |
最直接的收益是:「等你」的会话不再被埋没。以前一个会话卡在权限确认上半小时没人管很常见,现在扫一眼标签就能发现。
需要终端支持
这项能力是双向的:Claude Code 负责发出状态,终端负责显示。
- 终端没有实现 OSC 7501:序列会被忽略,不会出现乱码,也不影响正常使用,只是看不到状态提示;
- 终端已实现:一般无需额外配置,升级 Claude Code 后即可生效;个别终端可能在设置里有开关,按终端文档来;
- 套了 tmux / screen 这类复用器时,转义序列可能被拦截或需要透传配置,状态不出现时先排查这一层。
升级后用 claude --version 确认 ≥ 2.1.295,再在自己的终端里跑一轮任务,看标签有没有变化。
和自定义状态栏有什么不同
Claude Code 本来就有可自定义的状态栏(statusline),两者容易混:
| 状态栏 statusline | OSC 7501 | |
|---|---|---|
| 显示位置 | Claude Code 界面内部底部 | 终端自己的标签 / 窗口 / 任务栏 |
| 内容 | 你写脚本决定:模型、分支、费用、上下文等 | 固定的几种运行状态 |
| 是否需配置 | 需要写配置或脚本 | 终端支持即可 |
| 适合 | 盯着一个会话时看细节 | 多会话并行时一眼找出要处理的那个 |
简单说:状态栏是进到会话里看的仪表盘,OSC 7501 是站在会话外面看的指示灯。两者可以同时用,互不冲突。
和通知怎么配合
如果你已经用 hooks 或系统通知在任务完成、需要确认时提醒自己,OSC 7501 不会替代它们:
- 通知适合你不在终端前时把你叫回来;
- OSC 7501 适合你就在终端前、在多个标签间切换时快速定位。
两者叠加,基本不会再漏掉一个在等你的会话。
小结
- 2.1.295 起,Claude Code 支持 Program Status Protocol(OSC 7501)。
- 支持该协议的终端能直接显示 working / waiting on you / done 三种状态。
- 不支持的终端会忽略,不影响使用;用 tmux 时注意透传。
- 它是会话外的「指示灯」,和会话内可自定义的状态栏是两回事,可以一起用。