第26章 · Computer Use与浏览器集成
第26章 · Computer Use与浏览器集成
26.1 Computer Use MCP系统
utils/computerUse/(15文件/2,161行)将鼠标、键盘和截屏操作封装为MCP工具。
底层实现分为两个原生模块:
- Rust/enigo (
@ant/computer-use-input) — 鼠标移动、点击、拖拽;键盘输入;前台应用检测 - Swift (
@ant/computer-use-swift) — SCContentFilter截屏(隐私感知);NSWorkspace应用列表;TCC权限管理
关键设计决策:
const SCREENSHOT_JPEG_QUALITY = 0.75截屏使用75%质量的JPEG压缩,在图像质量和传输大小之间取得平衡。
安全特性:
- 独占访问互斥锁(
computerUseLock.ts):防止多个工具并发控制鼠标/键盘 - ESC热键(
escHotkey.ts):通过CGEventTap实现紧急中断——用户按ESC即可立即停止Computer Use操作 - 终端代理(
getTerminalBundleId()):豁免终端窗口的截屏捕获 - 隐私截屏:Swift的ContentFilter支持排除敏感窗口
剪贴板操作通过pbcopy/pbpaste实现(而非Electron的clipboard模块),因为CLI环境没有Electron:
async function readClipboardViaPbpaste(): Promise<string> {
const { stdout, code } = await execFileNoThrow('pbpaste', [], {
useCwd: false,
})
if (code !== 0) throw new Error(`pbpaste exited with code ${code}`)
return stdout
}CFRunLoop Pump(drainRunLoop.ts)是macOS特有的需求——Swift的某些API(如截屏)需要主线程的RunLoop被驱动。这在CLI环境中不是自动的,需要手动Pump。
26.2 Chrome浏览器集成
utils/claudeInChrome/(7文件/2,337行)实现了与Chrome浏览器的深度集成。
Native Host Messaging协议:
const CHROME_EXTENSION_RECONNECT_URL = 'https://clau.de/chrome/reconnect'
const NATIVE_HOST_IDENTIFIER = 'com.anthropic.claude_code_browser_extension'启用逻辑:
export function shouldEnableClaudeInChrome(chromeFlag?: boolean): boolean {
if (getIsNonInteractiveSession() && chromeFlag !== true) {
return false // 非交互式会话默认禁用
}
if (isEnvTruthy(process.env.CLAUDE_CODE_ENABLE_CFC)) {
return true // 环境变量强制启用
}
return getFeatureValue_CACHED_MAY_BE_STALE('claude_in_chrome')
}架构:
- 通过Chrome的Native Host Messaging API建立CLI与浏览器扩展的通信
- 支持macOS和Windows平台
- 多浏览器支持(Chrome、Edge、Brave等)
- 便携模式用于沙箱环境
Cloud Bridge — 除了本地Native Messaging外,还有一条Cloud路径通过wss://bridge.claudeusercontent.com进行WebSocket通信,这允许远程Bridge会话控制浏览器。
这意味着KAIROS自主Agent理论上可以通过Cloud Bridge操控用户的浏览器——打开网页、填写表单、抓取信息——这是一个极其强大但也需要极其谨慎的能力。