Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

Mar 21, 2026 - 日記

Hermes Agent解説:FTS5+LLM要約で「使うほど賢くなる」永続メモリの仕組み

Hermes Agent解説:FTS5+LLM要約で「使うほど賢くなる」永続メモリの仕組み

AIエージェントを日常的に使っていると、「昨日教えたこと、もう忘れてるのか…」という場面に頻繁に出くわします。

自分の場合、Claude CodeやChatGPTでプロジェクト固有のルールを毎回説明し直すのが地味にストレスでした。セッションが切れるたびにリセットされる記憶。これは多くのAIエージェントが抱える根本的な問題です。

NousResearch (Hermesモデルファミリーの開発元)が2026年2月にリリースしたHermes Agent は、この「エージェントの健忘症」に正面から取り組んだオープンソースプロジェクトです。本記事では、その永続メモリの設計を中心に、何が新しいのかを整理します。

Hermes Agentとは?

Hermes Agentは、NousResearchが開発したMITライセンスのオープンソースAI エージェントです。「チャットボットラッパー」や「コーディング補助ツール」ではなく、サーバー上で自律的に動作し、使うほど賢くなるエージェント実行環境を目指しています。

主な特徴:

  • 永続メモリ: セッションを跨いで学習内容を保持
  • 自動スキル生成: 複雑なタスクの解法を自動でスキル化して再利用
  • マルチプラットフォーム: Telegram / Discord / Slack / WhatsApp / Signal / Email / CLIに対応
  • 200+モデル対応: OpenRouter、Nous Portal、OpenAI、Anthropic等を切り替え可能
  • 複数の実行環境: ローカル、Docker 、SSH、Modal、Daytona、Singularity

GitHub Starsは7,700超。単なるプロトタイプではなく、実用を意識した設計になっています。

メモリの3層構造

Hermes Agentのメモリ設計は3つの層で構成されています。ここが一番の特徴です。

第1層: 短期メモリ(セッション内)

アクティブな会話のコンテキストを管理します。LLM のコンテキストウィンドウに収まる範囲で情報を保持し、長くなりすぎた場合は /compress コマンドで圧縮できます。

これは他のエージェントでも一般的な仕組みですが、Hermes Agentの場合は次の第2層との連携が鍵です。

第2層: 長期メモリ(セッション跨ぎ)

SQLiteのFTS5(Full-Text Search 5)を使ったセッション検索と、LLMによる要約を組み合わせています。

具体的な仕組み:

  • 過去のセッション内容をSQLiteに保存
  • FTS5で全文検索可能な状態を維持
  • 定期的にLLMが内容を要約し、MEMORY.mdUSER.md に書き出す
  • 新しいセッション開始時に、関連する過去の記憶を自動で引き出す

MEMORY.md にはタスクや技術的な知識が、USER.md にはユーザーの好みや環境情報が蓄積されます。この分離はシンプルですが実用的です。

第3層: スキル化(経験の再利用)

ここが他のメモリフレームワークと一線を画すポイントです。

Hermes Agentは、複雑なタスクを完了した後、その解法を自動的に「スキル」として保存します。スキルは ~/.hermes/skills/ に格納され、類似のタスクに再度直面したときに自動で呼び出されます。

つまり、「記憶」ではなく「能力」として経験が蓄積される。単に「あの時こうやった」と覚えているだけでなく、「同じ種類の問題を解ける手順」として定着するわけです。

Mem0 / memUとの設計比較

以前の記事 でMem0とmemUのメモリ設計を比較しましたが、Hermes Agentはまた違ったアプローチを取っています。

観点Mem0memUHermes Agent
メモリ構造ハイブリッド(ベクトル+グラフ)3層(エピソード/セマンティック/手続き)3層(短期/長期/スキル)
検索方式ベクトル類似度+グラフ走査ハイブリッド検索FTS5全文検索+LLM要約
保存先ベクトルDB+グラフDB+SQLiteSQLite+ベクトルDBSQLite(FTS5)+ファイル
スキル化なし手続き記憶として概念化自動生成+再利用
利用形態ライブラリとして組み込みライブラリとして組み込み完全なエージェント実行環境
ライセンスApache 2.0MITMIT

大きな違いは、Mem0とmemUが「メモリライブラリ」であるのに対し、Hermes Agentは「メモリ機能を内蔵したエージェント実行環境」であることです。

