Memories は、会話をまたいでコンテキストを共有・保持するためのシステムです。
Windsurf には、これを実現するための仕組みが 2 つあります。Cascade によって自動的に生成される Memories と、ユーザーがローカルおよびグローバルの両レベルで手動で定義するルールです。
メモリとルールは、Cascade の右上にあるスライダーメニュー内の Customizations アイコン、または右下隅の「Windsurf - Settings」からいつでもアクセスして設定できます。既存のメモリを編集するには、対象のメモリを開いてから Edit ボタンをクリックします。
会話中、Cascade は有用だと判断したコンテキストに出会うと、自動的にメモリを生成して保存できます。
また、いつでも Cascade にメモリの作成を依頼できます。Cascade に「…のメモリを作成して」と指示してください。
Cascade が自動生成したメモリは、作成されたワークスペースに紐づき、関連性があると判断したときに Cascade が参照します。あるワークスペースで生成されたメモリは、別のワークスペースでは利用できません。
自動生成されたメモリの作成と利用ではクレジットは消費されません
ユーザーは、Cascade が従う独自のルールを明示的に定義できます。
ルールはグローバルレベルまたはワークスペースレベルで定義できます。
global_rules.md - すべてのワークスペースに適用されるルール
.windsurf/rules - グロブや自然言語の記述に関連付けられたルールを含む、ワークスペースレベルのディレクトリ
Windsurf は複数の場所からルールを自動検出し、柔軟に整理します:
- 現在のワークスペースとサブディレクトリ: 現在のワークスペースおよびそのサブディレクトリ内のすべての
.windsurf/rules ディレクトリ
- Git リポジトリ構造: Git リポジトリの場合、Windsurf は親ディレクトリ内のルールを見つけるために Git のルートディレクトリまでさかのぼって検索します
- 複数ワークスペースのサポート: 同一ワークスペースで複数フォルダを開いている場合、ルールは重複が排除され、最短の相対パスで表示されます
ルールは次のいずれの場所にも保存できます:
- 現在のワークスペースディレクトリ内の
.windsurf/rules
- ワークスペース内の任意のサブディレクトリにある
.windsurf/rules
- 親ディレクトリ(git リポジトリでは git ルートまで)にある
.windsurf/rules
新しいルールを作成すると、git ルートではなく、現在のワークスペースの .windsurf/rules ディレクトリに保存されます。
Rules を使い始めるには、Cascade の右上のスライダーメニューで Customizations アイコンをクリックし、Rules パネルに移動します。ここで、+ Global または + Workspace ボタンをクリックして、グローバルまたはワークスペースレベルで新しいルールを作成できます。
ルールファイルは各 12,000 文字までに制限されています。
ルール単位で、Cascade に対してルールをどのように有効化するかを定義できます。
モードは次の4種類です:
- Manual: Cascade の入力ボックスで
@mention を使って手動で有効化します
- Always On: 常に適用されます
- Model Decision: ユーザーが定義したルールの自然言語での説明に基づき、AI モデルが適用有無を判断します
- Glob: ユーザーが定義した glob パターン(例: .js、src/**/.ts)に一致するファイルすべてに適用されます
Cascade にルールを的確に遵守させるため、次のベストプラクティスに従ってください。
- ルールはシンプル・簡潔・具体的に保ちましょう。長すぎたり曖昧だと、Cascade が混乱するおそれがあります。
- 一般的なルール(例: “write good code”)を追加する必要はありません。これらはすでに Cascade の学習データに組み込まれています。
- ルールは箇条書き、番号付きリスト、Markdown を用いて記述しましょう。長文の段落よりも Cascade が理解・遵守しやすくなります。例えば:
# コーディングガイドライン
- このプロジェクトのプログラミング言語はPythonです
- 可能な限り早期リターンを使用してください
- 新しい関数やクラスを作成する際は必ずドキュメントを追加してください
- XML タグは、類似するルールを伝え、まとめて整理するための効果的な手段になり得ます。例えば:
<coding_guidelines>
- 私のプロジェクトのプログラミング言語はPythonです
- 可能な限りearly returnを使用してください
- 新しい関数やクラスを作成する際は必ずドキュメントを追加してください
</coding_guidelines>