OSC 7501:让终端程序主动汇报状态

A Terminal Protocol for Program Status (OSC 7501)

我制定了一个新的终端转义序列规范 OSC 7501,旨在解决长期运行任务的状态反馈难题。无论是构建、部署还是日益普及的 coding agents,程序现在可以直接通过 pty 向终端汇报其当前状态:是正在工作、等待用户输入、已完成还是出错。这终结了依赖屏幕内容猜测或窗口标题正则匹配的笨拙方式,也无需为每个 agentic inbox 单独开发非终端 API。该协议通用且原生,任何终端开发者和应用开发者都能轻松参与,让程序自己告诉我们它正在做什么。

我不想再靠阅读屏幕或进程树来猜测程序在做什么,程序自己已经知道了,让我们给它一个告诉我们的方法!
  1. drewg123

    BSD 系统早就有了这个功能,而且已经很多年了。如果你在终端按下 ^T,就会向你正在等待的应用程序发送一个 SIGINFO 信号。默认情况下,你会看到程序名称、它阻塞在何处,以及关于实际/用户/系统时间和内存使用量的信息。

    在前景启动一个 emacs 窗口:

    % emacs

    ^T

    load: 0.32 cmd: emacs-31.1 64938 [select] 2.89r 0.75u 0.06s 6% 122404k

  2. weinzierl

    几十年来,我一直在使用一个简陋版的这个功能。

    我的 iTerm2 配置为在标签页中显示活动状态、新输出和视觉响铃。在 Linux 上,我使用 WezTerm 的一个近似方案。

    我有一个 bell 命令,可以在管道或序列中使用,以便在我感兴趣的事件发生时发出响铃。最简单的情况是当程序完成时。

    我还有一个花哨的别名,可以在 shell 命令序列中使用,除了发送终端响铃外,还能根据前一条命令的退出状态发出不同的声音。

  3. flopsamjetsam

    这让我想起了旧式 IBM 3270 终端的状态行(一切旧事物都是新事物 :)。实际上,我觉得这个主意相当不错。

同日更多故事

2026-10-08