🤖

Cursor の@シンボルの使い方のメモ

2024/08/10に公開

はじめに

このポストは Cursor エディターの @ Symbols のドキュメントの内容を個人用に確認するために作成したメモです。

@ シンボルによりプロンプトにコンテキストを与える

Cursor の入力インターフェース上で @ を入力するとサジェストが表示される。

  • Files
  • Folders
  • Code
  • Docs
  • Git
  • Codebase
  • Web
  • Chat
  • Definitions

Files

ファイルを参照させる。
サイズが大きいファイルは自動的に複数の部分(チャンク)に分割される。
分割されたチャンクは、ユーザーが入力したプロンプトの内容に応じて、最も関連性が高い部分が優先的に扱われるようになる。
ここでのチャンクは「何行目から何行目まで」という形で表される。

Cmd K Chunking Strategy

ファイルのコンテンツ長に応じて参照のやり方が異なる。

参照の方法は3種類あり、そこにコンテンツ長に応じて自動的に参照の方法を決定する auto が加わる。

  • full file
  • outline
  • chunks

full file

コンテキストとして、ファイルの全てのコンテンツを利用する。

outline

Cursor によりファイルのコンテンツの概要が生成され、それがコンテキストとして使われる。

chunks

Cursor によりファイルがいくつかの小さなチャンクに分割されてから、最も関連性が高いチャンクがコンテキストとして扱われる。

ドラッグアンドドロップによるファイルの指定

Cmd K などで表示した入力インターフェースには、ドラッグアンドドロップで参照させたいファイルを指定することが出来る。

Folders

@folders により、フォルダー全体をコンテキストとして与えることが出来る。
特に Long Context Chat (執筆時点では Beta)機能との組み合わせると便利。

執筆時点では @folders は Chat でのみ使うことが出来る。

Code

コードの特定のセクション(スニペット)をコンテキストとして参照させることが出来る。

@files の chunks と似ている。

エディター上で範囲選択をした後 Add to Chat あるいは Add to Edit のショートカットで、選択箇所をコンテキストとして指定することが出来る。

Docs

Cursor にはいくつかのドキュメントがインデックスされている。
インデックスされたドキュメントはコンテキストとして利用することが出来る。

ユーザーは任意のドキュメントをインデックスし、コンテキストとして利用することが出来る。
ドキュメントの追加は @code から、あるいは Cursor Settings > Docs > Add new doc から行うことが出来る。

ドキュメントの追加

@docsのドキュメントの URLをカスタムドキュメントに追加させる。

Git

git commit や diff, PR などをコンテキストとして与えることが出来る。

@Commit (Diff of Working State) では現在のブランチ上で発生している diff をコンテキストに与えることが出来る。diff の内容からコミットメッセージを生成させるなどする。
@PR (Diff with Main Branch) の動作は確認出来ていない。

Codebase

作業中のプロジェクトにあるソースコード全体(コードベース)から、コンテキストに使用するために最も重要なコードを検出する。
検出のために、以下のステップを経る。

  • Gathering コードベース全体をスキャンし、重要なファイルやコードの断片を探す。
  • Renanking 収集したコンテキスト(コードの断片)を、クエリ(質問や要求)との関連性に基づいて並べ替える。
  • Reasoning 収集したコンテキストをどのように使うか、計画を立てて考える。
  • Generating 最終的な応答を生成する。

Web

@web シンボルを使うとユーザーが入力したプロンプトとコンテキストから Web 検索用の文字列を構築する。
構築した文字列を使用し Web 検索を実行し、検索結果をコンテキストに追加する。

Chat

Cursor Chat 上でのチャットのやり取りを Cmd K 上でコンテキストとして利用出来るようにする。

Definitions

(具体的な仕様は)近くにある定義(変数・関数・クラスなど)を検出し、コンテキストとして利用出来るようにする。

@ シンボル入力時のサジェストには表示されないが @[URL] の形式で URL を入力することで、Cursor の応答前に URL を閲覧させることが出来る。

Discussion