Skip to main content
Qoder CLI の拡張

メモリ

Qoder CLI の静的メモリ(AGENTS.md)および自動メモリメカニズム、ファイルの場所と管理方法

Qoder CLI はセッションごとにコンテキストを再構築します。セッションを跨いで保持する必要のある知識は、主に以下の2種類のメモリから取得されます。
  • 静的メモリ:ユーザーまたはチームが管理する永続的な指示で、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
場所用途コミット対象として適切か
~/.qoder/AGENTS.md現在のユーザーのプロジェクト横断的な共通環境設定と作業習慣いいえ
<project>/AGENTS.mdチームで共有するプロジェクトルール、アーキテクチャの説明、よく使うコマンドはい
<project>/AGENTS.local.md現在のマシン固有のプロジェクトプライベート指示(ローカルサービスアドレスや個人用テストデータなど)いいえ
<project>/.qoder/rules/**/*.mdトピックまたはファイル範囲ごとに分割されたプロジェクトルールはい
他のファイル名を使用する必要がある場合は、context.fileName を通じて単一のファイル名またはファイル名の配列を設定できます。デフォルト値は AGENTS.md です。

読み込みロジック

メモリの起動または更新時、Qoder CLI のプロジェクトメモリは上位ディレクトリへ向かって検索を行い、各階層のプロジェクトルールディレクトリを確認します。
  • ユーザーレベルメモリ:ユーザー構成ディレクトリ内の AGENTS.md を読み込みます。
  • プロジェクトおよびローカルプロジェクトメモリ:信頼されたワークスペース内において、現在のワークスペースディレクトリから親ディレクトリへ向かって AGENTS.mdAGENTS.local.md.qoder/rules/**/*.md を検索します。デフォルトでは .git が存在するディレクトリまで検索します。
  • ルールのフロントマターによって読み込み方法が決まります。常に有効なルールはプロジェクトメモリと一緒に読み込まれます。特定のファイルに対して有効なルールは、Qoder CLI が一致するファイルにアクセスした後にオンデマンドで読み込まれます。手動ルールとモデル判断ルールは、起動時に本文が注入されません。
  • サブディレクトリメモリ:起動時にはプリロードされません。Qoder CLI がサブディレクトリ内のファイルを正常に読み込んだ後でのみ、そのファイルが存在するディレクトリから上位へ向かって、未読み込みの AGENTS.mdAGENTS.local.md、または一致する .qoder/rules/**/*.md を補充します。これらのオンデマンドで読み込まれる内容は後続のコンテキストに追加され、/memory に表示されます。
例えば、/repo/packages/app で起動した場合、以下が確認されます。
/repo/packages/app/AGENTS.md
/repo/packages/app/.qoder/rules/*.md
/repo/packages/AGENTS.md
/repo/packages/.qoder/rules/*.md
/repo/AGENTS.md
/repo/.qoder/rules/*.md
/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 を同時に設定する必要があります。必須フィールドが欠落している場合、ルール本文はコンテキストに自動注入されません。

構成例

常に有効なルールはフロントマターを記述しなくても構いませんが、明示的に設定することもできます。
---
trigger: always_on
---

# 共通プロジェクト規約

- コミット前にテストを実行する。
- パブリックAPIを変更する際は、ドキュメントも同時に更新する。
手動導入のルールはコンテキストに自動注入されません。
---
trigger: manual
---

# リリースチェックリスト

- バージョン番号が更新されていることを確認してください。
- changelogが追記されていることを確認してください。
モデル判断ルールには、ルール本文を読み込む必要があるかどうかを判断するために description を提供する必要があります。
---
trigger: model_decision
description: API handler、schema、またはAPIのエラー構造を変更する際に使用します。
---

# API ルール

- `src/api/schema/` 配下の共有 schema を使用してリクエストボディを検証します。
- 各 handler は標準のエラー構造を返す必要があります。
特定のファイルに対して有効にする場合は、trigger: glob + glob を使用できます。
---
trigger: glob
glob:
  - src/api/**
  - "**/*.test.ts"
---

# APIルール

- `src/api/schema/` 配下の共有スキーマを使用してリクエストボディを検証します。
- 各 handler は標準のエラー構造を返す必要があります。
また、paths を直接使用して、パスに基づいて有効化するように構成することもできます。
---
paths:
  - src/api/**
  - "**/*.test.ts"
---

フロントマターの構成項目

