cmux-socket-policy

cmux-socket-policy

熱門

適用於 cmux CLI 與 socket 操作的 socket 指令執行緒及焦點策略。當需要新增或修改 socket 指令、CLI 指令、遙測指令、焦點/選擇/開啟/關閉/send-key 行為,或是可能奪取 App 焦點的自動化操作時使用。

2.5萬星標
2126分支
更新於 2026/8/2
SKILL.md
唯讀
名稱
cmux-socket-policy
描述

適用於 cmux CLI 與 socket 操作的 socket 指令執行緒及焦點策略。當需要新增或修改 socket 指令、CLI 指令、遙測指令、焦點/選擇/開啟/關閉/send-key 行為,或是可能奪取 App 焦點的自動化操作時使用。

cmux Socket 策略

執行緒策略

  • 切勿在 report_*ports_kick、狀態/進度更新或記錄檔元資料(metadata)更新等高頻 socket 遙測指令中使用 DispatchQueue.main.sync
  • 針對遙測熱點路徑(hot paths),應在非主執行緒(off-main)解析與驗證參數。
  • 優先在非主執行緒進行去重(dedupe)與合併(coalesce)。
  • 僅在必要時,才透過 DispatchQueue.main.async 排程進行最少限度的 UI/模型狀態異動。
  • 直接操作 AppKit/Ghostty UI 狀態的指令,允許在 main actor 上執行。
  • 若新增 socket 指令,預設應於非主執行緒處理;若有必要在主執行緒執行,必須在程式碼註解中明確說明原因。

焦點策略

  • Socket/CLI 指令絕不可奪取 macOS App 的焦點。
  • 除非指令具有明確的焦點意圖,否則請勿啟用 App 或將視窗移至最前。
  • 僅有具備明確焦點意圖的指令,才可以變更 App 內的焦點/選擇狀態。
  • 明確的焦點意圖指令包括 window.focusworkspace.select/next/previous/lastsurface.focuspane.focus/last、瀏覽器焦點指令以及同等的 v1 焦點指令。
  • 所有非焦點指令在套用資料/模型變更時,均應保留使用者當前的焦點上下文。

詳細參考資料