MemoryLake
すべての記事に戻る
Tutorial2026年9月7日·12 分で読了

直前の会話からContinueにルールを作成させる方法(2026年版ガイド)

今日、あなたがコーディングエージェントに伝える最も価値のある言葉は、プロンプトではなく「修正」です。「いや、照合にバッチエンドポイントは使わない。タイムアウトするから」「認証トークンはレガシーサービスから取得する。このファイルにスコープを追加しないで」。このような発言こそが、暗黙の制約が明示的なものへと変わる瞬間です。そして同時に、タスクを早く終わらせたいために、最も書き留められにくい瞬間でもあります。

Continueには、まさにこの問題を解決するための機能があります。ドキュメントには次のように1行で説明されています。「Agentモードの際、有効になっていれば、create_rule_blockツールを使用してエージェントにルールを作成するよう指示できます。」そして続けて、「例えば、『これに関するルールを作成して』と言うだけで、会話に基づいて.continue/rulesにルールが作成されます」とあります。

わずか数語で、修正内容がファイルになります。これはこのカテゴリーにおいて非常に優れた設計の機能の一つですが、ほとんど語られていません。

しかし、それは仕事の半分に過ぎません。このガイドでは、残りの半分に大半の時間を割きます。ルールを書くのは簡単です。しかし、適切なタイミングでそれを呼び出すのは、3つの異なる挙動を持つ別のメカニズムであり、選択を誤ると、.continue/rulesフォルダは「技術的には存在するが、機能的には見えない」ファイルの山になってしまいます。

なぜ修正の瞬間だけが唯一の絶好の機会なのか

指示ファイルは、エージェントが何を必要とするかを誰かが想像しながら、事前に作成されます。これは合理的なアプローチであり、ビルドコマンド、スタイル、レビュー手順といった安定した要素を捉えることができます。しかし、それ以外のすべてを体系的に見落としてしまいます。なぜなら、エージェントが実際に何につまずくかは、実際につまずくまで分からないからです。

Continueはルールの目的を明確にしています。ルールは「Agentモード、Chat、およびEditリクエストに対して、モデルにシステムメッセージの指示を提供」し、「システムメッセージを形成するために、ルールはツールバーに表示される順序で改行で結合」されます。ルールとは、リクエストごとに再送信されるプロンプトレベルの設定です。この位置づけは正確であり、想像だけでルールを書くと内容が薄くなってしまう理由を説明しています。システムメッセージの内容を推測しているに過ぎないからです。

一方、修正は異なります。優れたルールに必要なものがすべて揃った状態で届きます。間違っていた具体的な挙動、正しい挙動、そして(イライラしているときに口に出しがちな)その「理由」です。「照合にバッチエンドポイントを使用しないでください。1万行を超えるとタイムアウトするためです」。この最後の節こそが、将来の意思決定においてルールを生き残らせる要素です。単なる禁止事項は、最初に不都合が生じた時点で無視されてしまいます。

問題は、人々がこれを知らないことではありません。書き留めるという作業が「2つ目のタスク」になってしまい、最もその気力がない瞬間に実行しなければならないことです。これこそが、ツール呼び出し(tool call)が存在する理由です。

代わりに試みられがちなこと

セッションごとに制約を再入力する。 これがデフォルトであり、コードが正しく出力されるという意味では機能します。しかし、その代償として、制約の半減期はあなたの記憶力と同じになり、チームの他のメンバーからは見えなくなります。この問題の全体像については、AIへのコンテキストの再説明をやめる方法で解説しています。

常にオンになっている1つの巨大なルールファイル。 学んだことすべてを alwaysApply: true に設定した単一のルールに詰め込みます。常に存在するという点では失敗しませんが、それが問題です。数ヶ月も経つと、モデルはリクエストごとに、タスクとは無関係なものも含めて、蓄積された数千語の修正を受け取ることになります。重要なルールとそうでないルールが競合してしまうのです。モデルに提示する情報を少なく保つ方が、通常はより良いトレードオフになります。これについては、エージェントの記憶と情報を少なく保つことで議論しました。

READMEや設計書に書き込む。 直感としては正しいですが、器が違います。Continueは.continue/rulesからルールを読み込みます。READMEは、何らかの方法で組み込まれない限り、システムメッセージには含まれません。知識は人間向けに保存されますが、エージェントには伝わりません。

会話を信頼する。 修正はチャット内にあるため、モデルはそれを把握しているはずです。確かに、そのセッション内では把握しています。しかし、Continueのルールが存在するのは、そこが境界線だからです。指示はリクエストごとに再提供されるものであり、チャットは保存場所ではありません。その理由については、なぜエージェントは指示ファイルを無視するのかで詳しく説明しています。