構成項目利用可能な値説明
triggeralways_onmanualmodel_decisionglob有効化方法。always_on は常に有効を示します。manual は手動導入を示します。model_decision はモデル判断を示し、空でない description を同時に設定する必要があります。glob は特定ファイルに有効を示し、有効な glob を同時に設定する必要があります。
alwaysApplytruefalse互換性構成。truetrigger: always_on と同等です。falsetrigger: manual と同等です。
description文字列モデル判断ルールの説明。モデルがルール本文を読み込む必要があるかどうかを判断するのに役立ちます。
glob単一の glob または glob のリストtrigger: glob と組み合わせて、ルールが有効になるファイル範囲を指定します。
paths単一の glob または glob のリストルールが有効になるファイル範囲を指定します。動作は trigger: glob + glob と同等です。
globpaths について:
  • どちらも glob パターンのセットを受け入れます。プロジェクトレベルルールの glob は、.qoder/ ディレクトリを含むプロジェクトディレクトリを基準にマッチングされます。ユーザーレベルルールの glob は、現在のプロジェクトルートディレクトリを基準にマッチングされます。
  • どちらも内部ルーティングメタデータです。ルールがいつ有効になるかを決めるためのものであり、ルール本文と共にモデルコンテキストに注入されることはありません。
パターンは gitignore スタイルのマッチングを採用しています。一般的な例:
パターンマッチ対象
**/*.ts任意のディレクトリ内のすべての TypeScript ファイル
src/**/*src/ 配下の任意の深さのすべてのファイル
*.md任意のディレクトリ内の Markdown ファイル
/*.mdプロジェクトルートディレクトリのみの Markdown ファイル
src/components/*.tsxsrc/components/ 直下のファイル(ネストを含まない)

セッション中のルール更新

ルールが読み込まれた後、Qoder CLI は現在のセッションの残り時間中、そのファイルを継続的に監視します。ルールの編集(読み込み方法やプロジェクトレベル/ユーザーレベルを問わず)は次のターンで検知されるため、ルールを即座に調整し、Qoder CLI を再起動せずに新しいバージョンに従わせることができます。パスに基づいて有効になるルールも、アクセスされたファイルに初めてマッチした時点で監視対象に組み込まれます。

作成のヒント

AGENTS.md は「次回のセッションでも知っておくべき事実と約束事」として扱ってください。以下の記載に適しています。
  • ビルド、テスト、フォーマット、リリースコマンド
  • プロジェクトのディレクトリ構造と主要モジュールの境界
  • コードスタイル、命名規則、レビュー要件
  • チームで合意したワークフロー(コミット、ブランチ、テストデータ準備など)
  • 現在のリポジトリに長期的に適用されるセキュリティまたはコンプライアンスに関する注意事項
以下の記載には適していません。
  • 現在のタスクにのみ有用な一時的な状態
  • すぐに期限切れになるスケジュールや進捗
  • コードや README からすでに直接読み取れる冗長な重複内容
  • 厳格に強制する必要があるセキュリティポリシー。このような要件は権限構成またはフックに配置する必要があります。
指示は具体的であるほど安定します。例:
# Development

- Use `pnpm test` before committing changes.
- API handlers live in `src/api/handlers/`.
- Do not modify generated files under `src/generated/`.

他のファイルのインポート

AGENTS.md では @path/to/file を使用して他のファイルをインポートできます。相対パスは現在の AGENTS.md が存在するディレクトリを基準に解決されます。
# Project Notes

See @README.md for the high-level architecture.
Use @docs/testing.md for test data setup.
インポートのルール:
  • 相対パス、絶対パス、および ~/ パスをサポートします。
  • Markdown のインラインコードおよびコードブロック内の @... はインポートとして扱われません。
  • プロジェクトおよびローカルプロジェクトメモリは、デフォルトでプロジェクト境界内のファイルのインポートのみを許可します。プロジェクト外を指すインポートには、明示的な承認またはセキュリティ設定による許可が必要です。
  • インポートは再帰的に展開されますが、循環インポートによる無限展開を防ぐために深度制限があります。
テキスト内で単に @README.md に言及したいだけの場合は、`@README.md` と記述してください。

自動メモリ

自動メモリを有効にすると、Qoder CLI は会話の中でセッションを跨いで再利用する価値のある情報をローカルマシンの Markdown ファイルとして保存します。すべての会話を保存するのではなく、内容に基づいて記憶する価値があるかどうかを判断します。

保存に適した内容

自動メモリは4種類の内容をサポートします。
種類用途
userユーザーの役割、長期的な環境設定、プロジェクト横断的な作業習慣
feedback作業方法に対するユーザーの修正や確認(例:「今後はこうしないでください」)
project現在のプロジェクトにおいて、コードから直接推測できない背景、制約、または意思決定の理由
reference外部システム、カンバン、ダッシュボード、ドキュメントなどの資料の場所
自動メモリはローカルファイルであり、コードをコミットしても他のマシンに自動同期されません。また、内容が古くなる可能性もあります。メモリがファイル、関数、構成、または外部状態に関するものである場合、Qoder CLI は現在の事実を確認してからそれに基づいて行動する必要があります。

自動メモリの有効化

自動メモリはインタラクティブセッションでのみ実行されます。以下のいずれかの方法で有効にし、Qoder CLI を再起動してください。
  • /settings を実行し、Auto Memory を検索してオンにします。
  • settings.json に以下を追加します。
{
  "autoMemoryEnabled": true
}
構成ファイルの場所と適用順序については、構成ファイルと適用順序 を参照してください。 一時的またはデプロイメント単位のオーバーライドには、環境変数も使用できます。
QODER_MEMORY=1 qoder
明示的に設定した QODER_MEMORYsettings.json より優先されます。 プロジェクト横断的なユーザーレベルの自動メモリルートディレクトリも有効にする場合は、同時に以下を設定します。
QODER_MEMORY=1 QODER_MEMORY_USER=1 qoder
QODER_MEMORY_USER は自動メモリが有効になっている場合にのみ機能します。自動メモリが有効になっていない場合でも、/memoryAGENTS.md ファイルを管理することは可能です。/memory manage は自動メモリが利用できないことを通知します。

自動メモリの保存場所

プロジェクトレベルの自動メモリは、現在のプロジェクトに対応する Qoder 構成ディレクトリに保存されます。
~/.qoder/projects/<project>/memory/
ユーザーレベルの自動メモリを有効にすると、以下も使用されます。
~/.qoder/memory/
各自動メモリディレクトリには、1つの MEMORY.md インデックスといくつかのトピックファイルが含まれます。
memory/
├── MEMORY.md
├── user-preferences.md
├── feedback-testing.md
└── project-release-context.md
MEMORY.md はインデックスであり、長い本文を書き込むべきではありません。Qoder CLI は起動時に、アクティブな各自動メモリルートの MEMORY.md を読み込みます。読み込みは最大で先頭200行または約25KBまでです。より詳細な内容は、インデックスから参照される個別のトピックファイルに配置する必要があります。

表示と管理

TUI で以下を入力します。
/memory
/memory を実行するとメモリ概要が開き、ユーザーレベル、プロジェクトレベル、ローカルプロジェクトレベルのメモリファイルが表示されます。自動メモリが有効な場合は Open auto-memory folder エントリも表示されます。このエントリを選択すると、システムのファイルマネージャーで対応する自動メモリフォルダーが開きます。 TUI 内でトピックファイルごとに自動メモリを管理する場合は、以下を実行します。
/memory manage
/memory manage を実行すると自動メモリマネージャーが開き、自動メモリのトピックファイルを表示、開く、編集、または削除できます。トピックファイルを削除すると、Qoder CLI は対応する MEMORY.md のインデックス行も同期して削除します。

Qoder CLI に記憶または忘却させる

自然言語で直接指示できます。
Remember to start local Redis before running the integration tests for this project.
または:
Forget all previous memory about the old deployment script.
内容がチームのルールやプロジェクトの指示に近い場合は、AGENTS.md に書き込むよう明示的に要求することをお勧めします。
Add this test convention to the project AGENTS.md.

トラブルシューティング

Qoder CLI が AGENTS.md に従わない

  • /memory を実行し、対象ファイルがリストに表示されていることを確認します。
  • 現在のディレクトリが信頼されたワークスペース内にあることを確認します。信頼されていないディレクトリでは、プロジェクト設定、フック、MCP、および AGENTS.md は読み込まれません。
  • 競合する指示が存在しないか確認します。特に、ユーザーレベル、プロジェクトレベル、ローカルプロジェクトレベルのファイル間での競合に注意してください。
  • agentsMdExcludes によって対象ファイルが除外されていないか確認します。
  • 曖昧な要件を、具体的で検証可能なルールに変更します。

@ のインポートが機能しない

  • パスが実際に存在し、Markdown のコードブロックやインラインコード内に記述されていないことを確認します。
  • プロジェクト外へのインポートはデフォルトでブロックされます。外部インポートを承認するか、セキュリティ設定を調整する必要があります。
  • npm パッケージ名、通常の言及、ファイルとしての特徴を持たない @word については、Qoder CLI はファイルインポートとして処理しません。

自動メモリが表示されない

  • 現在 TUI のインタラクティブセッションであることを確認します。
  • 起動時に QODER_MEMORY=1 が設定されていることを確認します。
  • /memory を実行して自動メモリフォルダーのエントリが表示されるか確認するか、/memory manage を実行して自動メモリマネージャーが利用可能か確認します。
  • すべてのターンでメモリが保存されるわけではありません。セッションを跨いで再利用する価値のある情報がない場合、メモリが0件で作成されないのは正常な動作です。

メモリ内容の期限切れ

メモリは書き込み時のコンテキストを反映しています。現在のコード、構成、外部システムの状態を扱う際は、現在のファイルと現在のシステムを基準とすべきです。メモリが古くなっていることに気づいた場合は、対応するメモリを更新または削除してください。
Qoder CLI を使用する
メモリ - Qoder