Appearance
CLI 计算机控制(Computer Use)
计算机控制(Computer Use)让 Claude 能在 CLI 中打开应用、截屏和点击操作,弥补终端无法验证 GUI 程序的不足。通过内置 computer-use MCP 服务器实现,默认关闭。每次会话首次使用需授权,截屏自动降采样不包含终端窗口,按 Esc 随时全局中断。适用于编译验证 Native App、Electron 端到端 UI 测试和修复视觉布局问题。
计算机控制让 Claude 能像你一样打开应用、控制屏幕、在机器上工作。在 CLI 中,Claude 可以编译一个 Swift 应用、启动它、点击所有按钮、截屏查看结果,这一切都在它写代码的同一个对话中完成。
本页介绍 CLI 中的计算机控制功能。关于 macOS 或 Windows 桌面应用中的使用,见桌面版计算机控制。
计算机控制能做什么
它处理需要 GUI 的任务:那些通常需要离开终端手动完成的操作。
- 构建和验证原生应用:让 Claude 构建一个 macOS 菜单栏应用。Claude 会编写 Swift、编译、启动,然后点击每个控件来验证它是否正常工作。
- 端到端 UI 测试:让 Claude 指向一个本地 Electron 应用并说"测试新手引导流程"。Claude 会打开应用、点击完成注册,并在每个步骤截图。不需要配置 Playwright 和测试脚手架。
- 调试视觉和布局问题:告诉 Claude"弹窗在小窗口下被裁剪了"。Claude 会调整窗口大小、重现 bug、截图、修补 CSS 并验证修复效果。Claude 看到的和你一样。
- 驱动纯 GUI 工具:与设计工具、硬件控制面板、iOS 模拟器或没有 CLI/API 的专有应用交互。
何时使用
Claude 有多种与应用交互的方式,计算机控制是最泛用但也最慢的一种,因此 Claude 会优先尝试更精确的工具:
- 如果你有对应服务的 MCP 服务器,优先使用
- 如果是 shell 命令任务,使用 Bash 工具
- 如果是浏览器任务且你配置了 Claude in Chrome,优先使用
- 如果以上都不适用,才会回退到计算机控制
屏幕控制保留给其他方式无法触达的对象:原生应用、模拟器和没有 API 的工具。
启用方法
计算机控制作为内置的 MCP 服务器(名为 computer-use)提供。默认关闭,需手动启用。
启动 Claude Code 后,运行:
bash
/mcp add computer-use或者在 settings.json 中配置(如果有 mcp.json 也可以配置在那里)。
设置完成后,给 Claude 提一个需要 GUI 的任务:
Build the app target, launch it, and click through each tab to make sure nothing crashes. Screenshot any error states you find.
按会话授权应用
启用 computer-use 服务器并不意味着授予 Claude 对机器上所有应用的访问权。在一次会话中,当 Claude 第一次需要控制某个应用时,终端会弹出提示,显示:
- Claude 想控制哪些应用
- 请求的额外权限(如剪贴板访问)
- 还有多少其他应用将在 Claude 工作时被隐藏
选择 Allow for this session 或 Deny。授权仅在当前会话有效。
如果应用拥有较高权限,提示中会显示额外警告:
| 警告提示 | 适用的应用 |
|---|---|
| Equivalent to shell access(等同于 shell 权限) | Terminal、iTerm、VS Code、Warp 等终端和 IDE |
| Can read or write any file(可读写任何文件) | Finder |
| Can change system settings(可更改系统设置) | System Settings |
这些应用没有被封禁,警告是为了让你决定任务是否值得授予该级别的访问权限。
Claude 的控制级别也因应用类别而异:浏览器和交易平台只能查看(view-only);终端和 IDE 只能点击(click-only);其余类别获得完全控制。
Claude 在你屏幕上如何工作
理解执行流程有助于预期 Claude 的行为,并在需要时干预。
每次只允许一个会话控制
激活期间计算机控制会持有全机锁。如果另一个 Claude Code 会话正在控制电脑,新的尝试会失败并提示哪个会话持有了锁。请先结束该会话。
工作期间自动隐藏其他应用
当 Claude 开始控制屏幕时,其他可见应用会被隐藏,确保 Claude 只与授权的应用交互。你的终端窗口保持可见且不会被截图捕捉,因此你可以监视会话,而 Claude 永远看不到自己的输出。当前轮次结束后,被隐藏的应用会自动恢复。
截屏自动降采样
Claude Code 在将每一张截屏发送给模型前会自动降采样。你不需要降低显示分辨率或调整 Retina 等高分屏上的窗口大小。16 英寸 MacBook Pro 原生 Retina 分辨率(3456×2234)截取后会降采样至约 1372×887,保持宽高比。
没有修改目标尺寸的设置。如果降采样后屏幕文本或控件太小 Claude 看不清,请在应用内部放大显示比例,而不是更改你的显示分辨率。
随时一键停止
当 Claude 获取锁时,会弹出 macOS 通知:"Claude is using your computer · press Esc to stop"。 在屏幕任何位置按 Esc 键可立即中止当前操作,或者在终端按 Ctrl+C。无论是哪种方式,Claude 都会释放锁、取消隐藏应用并交回控制权。结束时会弹出第二条通知。
安全机制与信任边界
内置的安全护栏无需配置即可降低风险:
- 逐应用授权:Claude 只能控制当前会话中你已授权的应用
- 敏感应用警告:授权前明确标识哪些应用具有 shell、文件系统或系统设置权限
- 终端免截图:Claude 永远看不到你的终端窗口,防止提示注入通过你的会话回流到模型
- 全局退出键:任意位置按
Esc中止控制,按键事件被消耗,防止提示注入试图关掉对话框 - 全局锁:同时只能有一个会话控制机器
典型工作流示例
1. 验证原生构建结果: 修改 macOS 或 iOS 应用代码后,让 Claude 一步完成编译和验证:
Build the Xcode project, open the app, and click the "Generate" button. Take a screenshot of the output view.
2. 布局问题排查: 前端 CSS 问题:
Start the dev server and open Safari to localhost:3000. Resize the window to 400px wide. Tell me if the mobile navigation menu overlaps the header logo.
3. 纯界面工具联调:
Open the iOS Simulator. Launch my app, navigate to the settings screen, toggle dark mode, and verify the text color changes to white.
常见问题
Q: Claude 说它找不到我要求的按钮,怎么办?
A: 高分屏上降采样可能导致文字模糊。请在目标应用内放大界面比例(如 Cmd++),或者让 Claude 把目标应用的窗口拉大一点。
Q: 为什么按了 Esc 没反应?
A: Esc 键是计算机控制功能的全局退出键。如果在终端里执行,可能需要按 Ctrl+C 才能中止底层的 MCP 服务器进程。
Q: Claude 控制电脑时我还能做其他事吗?
A: 不能并行工作。计算机控制独占键鼠输入,并隐藏了未授权的其他应用。等 Claude 工作完这一轮,它会把控制权和界面交还给你。