remorses/usecomputer

Fast computer automation CLI for AI agents. Control any desktop with screenshots, clicks, typing, scrolling, and more.

usecomputer – AIエージェント向けデスクトップ自動化CLI

何であるか – usecomputer はクロスプラットフォームのコマンドラインツール(およびnpmライブラリ)であり、AIエージェントが実際のコンピュータ画面と対話できるようにします。スクリーンショットの取得、マウスの移動、クリック、ドラッグ、スクロール、テキスト入力、ショートカットキーの押下が可能で、さらにグローバル入力イベントのストリーミングもサポートしています。処理の大部分はネイティブZigバックエンドで行われるため、インストール後はNode.jsランタイムが不要です。

AIにとってなぜ重要か – 現代の「コンピュータ使用エージェント」(Claude、OpenAI、Anthropic、OpenCodeなど)は、知覚-行動ループを確実に閉じる方法が必要です:

  1. 取得:画面(または特定のウィンドウ)をキャプチャ → 画像をビジョンモデルに供給。
  2. 決定:モデルの出力に基づいて何をするかを判断。
  3. 実行:マウスを動かす、クリックする、入力するなど。
  4. 繰り返し。 usecomputer はこのループに完全に対応するCLIコマンドとTypeScript APIを提供し、スクリーンショットのピクセル座標を実際の画面座標に正確に変換する「coord-map」システムも備えています。これにより、よくある「数ピクセルのずれ」問題を解消します。

主な機能

  • スクリーンショット:フルデスクトップまたはウィンドウスコープで取得。自動スケーリング(最大1568px)と、スクリーンショット空間と画面空間のマッピングを記録するcoordMap文字列を提供。
  • マウス:移動、クリック(単一/ダブル)、ドラッグ(直線または2次ベジェ曲線)、スクロール。
  • キーボード:type(オプションの遅延、stdinストリーミング、チャンク化対応)と、単一キーまたはキーチョードショートカット用のpress。
  • 観察:すべてのマウス/キーボードイベントをServer-Sent Events(SSE)でストリーミング。ユーザーの操作を監視するエージェントに有用。
  • ネイティブZigバックエンド:npm install -g usecomputer後はNode.jsランタイム不要。
  • クロスプラットフォーム:macOS、Linux(X11/XWayland)、Windows(インタラクティブデスクトップのみ)で動作。現在、グローバルイベントobserveコマンドはmacOS専用。
  • エージェントフレンドリーなグラフィックス:AGENT_GRAPHICS=kittyに設定すると、スクリーンショットがKitty Graphics Protocol経由でインラインで出力され、OpenCodeのようなエージェントが別途ファイルを読み込まずに画像を受け取れる。
  • ライブラリAPI:npmパッケージはCLIのネイティブ関数(screenshot、click、mouseMove、type、press、observeなど)をミラーリングし、強力なエディタサポートを提供するTypeScript型を含む。

一般的なワークフロー

# 1️⃣ 画面(またはウィンドウ)をキャプチャし、coord-mapを取得
usecomputer screenshot ./screen.png --json
# → {"path":"./screen.png","coordMap":"0,0,1600,900,1568,882",…}

# 2️⃣ PNGをビジョンモデル(例:Claude、OpenAIなど)に供給
#    モデルは行動を返す(例:(400,220)でクリック)

# 3️⃣ 同じcoord-mapを使って行動を実行
usecomputer click -x 400 -y 220 --coord-map "0,0,1600,900,1568,882"

同じパターンはドラッグ、スクロール、入力にも適用可能。

インストール

npm install -g usecomputer   # CLIとTypeScriptライブラリをインストール

macOSではターミナルにアクセシビリティおよび入力監視の権限を付与する必要があります。LinuxではX11のDISPLAYが設定されていることを確認してください。Windowsではインタラクティブデスクトップセッション内で実行してください。

コードから使う場合(TypeScript例)

import * as usecomputer from 'usecomputer'

const shot = await usecomputer.screenshot({ path: './tmp.png', display: null, window: null, region: null, annotate: null })
const map = usecomputer.parseCoordMapOrThrow(shot.coordMap)
const point = usecomputer.mapPointFromCoordMap({ point: { x: 400, y: 220 }, coordMap: map })
await usecomputer.click({ point, button: 'left', count: 1 })

すべての関数はオプションのネイティブフィールドにnullを許容し、CLIの引数構造を正確に再現しています。

誰が使うべきか

  • デスクトップを制御する必要があるAIエージェントを開発している開発者(コンピュータ使用ツール、自律アシスタント、RPA風のボット)。
  • GUI上で動作するビジョン・ランゲージモデルを実験している研究者。
  • 重いUI自動化フレームワークを使わず、軽量でスクリプト可能な方法でmacOS/Linux/Windowsを自動化したい人。

関連エコシステム

  • npx skills add remorses/usecomputer はOpenCodeのようなエージェントにスキルを登録し、スクリーンショット→行動→スクリーンショットのループを教える。
  • kitty-graphics-agentプラグインは自動的にAGENT_GRAPHICS=kittyを設定し、スクリーンショットをLLMのコンテキストウィンドウに直接表示可能にする。
  • READMEにはOpenAI、Anthropic、OpenCode向けの例統合が提供されており、モデルのツール呼び出しをusecomputerアクションに変換する方法を示している。

上記のすべての詳細はリポジトリのREADMEから直接取得したものであり、追加機能は推測されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト