用途:cmux 用于在可观察、可控制的独立终端中运行进程(开发服务器、测试监听、构建流程等长任务),并打开浏览器界面测试网页、截图、点击元素与读取页面内容。
前提:必须运行在 cmux 内部,可通过环境变量 CMUX_SOCKET_PATH 是否存在来判断;未设置则命令无法工作。cmux 会自动设置 CMUX_WORKSPACE_ID、CMUX_SURFACE_ID、CMUX_SOCKET_PATH,shell 内命令默认作用于正确工作区,无需 --workspace。
主要能力: 终端方面,用 cmux new-surface --type terminal 在当前工作区新建标签(推荐),cmux new-split 或 new-pane 创建分屏,cmux new-workspace 创建完全隔离的工作区;用 cmux send --surface <ref> '命令\n' 发送命令(\n 表示回车),cmux read-screen 读取输出(--lines、--scrollback 控制范围),close-surface/close-workspace 关闭,list-workspaces、list-panels、tree 查看布局,notify 发通知,send-key 发送 ctrl+c、ctrl+d、escape 等按键。 浏览器方面,内置基于 Playwright 的浏览器。用 cmux browser open "URL" 打开并返回 surface 引用;支持 navigate、back、forward、reload、url;screenshot --out 截图、snapshot(--compact/--interactive)获取 DOM 树;支持 click、type、fill、check、uncheck、select、press、scroll、hover、focus;get url/title/text/html/count/value/attr 读取内容;wait 等待选择器、文本、URL 或加载状态;console 与 errors 查看日志和 JS 错误;eval 执行 JS,addscript/addstyle 注入脚本样式。
使用方式要点:终端操作优先用 new-surface 而非新工作区;浏览器子命令必须传 --surface <ref>;等待输出需循环轮询 read-screen,无“等待输出”命令;surface 引用是临时的,需从命令输出中捕获;完成后应关闭 surface 清理。
限制:浏览器选择器仅支持标准 CSS,text= 与 :has-text() 会抛 JS 异常,需改用 snapshot 查找或用 eval 文本匹配;视觉验证优先用 screenshot --out。
适用场景:启动开发服务器并轮询就绪、运行测试并读取结果、多进程监控、分屏查看,以及自动化点击流程与页面验证。