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.focus、workspace.select/next/previous/last、surface.focus、pane.focus/last、瀏覽器焦點指令以及同等的 v1 焦點指令。 - 所有非焦點指令在套用資料/模型變更時,均應保留使用者當前的焦點上下文。
詳細參考資料
- 在新增指令、變更指令執行上下文,或評估是否允許變更焦點時,請參閱 references/threading-and-focus.md。






