Background Agentsを使用すると、リモート環境でコードを編集・実行する非同期エージェントを起動できます。ステータスを確認したり、フォローアップを送信したり、いつでも制御を引き継ぐことができます。

使用方法

  1. を押してバックグラウンドエージェント制御パネルを開き、エージェントの一覧表示、新しいエージェントの生成、ステータスの確認を行います。
  2. プロンプトを送信した後、リストからエージェントを選択してステータスを確認し、マシンに入ります。

バックグラウンドエージェントには数日程度のデータ保持が必要です。

フィードバック

フィードバックはDiscord #background-agent チャンネルまたはbackground-agent-feedback@cursor.comまでお送りください。バグ、機能リクエスト、アイデアをお待ちしています。

セットアップ

バックグラウンドエージェントは、デフォルトでubuntuベースの分離されたマシンで実行されます。エージェントはインターネットアクセスを持ち、パッケージをインストールできます。

GitHub接続

バックグラウンドエージェントはGitHubからあなたのリポジトリをクローンし、別のブランチで作業を行い、簡単な引き継ぎのためにあなたのリポジトリにプッシュします。 あなたのリポジトリ(および依存するリポジトリやサブモジュール)への読み書き権限を付与してください。将来的には他のプロバイダー(GitLab、BitBucketなど)もサポート予定です。

ベース環境のセットアップ

高度なケースでは、環境を自分でセットアップしてください。リモートマシンに接続されたIDE インスタンスを取得します。マシンをセットアップし、ツールやパッケージをインストールしてから、スナップショットを取得します。ランタイム設定を構成します:
  • インストールコマンドは、エージェントが開始する前に実行され、ランタイム依存関係をインストールします。これはnpm installbazel buildの実行を意味する場合があります。
  • ターミナルは、エージェントが作業している間にバックグラウンドプロセスを実行します - Webサーバーの起動やprotobufファイルのコンパイルなど。
最も高度なケースでは、マシンセットアップにDockerfileを使用します。dockerfileを使用すると、システムレベルの依存関係をセットアップできます:特定のコンパイラーバージョンやデバッガーをインストールしたり、ベースOSイメージを切り替えたりできます。プロジェクト全体をCOPYしないでください - 私たちがワークスペースを管理し、正しいコミットをチェックアウトします。依存関係のインストールはインストールスクリプトで処理してください。 開発環境に必要な秘密情報を入力してください - これらは私たちのデータベースに暗号化された状態で保存され(KMSを使用)、バックグラウンドエージェント環境で提供されます。 マシンセットアップは.cursor/environment.jsonに保存され、これはあなたのリポジトリにコミットする(推奨)か、プライベートに保存することができます。セットアップフローがenvironment.jsonの作成をガイドします。

メンテナンスコマンド

新しいマシンをセットアップする際、ベース環境から開始し、environment.jsoninstallコマンドを実行します。このコマンドは、開発者がブランチを切り替える際に実行するものです - 新しい依存関係をインストールします。 ほとんどの人にとって、installコマンドはnpm installまたはbazel buildです。 高速なマシン起動を確保するため、installコマンドの実行後にディスク状態をキャッシュします。複数回実行できるように設計してください。installコマンドからはディスク状態のみが永続化されます - ここで開始されたプロセスは、エージェントが開始する際には生きていません。

起動コマンド

installを実行した後、マシンが起動し、startコマンドを実行してからterminalsを開始します。これにより、エージェントが実行される際に生きているべきプロセスが開始されます。 startコマンドはしばしばスキップできます。開発環境がdockerに依存している場合に使用してください - startコマンドにsudo service docker startを入れます。 terminalsはアプリケーションコード用です。これらのターミナルは、あなたとエージェントが利用できるtmuxセッションで実行されます。例えば、多くのWebサイトリポジトリではnpm run watchをターミナルとして設定します。

environment.json仕様

environment.jsonファイルは次のようになります:
{
  "snapshot": "POPULATED_FROM_SETTINGS",
  "install": "npm install",
  "terminals": [
    {
      "name": "Run Next.js",
      "command": "npm run dev"
    }
  ]
}
正式には、仕様はこちらで定義されています

モデル

バックグラウンドエージェントでは、Max Mode対応モデルのみが利用可能です。

料金

Background Agent の料金について詳しく学ぶ。

セキュリティ

Background Agentsはプライバシーモードで利用できます。私たちはあなたのコードで学習することはなく、エージェントの実行のためにのみコードを保持します。プライバシーモードについて詳しく学ぶ 知っておくべきこと:
  1. 編集したいリポジトリに対して、私たちのGitHubアプリに読み書き権限を付与してください。これを使用してリポジトリをクローンし、変更を加えます。
  2. あなたのコードは、分離されたVM内の私たちのAWSインフラストラクチャ内で実行され、エージェントがアクセス可能な間はVMディスクに保存されます。
  3. エージェントはインターネットアクセスを持ちます。
  4. エージェントはすべてのターミナルコマンドを自動実行し、テストを反復できます。これは、すべてのコマンドにユーザーの承認を必要とするフォアグラウンドエージェントとは異なります。自動実行はデータ流出リスクを導入します:攻撃者がプロンプトインジェクション攻撃を実行し、エージェントを騙してコードを悪意のあるウェブサイトにアップロードさせる可能性があります。バックグラウンドエージェントのプロンプトインジェクションのリスクに関するOpenAIの説明を参照してください。
  5. プライバシーモードが無効になっている場合、製品改善のためにプロンプトと開発環境を収集します。
  6. バックグラウンドエージェントを開始する際にプライバシーモードを無効にし、エージェントの実行中に有効にした場合、エージェントは完了するまでプライバシーモードが無効のまま継続します。