LightVela

LightVelaドキュメント

概要

Hermes Agent があなたを覚えているのは、より大きなコンテキストウィンドウのためではなく、4つの協調する層を持つ長期記憶システムのおかげです:USER.md(1,375文字 / 約500トークン)は「あなたが誰であるか」をカバーし、MEMORY.md(2,200文字 / 約800トークン)は「私たちが一緒にやったこと」をカバーします。SQLite + FTS5 セッションアーカイブにより、数週間後でも任意の文章を正確に取り出すことが可能で、スキルは「この種のタスクをどのように処理すべきか」をカバーします。書き込みは、圧縮、チェックポイント、促し、明示的なユーザー指示という四つのタイミングでエージェントによって意図的に整理され、一方、呼び出しは三つの要素を組み合わせます:構造化されたデフォルト読み込み、正確な FTS5 マッチング、および LLM の意味的要約。つまり「あなたを覚えておくこと」を概念からエンジニアリングに変えるもの。


ほとんどのAIアシスタントが裏切る瞬間

それは答えを間違えたときではありません。あなたがこう言わなければならないときです:

「前回もこれを言ったんじゃなかった?」

コンテキストウィンドウは8kから200kや1Mにまで拡大しましたが、あなたを覚えておくことはより多くのトークンを詰め込むことでは決してありません:1つのセッション内で200kのコンテキストも、そのセッションが終わると消えてしまいます。エージェントに長期間あなたを覚えさせるには、3つの質問に答える必要があります:

  • 長期記憶に書き込む価値のあるものは何ですか?(書き込みゲートはどこですか?)
  • 記憶はどのような形で保存されるべきでしょうか、それによって数週間後にも見つけられるようにするには?
  • 何かを探す時、エージェントはベクトル類似度に頼るのでしょうか、それとも別の方法でしょうか?

ヘルメスは、完全な長期記憶システムでこの3つすべてに答えます。以下のセクションでは、これを5つの層に分けて説明します。


1. まず、「記憶する」とは何かを定義する

人間の観点では、「あなたを覚えている」には少なくとも3つの要素が含まれます:

  1. 自分が誰であるかを知ること — 名前、役割、好み、普段使うツールチェーン。
  2. 私たちが一緒に何をしてきたかを知ること — 話し合ったプロジェクト、出した結論、直面した落とし穴。
  3. あなたにどう対処すべきかを知ること — 短い答えが欲しいですか、それとも詳しい答えですか?まず結論、それともまず理由ですか?

大きなコンテキストウィンドウしか持たないモデルでも、単一の会話内でこの三つをすべて行うことはできますが、セッションが終了すると、1番と3番のポイントはリセットされます。

ヘルメスのアプローチ:これら3つのものをそれぞれ別の永続化レイヤーに押し込み、それぞれが適切に維持されるようにする — ポイント1はUSER.mdに、ポイント2はMEMORY.mdに、ポイント3はUSER.mdの設定フィールドとHonchoのユーザーモデリングによって共同で維持される。


2. 書き込み:エージェントはすべてを書き留めるのではなく、意図的に整理する

ヘルメスの長期記憶は「文章ごとの1エントリー」ではない。エージェントは4つの明示的な瞬間に記憶を整理して永続化する。

トリガー目的
圧縮コンテキストが限界に近づいたときは、まず現在のセッションから長期的に保持する価値のあるものを抽出し、その後コンテキストを圧縮します
チェックポイントサブタスクの完了やトピックの切り替えなどの節目で、意図的に記録します
ナッジシステムは定期的にエージェントに問いかけます:「ここに長期記憶に書き残す価値のあるものはありますか?」これにより、長時間のセッション内で情報が静かに消えていくのを防ぎます
明示的なユーザー指示ユーザーが「プロジェクトXでYを使っていることを覚えておいて」と言うと、それは高優先度の記憶書き込みとして認識されます