スキル(Skills)に頼る。 スキルは手順をパッケージ化したものです。修正は手順ではなく、コードベースに関する「事実」であり、この違いは思った以上に重要です。なぜエージェントのスキルは記憶ではないのかを参照してください。

解決策:修正の瞬間にキャプチャし、呼び出し方法を選択する

Step 1: ルール作成を有効にし、修正と同時に実行する

create_rule_blockはエージェントが呼び出すツールであり、Continueのドキュメントには「有効な場合」に動作すると記載されています。そのため、これに頼る前に、Agentモードのツールリストで利用可能であることを確認してください。また、Continueには手動でルールを作成するための「Add Rules」ボタンも用意されており、会話からではなくゼロからルールを書きたい場合のフォールバックとして機能します。

効果的な利用パターンは、修正とキャプチャをワンアクションで行うことです。「いや、ここではストリーミングパーサーを使って」と言ってそのまま進めるのではなく、「いや、ここではストリーミングパーサーを使って。バッチエンドポイントは1万行を超えるとタイムアウトするから。これに関するルールを作成して」と言います。エージェントは直前の会話から派生したルールを.continue/rulesに書き込みます。これには、指示だけでなくその理由も含まれます。

生成されたファイルについて確認すべき点が2つあります。これらはステップ2のすべてを決定づけるものです。Continueのドキュメントによると、ルールは「適切なYAMLフロントマターを持つ.mdファイルである必要があり」、フォルダは.continue/rules/でなければなりません(トラブルシューティングセクションで特に指摘されているタイポである.continue/rule/ではありません)。次に、エージェントが書き込んだフロントマターを確認します。エージェントはあなたに代わってglobsdescriptionalwaysApplyを選択していますが、その選択はあくまで推測に過ぎません。

この機能を提供しているのはContinueだけではありません。Cursorにも同様の処理を行う/create-ruleコマンドがあります。Continueがより明確にドキュメント化しているのは「取得(retrieval)」側であり、ここに興味深い決定要素があります。

Step 2: 取得動作を意図的に選択する

Continueの3つのフロントマターフィールドは相互に作用し、3つの異なる挙動を生み出します。ドキュメントではそれらが詳しく説明されています。

alwaysApply: true の場合、ルールは「常に含まれます」。これは、触っているファイルに関係なく適用される制約にのみ使用してください。照合エンドポイントに関する修正は、これには該当しません。

alwaysApply: false の場合、ルールは「globsが存在し、かつファイルコンテキストに一致する場合、またはエージェントがその説明(description)に基づいてルールをコンテキストに引き込むと判断した場合に含まれます」。これは、キャプチャされたほとんどの修正が求めるモードであり、2つの独立したトリガーを持っています。制約がどのファイルに適用されるか分かっている場合は、globsを設定します。Continue의ドキュメントでは、globは「ファイルがコンテキストとして提供されたとき」に一致すると説明されています。制約がパスではなく概念に関するものである場合は、descriptionを活用し、要約ではなく「取得クエリ」として記述します。Continueは、「alwaysApplyがfalseの場合、エージェントはこの説明を読み、ルールをコンテキストに引き込むべきかどうかを判断することがある」と明記しています。「照合の制約」という説明では、夜間の決済ジョブを作業しているときには起動しません。「バルクエンドポイント、照合、決済、および大量の行数をページングするものに対する制約」と記述されていれば、起動します。

alwaysApplyを完全に省略すると、デフォルトの挙動になります。「globsが存在しない場合、またはglobsが存在して一致する場合に含まれます」。つまり、globsもalwaysApplyもないルールは常にオンになります。これは合理的なデフォルトであると同時に、意図しない事故の原因にもなります。エージェントがフロントマターのないファイルを生成した場合、意図せず常にオンのルールを作成してしまったことになります。

知っておく価値のある順序の詳細として、「ルールファイルは辞書順(lexicographical order)でロードされるため、名前に数字のプレフィックスを付けて適用順序を制御できる」という点があります。例えば、01-general.md02-frontend.md のような名前を使用します。ルールは1つのシステムメッセージに結合されるため、実際には順序が優先順位になります。キャプチャされた修正は、通常、一般的な規約の後に適用されるよう後半に配置すべきです。そうすることで、さらに下にある一般的なルールと矛盾することなく、「洗練されたルール」として解釈されます。

Step 3: フォルダが一杯になる前に、ルールと事実を分離する

