cmux-socket-policy

cmux-socket-policy

热门

cmux CLI/Socket 开发中的 Socket 命令线程与焦点控制策略。适用于添加或修改 Socket 命令、CLI 命令、遥测(telemetry)命令,调整焦点/选择/打开/关闭/发送按键(focus/select/open/close/send-key)行为,或编写可能抢占应用焦点的自动化脚本等场景。

2.5万Star
2126Fork
更新于 2026/8/2
SKILL.md
只读
名称
cmux-socket-policy
描述

cmux CLI/Socket 开发中的 Socket 命令线程与焦点控制策略。适用于添加或修改 Socket 命令、CLI 命令、遥测(telemetry)命令,调整焦点/选择/打开/关闭/发送按键(focus/select/open/close/send-key)行为,或编写可能抢占应用焦点的自动化脚本等场景。

cmux Socket 策略

线程策略

  • 禁止在高频 Socket 遥测(telemetry)命令(如 report_*ports_kick、状态/进度更新或日志元数据更新)中使用 DispatchQueue.main.sync
  • 对于遥测热路径(hot paths),应在主线程之外(off-main)完成参数解析与校验。
  • 优先在主线程之外完成去重(dedupe)与合并(coalesce)。
  • 仅在必要时才通过 DispatchQueue.main.async 调度最少量的 UI 或数据模型变更。
  • 直接操作 AppKit/Ghostty UI 状态的命令允许运行在 main actor(主线程)上。
  • 添加新的 Socket 命令时,默认应在主线程之外处理;若必须在主线程执行,须在代码注释中给出明确理由。

焦点策略

  • Socket/CLI 命令严禁抢占 macOS 应用的焦点。
  • 除非命令显式具备焦点意图(focus intent),否则不得激活应用或拉起窗口。
  • 只有明确具备焦点意图的命令才可以修改应用内部的焦点/选中状态。
  • 具备明确焦点意图的命令包括:window.focusworkspace.select/next/previous/lastsurface.focuspane.focus/last、浏览器焦点命令以及 v1 等价的焦点命令。
  • 所有非焦点命令在应用数据/模型变更的同时,必须保持用户当前的焦点上下文不受干扰。

详细参考