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

Qwen CodeのチームメモリをGitから隠さずに QWEN.local.md をプライベートに保つ方法(2026年ガイド)

Qwen Codeは、まったく異なる2つのものを同じフォルダに保持します。.qwen/QWEN.local.md は、コミットしてはならない個人用・プロジェクト固有の指示のためのものです。.qwen/team-memory/ は、チーム全体で共有する知識のためのものであり、コミットされて初めて機能します。どちらも .qwen/ の下に存在し、Gitは両方に対して1つの無視(ignore)ファイルを使用します。

ほとんどの人は、最初の問題を解決するために、.qwen/ ディレクトリ全体を無視するという明白な方法をとります。Qwen Codeのドキュメントには、その明白な解決策がなぜ2つ目の機能を静かに壊してしまうのか、その注意点が1つだけ説明されています。チームメモリ層がGit内で空のままになり、チームメイトに共有されるはずだったものが届かなくなってしまうのです。

解決策は、少し異なる形式で書かれた1行のルールです。なぜその違いが重要なのか、.qwen/ の中には他に何があるのか、そして両方が意図通りに動作しているかを確認する方法を解説します。

なぜ1つの無視ルールが2つの相反する役割を果たさなければならないのか

まずは Qwen Code の指示ファイルから始めましょう。そのメモリドキュメントには、QWEN.md の配置場所として3つの場所がリストされています。「あなた個人、すべてのプロジェクト共通」のための ~/.qwen/QWEN.md、「チーム全体(ソース管理にコミットする)」のためのプロジェクトルートの QWEN.md、および「あなた個人、このプロジェクトのみ(Gitから除外する)」のための .qwen/QWEN.local.md です。Qwen は「セッションを開始するときに、これらすべてをロード」します。

ローカルファイルは、「あなた自身のクラスターID、コンテナレジストリの名前空間、またはクラウドのアカウント」や「ローカル環境をハードコードした個人用のデバッグコマンド」などのために用意されています。これは「共有プロジェクトの QWEN.md後にロードされるため、ローカルの指示でチームの指示を補完または上書きする」ことができます。

そして、Qwen があなたに委ねる責任がこれです。「自分で gitignore に追加する必要があります。 .qwen/ はローカルディレクトリとして扱われることが多いですが、qwen-code は .gitignore を自動生成しません。また、一部のプロジェクトでは .qwen/settings.json をコミットすることがあります。」

次にチームメモリです。デフォルトでは、Qwen の自動メモリはプライベートです。「自動メモリファイルは、ホームディレクトリの下の ~/.qwen/projects/<project>/memory/ に保存されます。」チームメモリは異なります。「チームメモリは、チーム全体が Git を通じて 共有するオプトインのレイヤーです。」有効にすると、「Qwen はリポジトリ内.qwen/team-memory/ に3つ目のメモリディレクトリを作成します。」共有は「通常の方法で行われます。git pull でチームメイトのメモリを受け取り、コミット/プッシュして自分のメモリを共有します。」これは「デフォルトではオフ」になっています。

これを機能させるために、ドキュメントには明記されています。「ディレクトリは Git で追跡されている必要があります。」そして、すべてを左右する注意点が続きます。