Mem0は既存のアプリケーションに記憶機能を追加する用途に適しています。一方、Hermes Agentは「エージェントそのもの」を提供します。目的が違うので、単純な優劣はつけられません。

個人的に面白いと思ったのは、Hermes AgentがベクトルDBを使わずにFTS5で全文検索している点です。ベクトル検索は意味的な類似度には強いですが、具体的なコマンド名やエラーメッセージの検索にはFTS5のほうが正確です。エージェントの記憶として使う場合、「あのエラーメッセージの解決策」を引っ張り出すケースが多いので、この選択は理にかなっています。

agentskills.ioスタンダード

Hermes Agentのスキルシステムは agentskills.io というオープンスタンダードに準拠しています。

これは、Anthropicが策定しエージェント間でスキルを共有するためのオープン仕様で、Claude Code、OpenAI Codex、Gemini CLI、GitHub Copilot、Cursorなど26以上のプラットフォームに採用されています。Hermes Agentが自動生成したスキルを他のエージェントでも使えるようにしたり、コミュニティが作ったスキルをHermes Agentに取り込んだりできます。

70以上のバンドル・オプショナルスキル(MLOps、GitHubワークフロー、リサーチ等、15以上のカテゴリ)が用意されており、CLIから確認できます:

1
2
hermes
/skills

スキルの閲覧と管理はこのコマンドで行います。/skills を実行すると、バンドルスキルと自動生成されたスキルの一覧が表示されます。

セットアップ

インストールは思ったより簡単です。前提条件はGitだけで、Python 3.11とuvは自動でインストールされます。

対応OS: Linux、macOS、WSL2(Windowsネイティブは非対応)

インストールコマンド:

1
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

このスクリプトがPython 3.11、uv(パッケージマネージャ)、および依存パッケージを自動でセットアップします。

初期設定は対話式で進めます:

1
hermes setup

APIキーの設定(OpenRouter / Nous Portal / OpenAI等)とデフォルトモデルの選択を行います。

モデルの切り替えはセッション中でもできます:

1
/model openrouter:claude

コード変更なしでモデルを切り替えられるのは、複数のモデルを試したいときに便利です。

ゲートウェイ: マルチプラットフォーム対応

Hermes Agentの面白い設計の一つが「ゲートウェイ」です。Telegram、Discord、Slack等の各プラットフォームへのメッセージ配信を、1つのプロセスで統合管理します。

1
2
hermes gateway setup    # プラットフォーム認証情報を設定
hermes gateway start    # 統合メッセージングサービスを起動

gateway setup でTelegramのBotToken やDiscordのAPIキーを登録し、gateway start で一括起動します。ユーザーはどのプラットフォームからメッセージを送っても、同じエージェント(同じ記憶)とやり取りできます。

個人的には、Telegramから質問して、後でSlackから続きを聞ける、というのが実用的だと感じました。チャットプラットフォームに依存しない記憶の一貫性は、地味ですが重要です。

セキュリティと実行環境

自律的に動くエージェントである以上、セキュリティは重要です。Hermes Agentは以下の仕組みを提供しています:

  • コマンド承認システム: 危険なコマンドの実行前にユーザーの承認を求める
  • DMペアリング: チャットプラットフォーム上でのユーザー認証
  • コンテナ分離: Docker / Singularity / Modal での隔離実行
  • 読み取り専用ルートファイルシステム: コンテナ環境でのファイルシステム保護

特にDocker実行環境は、ローカル環境を汚さずにエージェントを動かしたい場合に便利です。

まとめ

Hermes Agentの設計で注目すべきポイントは3つです:

  1. FTS5+LLM要約の組み合わせ: ベクトルDBに依存せず、SQLiteだけで実用的な長期記憶を実現
  2. 経験のスキル化: 「覚えている」から「できるようになる」への進化
  3. プラットフォーム非依存の記憶: ゲートウェイ経由でどのチャットからでも同じ記憶にアクセス

「エージェントの記憶」は、今のAI開発で最もアクティブに研究されている領域の一つです。Mem0がベクトル+グラフDBハイブリッドのライブラリアプローチ、memUが3層アーキテクチャのフレームワークアプローチ、そしてHermes Agentが完全なエージェント実行環境アプローチ。それぞれ異なるレイヤーで問題を解こうとしています。

自分みたいに「エージェントに毎回同じことを説明するのが面倒」という人は、まずHermes Agentを試してみると、エージェントメモリの可能性が実感できると思います。

参考リンク