重要なポイント:何が長期記憶に入るかはエージェント自身が判断するのであり、すべてを保存するわけではありません。そのフィルターが記憶の質に関する最初の関門であり、すべての文を保存するチャット履歴との最も基本的な違いです。

具体的なコスト計算:そのフィルターがなければ、1日に50回やり取りするユーザーは、1年でおおよそ1800万トークンの生の会話を長期記憶に流し込むことになります。Hermesのアプローチでは、ほとんどの重要な事実を保持しながら、これを1%未満に圧縮します。


3. ストレージ: それぞれの役割を持つ4層

Hermesは長期記憶を4種類に分け、それぞれ異なる場所に明示的な容量上限を設定して保存します:

キャリア典型的な容量ロードのタイミング役割
ユーザープロファイルUSER.md約1,375文字 / 約500トークン各セッションあなたが誰であるか、役割、好み、通常のスタック、コミュニケーションスタイル
事実記憶MEMORY.md + memories/約2,200文字 / 約800トークン各セッションセッション間で再利用するイベント、決定、結論、事実
セッションアーカイブSQLite + FTS5全文検索インデックス上限なし(数か月分の履歴)クエリが一致したときに読み込まれる元の文は数週間後でも正確に取得可能
手続き記憶skills/ディレクトリ(SKILL.mdファイル単位でのKB規模シナリオ一致時に高優先ロード「この状況で私は何をすべきか」(このカテゴリ専用の記事で解説)

それ以外に、HermesはSOUL.mdも保持している — エージェント自身の性格記述である。これはエージェントの自己モデルに属し、ユーザーメモリではないが、ユーザーメモリと一緒に文脈の基盤を形成する。

なぜすべての層にハードキャップがあるのか?

ある人はこう質問する:もしコンテキストウィンドウがこれほど大きいのに、なぜUSER.mdは500トークンしか与えられないのか?

理由は三つある:

  1. システムプロンプト内の余分な1,000トークンごとに、1日50回の呼び出しで年間1,800万トークンが無駄になる — 深刻なコスト圧力。
  2. すべてのセッションで読み込まれるものは慎重に選ぶ必要がある — それはシステムプロンプトの一部であり、膨張は実際のタスクコンテキストを圧迫する。
  3. 上限はトレードオフを強いる — 容量が満杯のとき、何も自動的に削除されず、エージェントは統合を強いられる(セクション5参照)。

これがヘルメスの核心理念である: 「記憶すること」は「保存すること」ではなく、「意図的な選択の後に保存すること」である。

見落としてはいけないコンポーネントの一つ:Honcho

HermesはHonchoというコンポーネントも導入しており、これは弁証法的ユーザーモデリングを行います。簡単に言うと、会話からユーザーに関する再利用可能な情報を継続的に抽出し、それをUSER.mdの維持にフィードバックします。

構造化ファイルではうまく扱えない暗黙の好み(例:「このユーザーは午後3時以降にせっかちになる」や「このユーザーはフィラー言葉に異常に敏感」など)は、この純粋にLLM駆動の推論層によって補完されます。


4. リコール: 構造化、全文、セマンティック — 三つの柱

従来のRAGセットアップにおけるリコールは、ベクトル類似度に大きく依存しています。しかし、ベクトルだけでは2つの長年の問題に直面します:重要であることがクエリに似ていることを意味するわけではない、そして詳細が全文内で希薄化してしまう

Hermesのリコール戦略は、ハイブリッド検索に近いものです:

検索方法トリガーシナリオ典型的な遅延
構造化されたデフォルト読み込み会話開始時ごとほぼゼロ(システムプロンプトの一部です)
FTS5 全文検索ユーザーは特定の事実について尋ねます: "そのエラーは何でしたっけ?"一致に約20ms、ページ取得に約1ms
LLM セマンティック要約複数のエントリを統合する必要がある質問数秒、安価なモデル(Gemini Flash など)で実行

これら三つが一緒に働くことで、"あなたを覚えている" が単なる "私たちのベクトルは似ている" 以上のものになり—それは "実際にあなたの言ったことを知っている" になります。

付箋のたとえが役立ちます:USER.mdモニタの枠に貼ったメモ(見るたびに目に入る)、MEMORY.md机の上のジャーナル(中身がもっとあって、これも目に入る)、SQLite+FTS5はキャビネットの中のアーカイブボックス(めったに開けないけれど、いつでも見つけられる)、そしてSkillsは筋肉の記憶(瞬間が来たときに体がやるべきことを知っている)です。


5. 更新:記憶は生きており、台帳ではない

よく見過ごされがちなポイント:記憶は書き込み可能であるだけでなく、修正可能で廃棄可能でなければなりません。 Hermesにはここで三つの明確な戦略があります:

戦略1:競合が発生した場合、並列で追加するのではなく更新する

これにより分裂人格を避けることができます — 「ユーザーはVueを好む/ユーザーはReactに切り替えた/ユーザーは再びVueに戻った」という状態が並列で存在することはありません。Hermesは好みフィールドの古い値を上書きしますが、事実のエントリーは履歴を保持しつつ "現在の状態" フィールドを更新します。

戦略 2: 長期間参照されていないエントリーは低価値として重要度を下げる

MEMORY.md には上限(2,200文字)があります。これがいっぱいになると、反応は以下の通りです:

{
  "success": false,
  "error": "Memory at 2,100/2,200 chars. Consolidate now...",
  "current_entries": [...],
  "usage": "2,100/2,200"
}

これはエラーではなく、ゲート信号です:エージェントは再度書き込む前に、古く低価値のエントリーを統合または削除する取捨選択を行う必要があります。

戦略3:ユーザーが明示的に否定した情報は即座に削除される

「逆を記録する」のではなく、物理的な削除 — 世界モデルの一貫性を保つ

言い換えれば、Hermesは日記に追記するよりも生きたアーカイブを編集することに近い


6. これを実際に機能させるにはまだ一つ欠けていることがある

どれほど記憶メカニズムが優れていても、前提条件が一つある:エージェントが生き続けること

もし自分のノートパソコンにHermesをインストールすると、蓋を閉じるたびにスリープして、バックグラウンドの自己反省ループ(nudge)が停止します。マシンを切り替えたりOSを再インストールしたりすると、~/.hermes/を手動で移動する必要があり、FTS5インデックスも毎回最初から再構築しなければなりません。

ここでクラウドホスティングが本当に役立ちます。LightVelaクラウドホストされた Hermes Agent サービス です:

  • 専用のクラウドインスタンスが24時間365日オンラインで稼働し、MEMORY.md / USER.md / SQLiteセッションアーカイブがそこに常駐します;
  • バックグラウンドのnudgeループが動き続けるため、使用していないときでもエージェントは本当に成長します;
  • データはあなた専用のサーバーにのみ保持されます;
  • 電話、ノートパソコン、Telegram、Slack、Lark — すべてのチャンネルはあなたのことを知っている同じエージェントに届きます。

Hermesは「あなたを覚えている」という機能を実際に動作するエンジニアリング設計に変えました; LightVelaはその設計を毎日、あなたのすぐそばで実行させます。


重要なポイント

  • Hermesは意図的なキュレーション、階層化されたストレージ、ハイブリッドリコール、継続的な更新を通じてあなたを覚えます — より大きなウィンドウではありません。
  • 各レイヤーには明確な容量があります: USER.mdは500トークン、MEMORY.mdは800トークン、SQLiteには上限なし、Skillsはシナリオに基づくロードです。
  • 優れたエージェントの記憶システムは、日記に追加するのではなく、アーカイブを編集する — 上限はトレードオフを強いる。
  • LightVelaの目標は、この機能をコマンドラインから製品に移行させ、記憶されることをデフォルトの体験にすることである。

最終更新日: 2026-08-28