数週間キャプチャを続けたら、.continue/rulesフォルダを読み返し、各ファイルについて「これは規約(convention)か、それとも事実(fact)か?」と自問してみてください。

規約とは、ここでの作業方法(命名規則、エラーハンドリングの形式、使用するテストランナーなど)を定義するものです。これは安定しており、広く適用されるため、まさにシステムメッセージが果たすべき役割です。これは残しておきましょう。安定しているものの膨大なドメイン知識は3つ目のケースであり、プロンプトではなくストアに保存すべきです。これについては、Claudeに永続的なドメイン知識を与える方法を参照してください。

事実とは、何が起きたかを説明するものです。「メモリ回帰の後、7月にストリーミングパーサーの使用をやめた」「ベンダーのサンドボックスにはフィクスチャサーバーが必要なため、決済テストでは異なるコマンドを使用する」「不安定な統合テストに対して2つの修正を試みたが、どちらも同じ理由で失敗した」。これらは規約にはない性質を持っています。際限なく蓄積され、編集されるのではなく上書き(代替)され、そのほとんどは四半期に数回程度のタスクにしか関連しません。

ルールとして保存された事実は、気づかないうちに陳腐化します。あるルールが「8月に覆された決定」を説明していることを教えてくれるものは何もありません。覆された決定がシステムメッセージの指示として提示されることは、ルールが全くないことよりも悪影響を及ぼします。これは、レビュー履歴システムを乖離させるのと同じ失敗です。これについては、フィードバックから改善するエージェントで考察しました。

Continueのドキュメント化されたメカニズム(これら3つの取得モードを持つルール)は、規約をうまくカバーしています。しかし、チームが確立した事柄の、蓄積され上書き可能な記録を保持する「ストア」に相当するものは、ドキュメントには存在しません。これはルールシステムの適用範囲(スコープ)に関する話であり、批判ではありません。システムメッセージは、どのようなツールであっても、そのタスクには適していない形状だからです。

MemoryLakeでの設定方法

MemoryLakeは、事実の半分を保存する場所です。リポジトリの外部にあるストアであり、確立された決定を保持し、静かな陳腐化の代わりに上書きをサポートし、実行している任意のエージェントからMCPまたはAPI経由で読み取ることができます。

Step 1: APIキーを作成する

キーを生成し、約30秒で最初のリクエストを送信できます。同じキーがContinue、チームメイトのエディタ、およびCIから機能します。

キャプチャされた事実がContinueのルールと混ざらないようにMemoryLakeのAPIキーを作成する
キャプチャされた事実がContinueのルールと混ざらないようにMemoryLakeのAPIキーを作成する

Step 2: 最初の記憶をアップロードする

現在のリトライポリシーの背景にあるインシデント報告書、誰も繰り返したくないデザインレビュー、および先ほど規約ではなく事実として特定したルールファイルなど、プロジェクトの決定事項がすでに含まれているドキュメント、画像、ファイルを投入します。

ルールフォルダよりも長持ちさせたい修正内容をMemoryLakeにアップロードする
ルールフォルダよりも長持ちさせたい修正内容をMemoryLakeにアップロードする

Step 3: AIとエージェントを接続する

Claude、Codex、OpenClaw、およびその他のエージェントにMCPまたはAPI経由でアクセスを許可します。Continueにおいては、確立された事実がシステムメッセージに永続的に常駐するのではなく、関連性があるときにのみ取得されるようになります。

MCPとAPIを介してContinueや他のエージェントをMemoryLakeに接続する
MCPとAPIを介してContinueや他のエージェントをMemoryLakeに接続する

これによって実際に何が変わるか

ルールフォルダが際限なく肥大化するのを防げます。事実の保存先が別に確保されれば、.continue/rulesは実際の規約のサイズに収まります。ほとんどのリポジトリにおいて、これは小さく、読みやすく、プルリクエストでレビュー可能な規模です。

説明(description)が、整理のためではなく「取得」のために書かれるようになります。descriptionの唯一の役割が、エージェントがルールを取り込むべきか判断するのを助けることである場合、書き方が変わり、保持しているルールが必要なときに正しく起動するようになります。

修正がリポジトリの寿命を超えて生き残ります。ルールは1つのチェックアウト内に存在します。しかし、外部でキャプチャされた事実は、隣のサービスで同じ制約が発生したときにも利用可能です。実際、同じ説明を繰り返す状況のほとんどは、そうした別の場所で発生します。

そして、キャプチャの習慣を維持するコストが十分に低くなります。これこそがcreate_rule_blockの真の価値です。何かを書き留めるコストがわずか数語にまで下がります。それが正しく呼び出されるかどうかは別の決定事項であり、今やそれを意図的にコントロールできるようになります。

