メモリ
Perchは三つのメモリシステムを同時に動かします。あなたが所有するプロジェクトファイル、ハイブリッド検索で取り出されるアカウント単位の永続メモリ、そしてあなたの修正から取り込まれる学習です。それぞれの役割と、モデルへの届き方を説明します。
ほとんどのエージェントハーネスが備えるメモリシステムは一つで、たいていは手で編集するファイルです。Perchは三つを動かしており、それぞれがまったく異なる役割を担います。プロジェクトファイルは、ある作業の常設のルールを保持します。永続メモリは、すべての作業を通じてあなたについて当てはまることを保持します。学習の記録は、あなたが何も書き留めなくても、あなたの修正をメモリに変えます。
このページでは三つすべてを取り上げ、そのあとで最も重要な部分を説明します。そのうちの何が特定のターンで実際にモデルに届くのか、そして何が届いたかを正確に確認する方法です。
要点
第一層:プロジェクトメモリ
プロジェクトメモリは、作業しているフォルダの中、つまりディスク上にあります。プレーンなマークダウンで、あなたが所有し、Perchを通さずにどれでも読んだり編集したりできます。
| パス | 保持する内容 |
|---|---|
.perch/PERCH.md | プロジェクトのマニュアル。このフォルダでPerchが毎ターン従う常設の指示です。 |
.perch/memory/*.md | 個別のメモリファイル。一つのファイルに一つの事実やメモを記録します。 |
.perch/rules/ | プロジェクトのルール。厳密に適用できるよう、説明文とは分けて保持します。 |
~/Documents/Perch/PERCH.md | グローバルなマニュアル。このフォルダだけでなく、すべてのフォルダに適用されます。 |
PERCH.mdは、プロジェクトに新しく加わるチームメンバーに伝えるようなことを書くのにふさわしい場所です。この案件の慣例、このクライアント向けの出力形式、重要なパス、確認なしには決して触れてはいけないもの、などです。Perchはそのフォルダで毎ターンこれを読み、自分のデフォルトよりも優先して従います。
Perchに何かを覚えるよう頼めば、Perchが自分でこれらに書き込むこともできますが、その結果は必ずあなたが開けるファイルになります。プロジェクトメモリについて、あなたに隠されることは何もありません。
ファイルに加えて、デスクトップのシェルは、そのターンのフォルダスコープのメタデータを提供します。プロジェクト名、あなたのメモ、メモリの概要、優先するルートです。これによりPerchは、ファイルを一つも読まないうちから、自分がどのプロジェクトにいるのかを把握できます。
第二層:永続メモリ
永続メモリは、フォルダ単位ではなくアカウント単位です。プロジェクトや利用環境を移っても変わらない、あなたについての情報を保持します。あなたの役割、慣例、結果の見せ方の好み、一度Perchに伝えたら繰り返さなくて済むはずの事実などです。
これは、すべてのプロンプトに貼り付けられる一つの塊ではありません。個別のカードの集まりで、毎ターン検索のステップを実行して、どのカードがトークンを使う価値があるかを判断します。
検索の仕組み
Perchは永続メモリを二つの方法で同時に検索し、その結果を組み合わせます:
- 埋め込みに対するセマンティック検索。言い回しが違っていても、現在のターンと同じ意味のカードを見つけます。
- スパースなキーワード検索。埋め込みではぼやけがちな、正確な用語、名前、識別子を捉えます。
二つのランキングは逆順位融合で統合されます。そのため、両方の手法でそこそこ上位に評価されたカードは、片方の手法でのみ高く評価されたカードより上位になります。統合されたスコアは、さらにカード自体の信頼度と書かれた時期の新しさによって調整され、上位の結果が取り込まれます。
埋め込みが使えない場合、検索は失敗するのではなく、段階的に機能を落とします。ハイブリッド、次にセマンティックのみ、次にスパースのみ、最後に単純な新しさ順です。再現率は下がりますが、ターンが壊れることはありません。
各カードが持つ情報
ターンに取り込まれる永続メモリのカードは、それぞれ独自のメタデータを伴います。これが、このシステムを魔法のようなものではなく、中身を調べられるものにしています:
- 種類とスコープ。どのような種類のメモリで、どの範囲に適用されるかを示します。
- 鮮度ラベルと古さのフラグ。古さのフラグは、確認せずに信頼すべきではない時点を過ぎたカードに付きます。
- 信頼度スコア。パーセンテージで表されます。
- 切り詰めフラグ。そのターンのメモリ予算に収めるために、カードを短縮する必要があった場合に付きます。
- 取り出された理由。検索のステップから引き継がれます。
第三層:修正からの学習
三つ目のシステムは、あなたが操作することのないものです。あなたがPerchの誤りを指摘すると、その修正はイベントとして記録されます。学習の記録はそのイベントを読み、そこから新しい恒久メモリを提案できます。
これが、設定ページに入力した内容を覚えているツールと、間違いを指摘されたことを覚えているツールとの違いです。Perchの誤りを一度指摘することが、Perchに教えるための想定された方法であり、その教訓を別の場所に書き留める必要はありません。
メモリがモデルに届く仕組み
三つのメモリシステムがあっても、その中身が実際にモデルのコンテキストに届かなければ意味がありません。難しいのは、コンテキストに限りがあることです。Perchはこれを、トークン予算のもとでの順序付きのレーンで処理します。
毎ターン、コンテンツは名前付きのレーンに展開され、予算を使い切るまで順番に取り込まれます。レーンには、プロジェクトメモリ、恒久メモリ、スレッドの証拠、ツールの証拠、ファイル、ツール、選択されたスキル、選択されたモデルが含まれます。さらに、モデル自身の出力のための予備が確保されているので、長い回答が自分のコンテキストのせいで途中で切れることはありません。
この仕組みで知っておく価値があるのは、次の二つの性質です:
- 取り込みは明示的です。何かがターンに入らなかった場合、それは黙って捨てられたのではなく、理由が記録された判断です。
- 各セクションに理由があります。取り込まれたコンテキストのそれぞれに、なぜそこにあるのかの短い説明が付き、スキップされたセクションにも、なぜ入らなかったのかが記録されます。
レーンとコンパクションは別のもの
Perchが何をもとに作業しているかを見る
取り込まれたセクションはすべて、レーン、ラベル、理由を伴っているため、デスクトップアプリはその全体を表示できます。Context Windowパネルはターンのコンテキストを行として表示し、永続メモリのカードはそれぞれ独立した行として、状態、鮮度、信頼度とともに表示されます。
これは、どのエージェントツールでもいずれ出てくる「なぜそうしたのか」という疑問への答えです。モデルに実際に何が与えられたかを見ることができます。
コントロールを保つ
プロジェクトメモリは、プレーンなファイルです。開く、編集する、削除する、プロジェクトのほかのファイルと一緒にバージョン管理にチェックインする、いずれも自由です。永続メモリはあなたのアカウントに紐づき、Webチャット、デスクトップアプリ、CLIのどこでもあなたについて回るので、ある利用環境でPerchが学んだことは、ほかの利用環境でも使えます。
新しい発言が古い発言と矛盾する場合、Perchは新しいほうを優先します。Perchの誤りを指摘することが更新の手段です。そのようにシンプルに使える設計です。

