Cursor エージェントが自分のコンピューターを操作できるようになりました

by Jonas Nelle & Alexi Robbins製品

エージェントの能力は、それが実行される環境の能力に左右されます。自分たちが作成しているソフトウェアを実際に使えなければ、エージェントの能力にはすぐ限界がきてしまいます。

ここ数か月、私たちはこれを社内で解決するために、エージェント専用の仮想マシンを用意し、フル機能の開発環境と、自身の変更をテストして成果物(動画・スクリーンショット・ログ)を生成できる機能を与えました。これにより、みなさんはエージェントの成果をすばやく検証できます。

本日、Cursor cloud agents の新バージョンを、ウェブ、モバイル、デスクトップアプリ、Slack、GitHub など、みなさんが作業しているあらゆる場所から利用できるようにしました。クラウドエージェントは自動であなたのコードベースにオンボーディングして、変更内容をデモする成果物付きの、マージ準備が整った PR を生成します。また、エージェントのリモートデスクトップを操作して、変更後のソフトウェアを自分で使ったり、ブランチをローカルにチェックアウトすることなく直接修正を加えることもできます。

これは、Tab autocomplete からエージェントと同期的に協働するスタイルへと移行して以来、ソフトウェアの作り方に起きた最大の変化です。現在、Cursor でマージされる PR の 30% 超が、クラウドサンドボックス内で自律的に動作するエージェントによって作成されています。

社内でマージされる PR の 30% がクラウドエージェントによって作成されている社内でマージされる PR の 30% がクラウドエージェントによって作成されている

自律性の新たなレベル

ローカルエージェントはコード生成を始めるには便利ですが、すぐに互いに(そしてあなたとも)競合し、マシンのリソースを取り合うようになります。クラウドエージェントは、各エージェントに分離された VM を与えることでこの制約を取り除き、多数を並行して実行できるようにします。

クラウドエージェントは、自身のサンドボックス内でソフトウェアを直接構築・操作できるため、最初の試行結果をそのまま引き渡すのではなく、出力を検証し終えるまで反復できます。以下の動画は、高度なコンピューター操作に関する過去の研究からの概念実証です。

エージェントがブラウザでウェブページを操作したり、スプレッドシートのようなツールを扱ったり、データを解釈して意思決定を行ったり、複雑な UI 環境で問題を解決したりする様子をご覧いただけます。

エージェントが自身の VM 内でデスクトップアプリケーションを操作している様子を記録した動画です。

Cursor でクラウドエージェントを使う

この 1 か月ほど、私たちは社内でクラウドエージェントを使ってきましたが、ソフトウェアの作り方が大きく変わりました。タスクを小さな単位に分割してエージェントを細かく管理するのではなく、より大きく野心的なタスクを任せて、自律的に実行させています。

ここでは、私たちがクラウドエージェントを活用している方法をいくつか紹介します。

新機能の開発

Cursor Marketplace で最近リリースした plugins の開発を進めるために、クラウドエージェントを利用しました。実際に使ったプロンプトの一つがこちらです。

特定の plugin のページに表示される各コンポーネントごとに、そのソースコードへのリンクを含めたいと考えています。skills、commands、rules、subagents については .md ファイルが該当します。hooks については hooks.json です。mcps については .mcp.json または定義されている manifest です。plugin のすべてのコンポーネントをインデックスするときに、対応するソースファイルを記録し、基盤となる github の URL を使ってそのファイルへのリンクを構築してください。これをフロントエンドに渡し、フロントエンドではこのアイコンを使って github へリンクするようにしてください。ローカルでは https://github.com/prisma/cursor-plugin でテストしてください。

エージェントはこの機能を実装したうえで、インポートした Prisma plugin に移動し、GitHub リンクを検証するために各コンポーネントをクリックしている様子を自ら録画しました。

エージェントがボタンをクリックして、正しいソースファイルへリンクされていることを確認している様子を録画しました。

ローカルテストでは、エージェントは一時的にマーケットプレイスページを制御している feature flag をバイパスし、その後 push 前に元に戻しました。また、main に rebase し、マージコンフリクトを解消し、1 つのコミットに squash しました。

脆弱性の再現

私たちは Slack からクラウドエージェントを起動し、「この脆弱性を詳細にトリアージして説明してください」というプロンプトと、それに続けてクリップボードからの情報流出の脆弱性の説明を渡しました。エージェントの実行が完了すると、その Slack スレッドに、実行内容のサマリーで返信してきました。

クラウドエージェントが脆弱性を再現している様子

エージェントは、公開 API を経由してその脆弱性を悪用する HTML ページを構築しました。デモページをローカルでホストするためのバックエンドサーバーを起動し、Cursor のアプリ内ブラウザでそのページを読み込みました。

ビデオアーティファクトには攻撃フロー全体が記録されています。エージェントはテスト用 UUID をシステムクリップボードにコピーし、Cursor のブラウザでデモページを読み込み、UUID を流出させて表示するボタンをクリックしました。また、クリップボード窃取が成功していることを示すスクリーンショットを取得し、デモ用 HTML ファイルをリポジトリにコミットしました。

エージェントが攻撃フローを一通り実行して脆弱性を実演している様子を録画しました。

簡単な修正の対応

私たちはクラウドエージェントに、静的な "Read lints" ラベルを、lint 結果に応じて変化する動的なラベルに置き換えるよう依頼しました。診断が 0 件の場合は "No linter errors"、N 件ある場合は "Found N errors" を表示し、既存の CSS と整合するスタイルで実装するように求めました。

エージェントは Cursor デスクトップアプリ内で 2 つのケースをテストしました。型エラーが複数あるファイルと、エラーがないクリーンなファイルです。ビデオアーティファクトでは、クリーンなファイルについて、展開されたグループに “No linter errors” が表示されていることをエージェントが確認している様子がわかります。

エージェントが、自身が lint ラベルの修正を正しく実装したことを示すために動作を録画しました。

UI テスト

私たちはクラウドエージェントを起動し、cursor.com/docs が正しく動作しているかをチェックさせました。エージェントは 45 分間かけてドキュメントサイト全体をウォークスルーしました。サイドバー、トップナビゲーション、検索、ページのコピー ボタン、フィードバック共有ダイアログ、目次、テーマ切り替えなど、テストしたすべての機能についてサマリーを提供してくれました。

エージェントが Cursor のドキュメントサイトで UI テストを行っている様子を録画しました。

実装の大部分をエージェントが担えるようになったことで、開発者の役割は、方向性を定めて何をリリースするかを判断することに、より重きが置かれるようになってきました。

今後の展望

私たちは、エージェントがPRをマージし、ロールアウトを管理し、本番環境を監視する自動運転コードベースの未来に向けて開発を進めています。開発者がエージェントを使ってdiffを作成する世界から、エージェントがテスト済みの機能をエンドツーエンドでリリースする世界へと移行していきます。

この変化を完全に実現するには、ツール、モデル、そしてインタラクションパターンの改善が必要です。直近の重点領域は、多数のエージェント間で作業を調整し、過去の実行から学習して、経験を重ねるほど効果的になるモデルを構築することです。

cursor.com/onboard から始めて、エージェントが自ら設定を行い、デモを記録する様子をご覧ください。詳しくはドキュメントも参照してください。

分類: 製品

作成者s: Jonas Nelle & Alexi Robbins

Cursor エージェントが自分のコンピューターを操作できるようになりました · Cursor