チュートリアル20:永続メモリ — 長期メモリ
チュートリアル20:永続メモリ — 長期メモリ — 公式ドキュメントに基づくわかりやすいガイド
これはHermes Agent公式チュートリアルシリーズの一部です。すべてのチュートリアルを見る
この機能を、机の上に貼った付箋だと思ってください。Hermes Agentは、あなたやあなたのプロジェクトに関する重要なことを書き留めておき、会話の間で忘れてしまわないようにします。新しいチャットを始めるたびに、同じことを繰り返して説明する必要はもうありません。
永続メモリとは何か?
通常、AIエージェントはセッションごとにまっさらな状態から始まります。会話が終わると、すべてを忘れてしまいます。永続メモリはそれを変えます。Hermes Agentは、あなたのコンピュータ上に2つの小さなテキストファイルを保持します。セッションの開始時にそれらを読み込むため、あなたの好みやプロジェクトの詳細、これまでに教えたことなどを即座に思い出すことができます。
ステップ1: 2つのメモリファイルを知る
エージェントのメモリは、~/.hermes/memories/ に保存されている2つのファイルに格納されています。
| ファイル | 保存内容 | サイズ制限 |
|---|---|---|
| MEMORY.md | エージェントの個人的なメモ — 環境に関する事実、規約、学習したこと | 2,200文字(約800トークン) |
| USER.md | あなたのプロフィール — 好み、コミュニケーションスタイル、期待すること | 1,375文字(約500トークン) |
この制限は意図的なものです。エージェントに重要なことだけを厳選して保持させることで、散らかった引き出しではなく、整理整頓されたノートのように機能させます。
ステップ2: プロンプトにメモリがどのように表示されるかを見る
各セッションの開始時に、エージェントは両方のファイルを読み込み、システムプロンプト内に固定スナップショットとして表示します。以下は、エージェントが「見ている」ものの例です。
══════════════════════════════════════════════
MEMORY (your personal notes) [67% — 1,474/2,200 chars]
══════════════════════════════════════════════
User's project is a Rust web service at ~/code/myapi using Axum + SQLx
§
This machine runs Ubuntu 22.04, has Docker and Podman installed
§
User prefers concise responses, dislikes verbose explanations
以下の詳細に注目してください。
- どのストア(MEMORY または USER PROFILE)かを示すヘッダー
- 使用率と文字数 — エージェントが残り容量を把握できるようにするため
- エントリは
§(節記号)で区切られています - エントリは複数行にすることができます
重要: このスナップショットはセッション開始時に一度だけ取得され、セッション中に変更されることはありません。エージェントがチャット中にメモリを更新した場合、変更はすぐにディスクに保存されますが、プロンプトには次のセッションまで表示されません。これにより、モデルのキャッシュを保持して処理を高速化しています。
ステップ3: エージェントは自分でメモリを管理する
エージェントは memory というツールを3つのアクションで使用します。
- add — 新しいメモリエントリを追加する
- replace — 既存のエントリを置き換える(
old_textを使用した部分文字列マッチングを使用) - remove — もはや関連性のないエントリを削除する(これも
old_textを使用)
メモリはすでにプロンプトに注入されているため、エージェントは常にそれを確認できるので、read アクションはありません。
エージェントがこのツールを使用する方法の簡単な例を次に示します。
memory action=add content="User prefers bullet points over paragraphs"
または、古い好みを置き換える場合:
memory action=replace old_text="User prefers concise responses" new_text="User prefers one-line answers with emojis"
ステップ4: メモリがいっぱいになったらどうなるか?
メモリは自動的に圧縮されません。書き込みが制限を超えると、memory ツールはエントリを黙って削除する代わりにエラーを返します。その後、エージェントは自分でスペースを確保します。同じターン内でエントリを統合または削除してから、再試行します。
また、replace も制限の対象であることに注意してください。エントリをより長いものに交換すると、依然としてオーバーフローする可能性があるため、新しいコンテンツを短くする(または別のエントリを削除する)必要があります。
ステップ5: Hermesホームディレクトリにつき1つのエージェント(重要!)
2つのエージェントプロセスを同じHermesホームディレクトリに向けないでください。メモリの書き込みは自動的に行われ、セッション開始時にシステムプロンプトに再読み込みされるため、1つのホームを共有する2つのライターは、互いのエントリを複合させて、どちらも作成していない混乱した状態にしてしまいます。メモリは設計上、プロファイルごとにスコープが設定されています。2番目のエージェントには、独自のプロファイルを与えてください。共有メモリが必要な場合は、代わりに外部メモリプロバイダーを使用してください。
まとめ
永続メモリにより、Hermes Agentはセッションをまたいであなたのことをシンプルかつ制限付きで記憶できます。MEMORY.md と USER.md という2つの小さなファイルには、厳選されたメモが保存され、セッション開始時に固定スナップショットとして注入されます。エージェントは memory ツールを使用してこれらのファイルを自分で管理し、文字数制限によって焦点を絞り続けます。覚えておいてください:ホームディレクトリにつき1つのエージェント、そしてスナップショットはセッション開始時にのみ更新されるということです。
次回予告: チュートリアル21 — スケジュールタスク:タイマーで自動実行される自動化の設定。
📖 公式ドキュメント
この記事は Hermes Agent の公式ドキュメントに基づいています:公式ドキュメント › user-guide/features/memory