Qoder CLI の静的メモリ(AGENTS.md)および自動メモリメカニズム、ファイルの場所と管理方法
Qoder CLI はセッションごとにコンテキストを再構築します。セッションを跨いで保持する必要のある知識は、主に以下の2種類のメモリから取得されます。
静的メモリは、ユーザーまたはチームが明示的に作成・管理します。
他のファイル名を使用する必要がある場合は、
メモリの起動または更新時、Qoder CLI のプロジェクトメモリは上位ディレクトリへ向かって検索を行い、各階層のプロジェクトルールディレクトリを確認します。
ルールは
ルールには2つのスコープがあります。
プロジェクトレベルのルールはワークスペースの任意の階層(ネストされたサブディレクトリを含む)に配置でき、作業ディレクトリから上位へ検索することで検出されます。ユーザーレベルのルールはユーザー構成ディレクトリから読み込まれ、すべてのプロジェクトに適用されます。
Qoder CLI は4種類のルールの有効化方法をサポートしています。読み込み関連のフロントマターが構成されていない場合、ルールはデフォルトで常に有効になります。
常に有効なルールはフロントマターを記述しなくても構いませんが、明示的に設定することもできます。
手動導入のルールはコンテキストに自動注入されません。
モデル判断ルールには、ルール本文を読み込む必要があるかどうかを判断するために
特定のファイルに対して有効にする場合は、
また、
ルールが読み込まれた後、Qoder CLI は現在のセッションの残り時間中、そのファイルを継続的に監視します。ルールの編集(読み込み方法やプロジェクトレベル/ユーザーレベルを問わず)は次のターンで検知されるため、ルールを即座に調整し、Qoder CLI を再起動せずに新しいバージョンに従わせることができます。パスに基づいて有効になるルールも、アクセスされたファイルに初めてマッチした時点で監視対象に組み込まれます。
インポートのルール:
自動メモリを有効にすると、Qoder CLI は会話の中でセッションを跨いで再利用する価値のある情報をローカルマシンの Markdown ファイルとして保存します。すべての会話を保存するのではなく、内容に基づいて記憶する価値があるかどうかを判断します。
自動メモリは4種類の内容をサポートします。
自動メモリはローカルファイルであり、コードをコミットしても他のマシンに自動同期されません。また、内容が古くなる可能性もあります。メモリがファイル、関数、構成、または外部状態に関するものである場合、Qoder CLI は現在の事実を確認してからそれに基づいて行動する必要があります。
自動メモリはインタラクティブセッションでのみ実行されます。以下のいずれかの方法で有効にし、Qoder CLI を再起動してください。
構成ファイルの場所と適用順序については、構成ファイルと適用順序 を参照してください。
一時的またはデプロイメント単位のオーバーライドには、環境変数も使用できます。
明示的に設定した
プロジェクトレベルの自動メモリは、現在のプロジェクトに対応する Qoder 構成ディレクトリに保存されます。
ユーザーレベルの自動メモリを有効にすると、以下も使用されます。
各自動メモリディレクトリには、1つの
TUI で以下を入力します。
自然言語で直接指示できます。
または:
内容がチームのルールやプロジェクトの指示に近い場合は、
メモリは書き込み時のコンテキストを反映しています。現在のコード、構成、外部システムの状態を扱う際は、現在のファイルと現在のシステムを基準とすべきです。メモリが古くなっていることに気づいた場合は、対応するメモリを更新または削除してください。
- 静的メモリ:ユーザーまたはチームが管理する永続的な指示で、
AGENTS.mdや rules を含みます。開発規約、プロジェクト構造、よく使うコマンド、コラボレーションの約束事を記載するのに適しています。 - 自動メモリ:有効化すると Qoder CLI がローカルマシンに保存する Markdown 形式のメモリで、今後のセッションでも有用な環境設定、フィードバック、プロジェクトの背景、外部参照などを記録するのに適しています。
メモリの種類
| メカニズム | 作成者 | 適した内容 | スコープ | 表示入口 |
|---|---|---|---|---|
| 静的メモリ | ユーザーまたはチーム | 明確で安定しており、毎セッション遵守したい指示。AGENTS.md には全体的な指示を、rules にはトピックまたはファイル範囲ごとに分割したものを配置 | ユーザーレベル、プロジェクトレベル、ローカルプロジェクトレベル、プラグイン提供 | /memory |
| 自動メモリ | Qoder CLI | 会話から学習した再利用可能な情報(環境設定、フィードバック、プロジェクトの背景、外部資料の場所など) | プロジェクトレベル、オプションでユーザーレベル | /memory で自動メモリフォルダーを開く、/memory manage でトピックファイルを管理 |
静的メモリ
静的メモリは、ユーザーまたはチームが明示的に作成・管理します。AGENTS.md はプロジェクト全体の指示や安定した約束事を記載するのに適しており、rules は同種の指示をトピックやファイル範囲ごとに複数の Markdown ファイルに分割するのに適しています。
静的メモリファイル
AGENTS.md は Qoder CLI のデフォルトのコンテキストファイル名であり、rules は rules/ ディレクトリに配置される Markdown 形式のルールファイルです。メモリの起動または更新時、Qoder CLI は利用可能な静的メモリファイルを読み込み、一致する内容をコンテキストとしてセッションに注入します。
一般的な配置場所
| 場所 | 用途 | コミット対象として適切か |
|---|---|---|
~/.qoder/AGENTS.md | 現在のユーザーのプロジェクト横断的な共通環境設定と作業習慣 | いいえ |
<project>/AGENTS.md | チームで共有するプロジェクトルール、アーキテクチャの説明、よく使うコマンド | はい |
<project>/AGENTS.local.md | 現在のマシン固有のプロジェクトプライベート指示(ローカルサービスアドレスや個人用テストデータなど) | いいえ |
<project>/.qoder/rules/**/*.md | トピックまたはファイル範囲ごとに分割されたプロジェクトルール | はい |
context.fileName を通じて単一のファイル名またはファイル名の配列を設定できます。デフォルト値は AGENTS.md です。
読み込みロジック
メモリの起動または更新時、Qoder CLI のプロジェクトメモリは上位ディレクトリへ向かって検索を行い、各階層のプロジェクトルールディレクトリを確認します。
- ユーザーレベルメモリ:ユーザー構成ディレクトリ内の
AGENTS.mdを読み込みます。 - プロジェクトおよびローカルプロジェクトメモリ:信頼されたワークスペース内において、現在のワークスペースディレクトリから親ディレクトリへ向かって
AGENTS.md、AGENTS.local.md、.qoder/rules/**/*.mdを検索します。デフォルトでは.gitが存在するディレクトリまで検索します。 - ルールのフロントマターによって読み込み方法が決まります。常に有効なルールはプロジェクトメモリと一緒に読み込まれます。特定のファイルに対して有効なルールは、Qoder CLI が一致するファイルにアクセスした後にオンデマンドで読み込まれます。手動ルールとモデル判断ルールは、起動時に本文が注入されません。
- サブディレクトリメモリ:起動時にはプリロードされません。Qoder CLI がサブディレクトリ内のファイルを正常に読み込んだ後でのみ、そのファイルが存在するディレクトリから上位へ向かって、未読み込みの
AGENTS.md、AGENTS.local.md、または一致する.qoder/rules/**/*.mdを補充します。これらのオンデマンドで読み込まれる内容は後続のコンテキストに追加され、/memoryに表示されます。
/repo/packages/app で起動した場合、以下が確認されます。
/repo から起動した場合、/repo/packages/app/AGENTS.md や /repo/packages/app/.qoder/rules/*.md はプリロードされません。packages/app 配下のファイルにアクセスした後にオンデマンドで読み込まれます。
ルール(Rules)
ルールは rules/ ディレクトリに配置され、トピックごとに分割された指示ファイルであり、単一の肥大化した AGENTS.md を代替するものです。トピック(テスト、API、セキュリティ)や、対象となるコード領域ごとに分割できます。各ルールは通常の Markdown ファイルであり、オプションのフロントマターによって有効化されるタイミングが決まります。
Qoder CLI の rules のフロントマターは、Qoder Desktop で構成された rules 設定と互換性があります。Qoder Desktop から同期またはコピーされたルールファイルは、既存のトリガー構成をそのまま使用できます。
配置場所
ルールには2つのスコープがあります。
| スコープ | 場所 | 適用範囲 | コミット対象か |
|---|---|---|---|
| プロジェクトレベル | <project>/.qoder/rules/**/*.md | ファイルが存在するプロジェクト。チームと共有 | はい |
| ユーザーレベル | ~/.qoder/rules/**/*.md | 開くすべてのプロジェクト。ローカルマシンの個人利用のみ | いいえ |
サポートされる有効化方法
Qoder CLI は4種類のルールの有効化方法をサポートしています。読み込み関連のフロントマターが構成されていない場合、ルールはデフォルトで常に有効になります。trigger が存在する場合は alwaysApply よりも優先されます。
| 有効化方法 | 適したシナリオ | 構成方法 | 読み込み動作 |
|---|---|---|---|
| 常に有効 | 毎セッション遵守する必要がある汎用ルール | 読み込みフロントマターを記述しない、または trigger: always_on を設定、あるいは alwaysApply: true を設定 | メモリの起動または更新時にルール本文を読み込みます。 |
| 手動導入 | 時々使用され、明示的に導入する必要があるルール | trigger: manual または alwaysApply: false | ルール本文は自動注入されません。 |
| モデル判断 | 単一の説明で現在のタスクに関連するかどうかを判断できるルール | trigger: model_decision + 空でない description | ルールのパスと説明のみを注入し、モデルが関連ありと判断した場合にルール本文を読み込みます。 |
| 特定ファイルに有効 | 特定のファイルまたはディレクトリに対してのみ有効なルール | trigger: glob + glob、または直接 paths を構成 | Qoder CLI が一致するファイルにアクセスした後、オンデマンドでルール本文を読み込みます。 |
trigger: model_decision を使用する場合は、空でない description を同時に設定する必要があります。trigger: glob を使用する場合は、有効な glob を同時に設定する必要があります。必須フィールドが欠落している場合、ルール本文はコンテキストに自動注入されません。
構成例
常に有効なルールはフロントマターを記述しなくても構いませんが、明示的に設定することもできます。
description を提供する必要があります。
trigger: glob + glob を使用できます。
paths を直接使用して、パスに基づいて有効化するように構成することもできます。
フロントマターの構成項目
| 構成項目 | 利用可能な値 | 説明 |
|---|---|---|
trigger | always_on、manual、model_decision、glob | 有効化方法。always_on は常に有効を示します。manual は手動導入を示します。model_decision はモデル判断を示し、空でない description を同時に設定する必要があります。glob は特定ファイルに有効を示し、有効な glob を同時に設定する必要があります。 |
alwaysApply | true、false | 互換性構成。true は trigger: always_on と同等です。false は trigger: manual と同等です。 |
description | 文字列 | モデル判断ルールの説明。モデルがルール本文を読み込む必要があるかどうかを判断するのに役立ちます。 |
glob | 単一の glob または glob のリスト | trigger: glob と組み合わせて、ルールが有効になるファイル範囲を指定します。 |
paths | 単一の glob または glob のリスト | ルールが有効になるファイル範囲を指定します。動作は trigger: glob + glob と同等です。 |
glob と paths について:
- どちらも glob パターンのセットを受け入れます。プロジェクトレベルルールの glob は、
.qoder/ディレクトリを含むプロジェクトディレクトリを基準にマッチングされます。ユーザーレベルルールの glob は、現在のプロジェクトルートディレクトリを基準にマッチングされます。 - どちらも内部ルーティングメタデータです。ルールがいつ有効になるかを決めるためのものであり、ルール本文と共にモデルコンテキストに注入されることはありません。
| パターン | マッチ対象 |
|---|---|
**/*.ts | 任意のディレクトリ内のすべての TypeScript ファイル |
src/**/* | src/ 配下の任意の深さのすべてのファイル |
*.md | 任意のディレクトリ内の Markdown ファイル |
/*.md | プロジェクトルートディレクトリのみの Markdown ファイル |
src/components/*.tsx | src/components/ 直下のファイル(ネストを含まない) |
セッション中のルール更新
ルールが読み込まれた後、Qoder CLI は現在のセッションの残り時間中、そのファイルを継続的に監視します。ルールの編集(読み込み方法やプロジェクトレベル/ユーザーレベルを問わず)は次のターンで検知されるため、ルールを即座に調整し、Qoder CLI を再起動せずに新しいバージョンに従わせることができます。パスに基づいて有効になるルールも、アクセスされたファイルに初めてマッチした時点で監視対象に組み込まれます。
作成のヒント
AGENTS.md は「次回のセッションでも知っておくべき事実と約束事」として扱ってください。以下の記載に適しています。
- ビルド、テスト、フォーマット、リリースコマンド
- プロジェクトのディレクトリ構造と主要モジュールの境界
- コードスタイル、命名規則、レビュー要件
- チームで合意したワークフロー(コミット、ブランチ、テストデータ準備など)
- 現在のリポジトリに長期的に適用されるセキュリティまたはコンプライアンスに関する注意事項
- 現在のタスクにのみ有用な一時的な状態
- すぐに期限切れになるスケジュールや進捗
- コードや README からすでに直接読み取れる冗長な重複内容
- 厳格に強制する必要があるセキュリティポリシー。このような要件は権限構成またはフックに配置する必要があります。
他のファイルのインポート
AGENTS.md では @path/to/file を使用して他のファイルをインポートできます。相対パスは現在の AGENTS.md が存在するディレクトリを基準に解決されます。
- 相対パス、絶対パス、および
~/パスをサポートします。 - Markdown のインラインコードおよびコードブロック内の
@...はインポートとして扱われません。 - プロジェクトおよびローカルプロジェクトメモリは、デフォルトでプロジェクト境界内のファイルのインポートのみを許可します。プロジェクト外を指すインポートには、明示的な承認またはセキュリティ設定による許可が必要です。
- インポートは再帰的に展開されますが、循環インポートによる無限展開を防ぐために深度制限があります。
@README.md に言及したいだけの場合は、`@README.md` と記述してください。
自動メモリ
自動メモリを有効にすると、Qoder CLI は会話の中でセッションを跨いで再利用する価値のある情報をローカルマシンの Markdown ファイルとして保存します。すべての会話を保存するのではなく、内容に基づいて記憶する価値があるかどうかを判断します。
保存に適した内容
自動メモリは4種類の内容をサポートします。
| 種類 | 用途 |
|---|---|
user | ユーザーの役割、長期的な環境設定、プロジェクト横断的な作業習慣 |
feedback | 作業方法に対するユーザーの修正や確認(例:「今後はこうしないでください」) |
project | 現在のプロジェクトにおいて、コードから直接推測できない背景、制約、または意思決定の理由 |
reference | 外部システム、カンバン、ダッシュボード、ドキュメントなどの資料の場所 |
自動メモリの有効化
自動メモリはインタラクティブセッションでのみ実行されます。以下のいずれかの方法で有効にし、Qoder CLI を再起動してください。
/settingsを実行し、Auto Memory を検索してオンにします。settings.jsonに以下を追加します。
QODER_MEMORY は settings.json より優先されます。
プロジェクト横断的なユーザーレベルの自動メモリルートディレクトリも有効にする場合は、同時に以下を設定します。
QODER_MEMORY_USER は自動メモリが有効になっている場合にのみ機能します。自動メモリが有効になっていない場合でも、/memory で AGENTS.md ファイルを管理することは可能です。/memory manage は自動メモリが利用できないことを通知します。
自動メモリの保存場所
プロジェクトレベルの自動メモリは、現在のプロジェクトに対応する Qoder 構成ディレクトリに保存されます。
MEMORY.md インデックスといくつかのトピックファイルが含まれます。
MEMORY.md はインデックスであり、長い本文を書き込むべきではありません。Qoder CLI は起動時に、アクティブな各自動メモリルートの MEMORY.md を読み込みます。読み込みは最大で先頭200行または約25KBまでです。より詳細な内容は、インデックスから参照される個別のトピックファイルに配置する必要があります。
表示と管理
TUI で以下を入力します。
/memory を実行するとメモリ概要が開き、ユーザーレベル、プロジェクトレベル、ローカルプロジェクトレベルのメモリファイルが表示されます。自動メモリが有効な場合は Open auto-memory folder エントリも表示されます。このエントリを選択すると、システムのファイルマネージャーで対応する自動メモリフォルダーが開きます。
TUI 内でトピックファイルごとに自動メモリを管理する場合は、以下を実行します。
/memory manage を実行すると自動メモリマネージャーが開き、自動メモリのトピックファイルを表示、開く、編集、または削除できます。トピックファイルを削除すると、Qoder CLI は対応する MEMORY.md のインデックス行も同期して削除します。
Qoder CLI に記憶または忘却させる
自然言語で直接指示できます。
AGENTS.md に書き込むよう明示的に要求することをお勧めします。
トラブルシューティング
Qoder CLI が AGENTS.md に従わない
/memoryを実行し、対象ファイルがリストに表示されていることを確認します。- 現在のディレクトリが信頼されたワークスペース内にあることを確認します。信頼されていないディレクトリでは、プロジェクト設定、フック、MCP、および
AGENTS.mdは読み込まれません。 - 競合する指示が存在しないか確認します。特に、ユーザーレベル、プロジェクトレベル、ローカルプロジェクトレベルのファイル間での競合に注意してください。
agentsMdExcludesによって対象ファイルが除外されていないか確認します。- 曖昧な要件を、具体的で検証可能なルールに変更します。
@ のインポートが機能しない
- パスが実際に存在し、Markdown のコードブロックやインラインコード内に記述されていないことを確認します。
- プロジェクト外へのインポートはデフォルトでブロックされます。外部インポートを承認するか、セキュリティ設定を調整する必要があります。
- npm パッケージ名、通常の言及、ファイルとしての特徴を持たない
@wordについては、Qoder CLI はファイルインポートとして処理しません。
自動メモリが表示されない
- 現在 TUI のインタラクティブセッションであることを確認します。
- 起動時に
QODER_MEMORY=1が設定されていることを確認します。 /memoryを実行して自動メモリフォルダーのエントリが表示されるか確認するか、/memory manageを実行して自動メモリマネージャーが利用可能か確認します。- すべてのターンでメモリが保存されるわけではありません。セッションを跨いで再利用する価値のある情報がない場合、メモリが0件で作成されないのは正常な動作です。