Claude Code 0331 系统报告

第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 PumpdrainRunLoop.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操控用户的浏览器——打开网页、填写表单、抓取信息——这是一个极其强大但也需要极其谨慎的能力。


第十一部分:工程实践与设计哲学

On this page