「注意:末尾にスラッシュが付いたディレクトリ形式(.qwen/)ではなく、ファイルグロブの無視形式(.qwen/*)を使用してください。ディレクトリ形式の無視を使用すると、Git はフォルダ全体を完全にスキップするため、その下の ! による再インクルードは機能せず(no-op)、チームレイヤーは Git 内で静かに空のままになります。」

このように、2つのファイルは相反する方向を向いています。QWEN.local.md をプライベートに保とうとすると、フォルダ全体を無視したくなります。しかし、フォルダをディレクトリ形式で無視すると、チームレイヤーを再インクルードすることが不可能になります。両方を満たす唯一のルールは、明示的な再インクルードを伴うファイルグロブ形式です。

Qwen はこの間違いを検出しようとします。「レイヤーが有効になっているにもかかわらず、そのディレクトリが Git で無視されているか、Git リポジトリの外部にある場合、起動時に一度だけ警告が表示されるため、この誤設定が見過ごされることはありません。」起動時に一度、それを有効にした本人に対してのみです。チームメモリを有効にしていないチームメイトには何も表示されず、リポジトリをレビューしている人も気づきません。

代わりに試されがちなこと

.qwen/ をディレクトリとして無視する。 これにより QWEN.local.md は Git から除外されますが、Git はフォルダ全体を完全にスキップしてしまいます。その下にある再インクルード設定は、ドキュメントの言葉を借りれば「機能しません(no-op)」。

何も無視しない。 チームメモリは機能しますが、誰かが最初に git add . を実行したときに、その人の個人用クラスターIDやローカルデバッグコマンドが一緒にリポジトリに入ってしまいます。

再インクルード行を追加して、機能していると思い込む。 .qwen/team-memory/ を再インクルードする行は、どのような形式であっても正しく見えます。しかし、これらが効果を発揮するのはファイルグロブ形式の無視の下にある場合のみであり、ディレクトリ形式の無視の下では機能しません。

起動時の警告に頼る。 この警告は、レイヤーを有効にしている人に対して一度だけ表示されます。これは便利なセーフティネットではありますが、正しい無視ファイルの代わりにはなりません。

チームメモリをプライベートなノートとして扱う。 ドキュメントには直接こう書かれています。「これはソース管理され、リポジトリへのアクセス権を持つ全員に表示されます。チームメモリはリポジトリへのコミットと同じように扱ってください。」個人用のメモはプライベートレイヤーに置くべきです。

シークレットスキャンをあてにする。 チームフォルダへの書き込みは認証情報のスキャンが行われ、「検出されたシークレットは拒否され、書き込まれません。」Qwen はさらにこう付け加えています。「スキャンはセーフティネットであり、保証ではありません。機密データはそこに置かないでください。」

解決策:.qwen 内の構成を把握し、ファイルグロブ形式で無視ルールを記述し、両方を確認する

目標は、QWEN.local.md が決してコミットされず、.qwen/team-memory/ は常にコミットされ、.qwen/ の下にある他のすべてのものが意図通りにどちらかに分類されるリポジトリを構築することです。

ステップ 1:プロジェクト内の .qwen/ 以下にあるものをすべて把握する

プロジェクトを開き、.qwen/ の中身をリストアップします。以下の4種類のファイルを探します。

誰かが使用している場合の QWEN.local.md。これは Git から除外する必要があります。

settings.json。Qwen は「一部のプロジェクトでは .qwen/settings.json をコミットする」と指摘しています。もしあなたのプロジェクトがそうしている場合(たとえば、全員に対してチームメモリを有効にするためなど)、これは追跡し続ける必要があります。

レイヤーが有効になっている、または有効にしようとしている場合の team-memory/。これは追跡する必要があります。

ツールやチームメイトがそこに置いたその他のもの。それぞれのアイテムについて、個人用か共有用かを判断します。

次に、お使いのマシンのグローバルな Git 無視設定を含め、現在の無視ルールを確認します。特に、末尾にスラッシュが付いた .qwen/ を探してください。これが、注意点で警告されている形式です。

ステップ 2:明示的な再インクルードを伴うファイルグロブ形式で無視ルールを記述する

ディレクトリ形式のルールをファイルグロブ形式に置き換えます。実際には、.gitignore には3種類の行が必要になります。

まず、ファイルグロブ形式の無視:.qwen/*。これにより、フォルダ内のすべてが無視されますが、Git はフォルダの内部を探索できるため、再インクルードが可能になります。

次に、ドキュメントに記載されている通りのチームメモリの再インクルード:!.qwen/team-memory/ および !.qwen/team-memory/**。プロジェクトで設定をコミットする場合は、.qwen/settings.json の再インクルードも追加します。

第三に、QWEN.local.md に対する追加の設定は不要です。ファイルグロブ形式のルールによってすでに無視されており、再インクルードされていないため、無視されたままになります。自分のマシンでの安全性をさらに高めるため、ドキュメントでは .qwen/QWEN.local.md を「グローバルな Git 無視設定」に追加することも推奨しています。

.gitignore の変更のみをコミットし、なぜこの形式が重要なのかを説明するメッセージを添えます。次に無視ファイルを .qwen/ に「整理」しようとする人が、なぜそうしてはいけないのかを理解できるようにするためです。

ステップ 3:ファイルブラウザではなく、Git で確認する

ディスク上のファイルを見るだけでは何もわかりません。重要なのは Git からどう見えているかです。チームメモリを有効にした状態で、Qwen に無害なチームメモリ(全員がすでに従っているルールに関する短いメモなど)を書き込ませるか、同じ「1メモリ1ファイル」のレイアウトで手動で追加します。

その後、git status を確認します。ドキュメントには「チームメモリの書き込みは、他のファイルと同様に git status や PR の差分に表示されるため、コミットする前にレビューできます」とあります。新しいファイルが表示されれば、再インクルードは機能しています。表示されない場合は、フォルダがまだスキップされており、無視ルールがどこか(おそらくグローバルな無視ファイルなど)でまだディレクトリ形式のままになっています。

もう一方も同じ方法で確認します。.qwen/QWEN.local.md を作成または更新(touch)し、表示されないことを確認します。その後、Qwen を一度再起動し、起動時の警告が表示されないことを確認します。警告が表示されなくなれば、レイヤーは追跡されています。

最後に、チームメイトにプルしてもらい、テストメモリが届いたことを確認します。共有することこそがこのレイヤーの目的であり、共有の唯一の真のテストは、他の誰かがそれを確認できることです。

MemoryLake での設定方法

チームメモリは、1つのリポジトリに属する規約を保管するのに適した場所です。しかし、チームが持っている知識の一部は、複数のリポジトリ、複数のツール、あるいは Qwen Code をまったく使用していない人々にまたがることがあります。MemoryLake は、1つのリポジトリ内の1つのフォルダが正しく追跡されているかどうかに依存することなく、より広い範囲の知識を保持するための場所です。

エントリーはあなた自身の言葉で記述します。.qwen/、チームメモリフォルダ、自動メモリディレクトリ、またはベンダーのストアから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。

ステップ 1:API キーを作成する

サインインし、ダッシュボードからキーを生成します。このキーにより、Qwen Code やチームが使用するその他のツールで、作成したエントリーをエージェントが読み取れるようになります。

APIキーの作成とエージェントでの使用のためのコピーを行う、APIキー画面が表示された MemoryLake コンソール
APIキーの作成とエージェントでの使用のためのコピーを行う、APIキー画面が表示された MemoryLake コンソール

ステップ 2:最初のメモリをアップロードする

命名規則、レビューのルール、アーキテクチャ選択の背景にある理由など、リポジトリをまたいで適用される決定事項を追加します。1つのエントリーにつき1つの決定事項を、その理由とともに登録します。

最初のドキュメントがアップロードされ、各ファイルが検索可能なメモリとしてリストされている MemoryLake ワークスペース
最初のドキュメントがアップロードされ、各ファイルが検索可能なメモリとしてリストされている MemoryLake ワークスペース

ステップ 3:AI とエージェントを接続する

エージェントの接続先をワークスペースに設定します。これにより、同じ決定事項がすべてのリポジトリやツール(.qwen フォルダがないものも含め)で利用可能になります。

メモリレイヤーに接続可能な AI クライアントとエージェントフレームワークがリストされている MemoryLake の統合画面
メモリレイヤーに接続可能な AI クライアントとエージェントフレームワークがリストされている MemoryLake の統合画面

実務における変化

第一の違いは、個人レイヤーとチームレイヤーの競合がなくなることです。再インクルードを伴うファイルグロブ形式の無視を使用することで、回避策を覚える必要なく、同じフォルダ内で QWEN.local.md をプライベートに保ち、チームメモリを共有し続けることができます。

第二に、チームメモリを通常の方法でレビューできるようになります。書き込みが git status やプルリクエストに表示されるため、誤った規約をレビューでキャッチできます。生成された知識を手書きのルールの隣に配置するという同じアイデアは、手書きの Amazon Q ルールを生成されたメモリバンクから隔離するというアプローチの背景にもあります。

第三に、ワークツリーが予測可能な動作をするようになります。Qwen は、プライベートな自動メモリについて「リンクされた各 Git ワークツリーは独自のメモリフォルダを持つ」と指摘しており、リポジトリ全体の規約については代わりにチームメモリを指すようにしています。レイヤーが正しく追跡されていれば、すべてのワークツリーで同じ共有規約が参照されます。マシン間で作業を移動することは、Claude Code がマシン間でコンテキストを忘れてしまう問題と同様の構造を持っています。

第四に、オプションの同期を安全に検討できるようになります。Qwen はチームメモリの自動 Git 同期を提供していますが、ドキュメントには「ファストフォワードプルは .qwen/team-memory/ だけでなく、現在のブランチ全体に作用する」という注意点があります。これは有効にする前に知っておく価値があり、レイヤーが実際に追跡されて初めて重要になります。

第五に、チームメモリが他のレイヤーと並んで適切な役割を果たすようになります。コミットされた QWEN.md はルールを規定し、チームメモリはチームが学んだことを保持し、プライベートレイヤーはあなただけが必要とするものを保持します。他のエージェントはこれらの責任を異なる方法で分割していますが(Claude Code セッション間でのコンテキストの共有Claude Code がプロジェクトのコンテキストを忘れる理由では、そこでの同等の問題について説明されています)、重要なのは常に「どの事実がどのレイヤーに属し、誰がそれを見ることができるか」ということです。

QWEN.md ファイルとチームメモリのベストプラクティス

絶対に .qwen/ をディレクトリ形式で無視しないでください。 .qwen/* を使用し、共有すべきものを再インクルードします。

チームメモリを明示的に再インクルードします。 ドキュメントに記載されている通り、フォルダとその中身の両方の行を使用してください。

settings.json については慎重に決定してください。 コミットするプロジェクトもあります。コミットする場合は、再インクルード設定を追加してください。

個人情報は個人レイヤーに留めてください。 QWEN.local.md とプライベート自動メモリはあなた専用です。チームメモリはリポジトリへのアクセス権を持つ全員に表示されます。

シークレットは完全に排除してください。 認証情報スキャンはセーフティネットです。Qwen 自身の推奨事項は「機密データはそこに置かないこと」です。

Git とチームメイトの両方で確認してください。 git status はファイルが追跡されていることを示し、チームメイトのプルはそれが共有されていることを示します。拡張ファイルが Qwen のロード内容にどのように追加されるかについては、Qwen Code の拡張コンテキスト属性を参照してください。モデルの変更については、コンテキストを失わずに Qwen 3.8 Max に切り替える方法を参照してください。また、コードにおけるチーム知識のより広い問題については、開発チーム向けのコードベースメモリツールでオプションを比較しています。

結論

Qwen Code のメモリ設計はよく考えられています。個人の指示はローカルに留まり、自動メモリはデフォルトでプライベートに保たれ、チームメモリはすべてのチームがすでに使用しているツールである Git を通じて共有されます。唯一の注意点は、個人用ファイルと共有フォルダが隣り合わせに存在し、Git の無視ルールが末尾にスラッシュのあるフォルダとアスタリスクのあるフォルダをまったく異なる方法で処理することです。

ドキュメントはこの問題を正確に指摘しています。ディレクトリ形式の無視は「Git にフォルダ全体を完全にスキップさせ」、「チームレイヤーは Git 内で静かに空のままになります。」

.qwen/ の中身を把握し、明示的な再インクルードを伴うファイルグロブ形式に切り替え、git status とチームメイトのプルで確認してください。そして、リポジトリをまたぐ知識は、特定の無視ファイルが正しいかどうかに依存しない場所に保管しましょう。

よくある質問

Qwen Code は QWEN.local.md 用の .gitignore を作成しますか?

いいえ。Qwen のドキュメントには「qwen-code は .gitignore を自動生成しません」と記載されており、.qwen/QWEN.local.md.gitignore またはグローバルな Git 無視設定に追加するよう指示されています。

Qwen Code のチームメモリがチームメイト側で空になっているのはなぜですか?

最も可能性の高い原因は、ディレクトリ形式の無視設定です。ドキュメントでは、末尾にスラッシュを付けて .qwen/ を無視すると「Git はフォルダ全体を完全にスキップするため、その下の ! による再インクルードは機能せず(no-op)、チームレイヤーは Git 内で静かに空のままになります」と警告されています。

.qwen フォルダにはどの .gitignore ルールを使用すべきですか?

ファイルグロブ形式の .qwen/* を使用し、!.qwen/team-memory/ および !.qwen/team-memory/** でチームメモリを再インクルードします。QWEN.local.md はグロブによって無視されたままになります。

Qwen Code は自動メモリをどこに保存しますか?

プライベートな自動メモリは ~/.qwen/projects/<project>/memory/ に保存されます。1つのチェックアウトのすべてのブランチで共有され、リンクされた各 Git ワークツリーは独自のメモリフォルダを持ちます。チームメモリが有効な場合、リポジトリ内の .qwen/team-memory/ に保存されます。

Qwen Code のチームメモリはデフォルトでオンになっていますか?

いいえ。ドキュメントによると「デフォルトではオフ」であり、プロジェクトごと、または settings.jsonenableTeamMemory を使用してグローバルに有効化されます。

チームメモリが Git で無視されている場合、Qwen Code は警告してくれますか?

はい、一度だけ警告されます。Qwen は「レイヤーが有効になっているにもかかわらず、そのディレクトリが Git で無視されているか、Git リポジトリの外部にある場合、起動時に一度だけ警告を表示」します。レイヤーを有効にしていないチームメイトには、その警告は表示されません。