Continueでキャプチャされたルールのベストプラクティス

常に理由を含める。 「Xを使用しない」は無視されますが、「Yのため、Xを使用しない」は無視されません。

フロントマターを成り行き任せにしない。 エージェントが生成した内容を確認してください。globsalwaysApplyもないファイルは、すべてのリクエストでオンになります。

説明はラベルではなくクエリとして書く。 alwaysApplyがfalseの場合、説明は取得のシグナルになります。実際に手動で入力するような言葉を含めてください。

ルールファイルに番号を付ける。 辞書順のロード順序が実際の優先順位になります。規約は前半に、洗練されたルールは後半に配置します。

Markdownファイルを優先する。 Continueは、ルールが元々YAMLで定義されていたものの、現在はMarkdown形式を推奨していると言及しています。1つの形式に統一することで、フォルダのレビューが容易になります。

月に一度フォルダを読み返す。 規約を削減するためではなく、いつの間にか誤りになってしまった事実を捉えるためです。

結論

create_rule_blockは、ほとんどのツールが個人の規律に委ねている本質的な問題を解決します。制約に気づくことと、それを記録することの間の摩擦を取り除くのです。「これに関するルールを作成して」と言うだけで、修正内容が理由付きのファイルになり、これは手動で書かれたほとんどのルールよりも優れた成果をもたらします。

あなたに残された半分の作業は「取得」であり、Continueはそれを適切に行うための要素を提供しています。パス範囲の制約にはglobs、概念範囲の制約にはdescription、無条件の少数の事項にはalwaysApply、そして優先順位のための辞書順ソートです。特にエージェントが生成したファイルに対しては、これらを意図的に使用してください。なぜなら、「一度も起動しないルール」と「起動し続けるルール」は逆の方向で失敗を招き、どちらも結果としてルールフォルダを形骸化させてしまうからです。

そして、全体を健全に保つための整理を行いましょう。規約はシステムメッセージに属します。事実は、蓄積され修正可能な記録を保持し、重要な部分だけを返せる場所に属します。この境界線を正しく設定することこそが、キャプチャの習慣を「誰も読まないディレクトリ」に終わらせないための鍵となります。

よくある質問

Continueに独自のルールを作成させるために、何かを有効にする必要がありますか?

Continueのドキュメントには、エージェントは「有効な場合、create_rule_blockツールを使用して」ルールを作成すると記載されているため、Agentモードのツールリストでこのツールが利用可能であることを確認してください。利用可能であれば、「これに関するルールを作成して」のようにプロンプトで指示するだけで十分であり、ルールは.continue/rulesに保存されます。

生成されたルールはどこに保存されますか?また、なぜ適用されないのですか?

ルールは、ワークスペースのトップレベルにある.continue/rules/に配置する必要があります。Continueのトラブルシューティングセクションでは、一般的な2つの原因が直接指摘されています。1つはフォルダ名の誤り(.continue/rules/ではなく.continue/rule/になっている)、もう1つはファイルが適切なYAMLフロントマターを持つ.mdファイルになっていないことです。

alwaysApply: false と、それを省略することの違いは何ですか?

これらはデフォルトの挙動が異なります。alwaysApply: false の場合、ルールはglobsが存在して一致するか、またはエージェントが説明に基づいて取り込むと判断した場合に含まれます。alwaysApplyが未定義の場合、ルールはglobsが存在しない場合、またはglobsが存在して一致する場合に含まれます。そのため、どちらのフィールドもないファイルは、実質的に常にオンになります。

ルールファイルの順序は重要ですか?

はい。ルールは1つのシステムメッセージに結合され、ファイルは「辞書順」でロードされます。そのため、Continueは01-general.mdのような数値のプレフィックスを推奨しています。後半のファイルは、前半のファイルの洗練されたルールとして解釈されます。

すべての修正をルールにすべきですか?

いいえ。規約はルールにすべきですが、事実はすべきではありません。規約は安定しており広く適用されるため、システムメッセージに適しています。事実は蓄積され、上書きされるものであり、システムメッセージ内に古い事実が残っていると、かえって誤解を招く原因になります。クリーンアップ時ではなく、その都度分類してください。

キャプチャされたルールを他のツールと共有できますか?

ファイルをコミットすることによってのみ可能であり、それも.continue/rules(Continue固有のパス)を読み取るツールに限られます。エディタに関係なく利用できるようにしたい場合は、リポジトリの外部にあり、MCP経由でアクセスできるストアが必要です。一般的なパターンについては、カスタムMCPサーバーへの記憶の追加を参照してください。