mcpField
T
terminal-standards

terminal-standards

github.com/josiahsiegel开发5957 次安装19 周前更新
代码仓库

关于 terminal-standards

为需要输出或解析终端控制序列的软件开发提供参考,涵盖终端能力检测、回退策略及不同环境下的清理要求。

主要功能

  1. 01终端标准层级说明
  2. 02控制序列安全实践
  3. 03终端能力协商清单
  4. 04终端模式清理要求
  5. 05序列与能力检测参考指南

适用场景

  1. 01构建终端用户界面
  2. 02处理颜色与终端功能支持
  3. 03确保错误后恢复终端模式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill terminal-standards

安装后在 Claude Code 中输入/terminal-standards确认已加载。

附带文件references/capability-negotiation.mdreferences/escape-sequence-field-guide.md

详细介绍

终端标准、转义序列与能力协商

当代码会输出或解析终端控制序列、依赖终端功能,或必须在不同模拟器、多路复用器和 Windows 控制台主机上正常运行时,请使用此技能。

标准层级

请按以下层级考虑:

  1. 基线: 可打印文本、回车、换行、退格、制表符。
  2. ECMA-48 / ANSI / ISO 6429: CSI 控制序列和 SGR 属性。
  3. DEC VT 系列: 光标移动、备用键盘模式、设备状态模式、私有模式。
  4. xterm 约定: 备用屏幕、鼠标模式、焦点事件、括号化粘贴、OSC 扩展。
  5. 现代模拟器扩展: Kitty 键盘/图形、iTerm2 图像、sixel、OSC 8 超链接、OSC 52 剪贴板、主题查询。
  6. 平台主机行为: Windows 虚拟终端处理、ConPTY、tmux/screen 过滤、SSH 延迟。

越深入这一层级,就越需要检测、回退方案和清理机制。

更安全的默认做法

  • 优先使用框架抽象和 terminfo/能力库,而不是硬编码控制序列。
  • 有意重置样式;复杂的 SGR 输出后,不要依赖终端默认值。
  • 将未知响应、缺失响应和被拦截的查询视为正常情况。
  • 核心功能绝不能依赖剪贴板、图像、焦点事件或扩展键盘协议。
  • 启用某种模式时,应先注册清理路径,再继续操作。

常见序列和注意事项

功能典型序列注意事项
备用屏幕CSI ? 1049 h / CSI ? 1049 l可能被禁用或由多路复用器处理。必须进行清理。
SGR 重置CSI 0 m退出前及发生错误后都要重置。
真彩色CSI 38;2;R;G;B m / CSI 48;2;R;G;B m必要时降级为 256 色、16 色或无颜色。
括号化粘贴CSI ? 2004 h / CSI ? 2004 l解析粘贴边界;退出时禁用。
SGR 鼠标CSI ? 1006 h 加上跟踪模式需要解析器和坐标验证。
焦点事件CSI ? 1004 h仅作参考;事件可能不会到达。
OSC 8 链接OSC 8 ; ; URI ST提供可见 URL 作为回退方案。
OSC 52 剪贴板OSC 52常被终端、多路复用器、SSH 策略或安全设置拦截。
DCS 直通DCS ... ST多路复用器和某些协议会用到;高度依赖环境。
终端标题OSC 0/2恢复标题,或避免意外更改标题。
调色板查询/更改OSC 4/10/11 变体虽然实用,但实现分散;应恢复更改并为查询设置超时。

详细表格请参阅 references/escape-sequence-field-guide.md。

能力协商检查清单

  • stdout 是 TTY 吗?如果不是,默认应避免使用光标控制和交互模式。
  • TERM 是否有效?应处理 dumb、空值和未知值。
  • 应用是否运行在 tmux/screen 中?应假设某些协议会被过滤或需要直通。
  • 经典控制台 API 是否启用了 Windows VT 处理?
  • 库是否提供颜色级别检测?优先使用此功能,而不是临时解析环境变量。
  • 是否提供用户覆盖选项:--color、--no-color、--plain、--ascii、--no-mouse?
  • 查询超时是否有上限,以免应用因等待终端响应而挂起?

清理约定

如果启用了原始模式、备用屏幕、鼠标跟踪、括号化粘贴、焦点事件、隐藏光标或键盘协议,请确认在正常退出、Ctrl-C、panic、异常、致命错误、部分初始化失败和测试断言失败时都能完成清理。

参考文件

  • references/escape-sequence-field-guide.md - ANSI/VT/xterm 控制序列和注意事项。
  • references/capability-negotiation.md - 不同终端的检测和回退模式。

评论

支持 Markdown