Skip to content

ClassCat® AI Research

クラスキャット – Hermes Agent, assistant-ui, AG-UI, Agno, LangChain/LangGraph

Menu
  • ホーム
    • ClassCat® AI Research ホーム
    • クラスキャット・ホーム
  • OpenAI API
    • OpenAI Python ライブラリ 1.x : 概要
    • OpenAI ブログ
      • GPT の紹介
      • GPT ストアの紹介
      • ChatGPT Team の紹介
    • OpenAI platform 1.x
      • Get Started : イントロダクション
      • Get Started : クイックスタート (Python)
      • Get Started : クイックスタート (Node.js)
      • Get Started : モデル
      • 機能 : 埋め込み
      • 機能 : 埋め込み (ユースケース)
      • ChatGPT : アクション – イントロダクション
      • ChatGPT : アクション – Getting started
      • ChatGPT : アクション – アクション認証
    • OpenAI ヘルプ : ChatGPT
      • ChatGPTとは何ですか?
      • ChatGPT は真実を語っていますか?
      • GPT の作成
      • GPT FAQ
      • GPT vs アシスタント
      • GPT ビルダー
    • OpenAI ヘルプ : ChatGPT > メモリ
      • FAQ
    • OpenAI ヘルプ : GPT ストア
      • 貴方の GPT をフィーチャーする
    • OpenAI Python ライブラリ 0.27 : 概要
    • OpenAI platform
      • Get Started : イントロダクション
      • Get Started : クイックスタート
      • Get Started : モデル
      • ガイド : GPT モデル
      • ガイド : 画像生成 (DALL·E)
      • ガイド : GPT-3.5 Turbo 対応 微調整
      • ガイド : 微調整 1.イントロダクション
      • ガイド : 微調整 2. データセットの準備 / ケーススタディ
      • ガイド : 埋め込み
      • ガイド : 音声テキスト変換
      • ガイド : モデレーション
      • ChatGPT プラグイン : イントロダクション
    • OpenAI Cookbook
      • 概要
      • API 使用方法 : レート制限の操作
      • API 使用方法 : tiktoken でトークンを数える方法
      • GPT : ChatGPT モデルへの入力をフォーマットする方法
      • GPT : 補完をストリームする方法
      • GPT : 大規模言語モデルを扱う方法
      • 埋め込み : 埋め込みの取得
      • GPT-3 の微調整 : 分類サンプルの微調整
      • DALL-E : DALL·E で 画像を生成して編集する方法
      • DALL·E と Segment Anything で動的マスクを作成する方法
      • Whisper プロンプティング・ガイド
  • Gemini API
    • Tutorials : クイックスタート with Python (1) テキスト-to-テキスト生成
    • (2) マルチモーダル入力 / 日本語チャット
    • (3) 埋め込みの使用
    • (4) 高度なユースケース
    • クイックスタート with Node.js
    • クイックスタート with Dart or Flutter (1) 日本語動作確認
    • Gemma
      • 概要 (README)
      • Tutorials : サンプリング
      • Tutorials : KerasNLP による Getting Started
  • Keras 3
    • 新しいマルチバックエンド Keras
    • Keras 3 について
    • Getting Started : エンジニアのための Keras 入門
    • Google Colab 上のインストールと Stable Diffusion デモ
    • コンピュータビジョン – ゼロからの画像分類
    • コンピュータビジョン – 単純な MNIST convnet
    • コンピュータビジョン – EfficientNet を使用した微調整による画像分類
    • コンピュータビジョン – Vision Transformer による画像分類
    • コンピュータビジョン – 最新の MLPモデルによる画像分類
    • コンピュータビジョン – コンパクトな畳込み Transformer
    • Keras Core
      • Keras Core 0.1
        • 新しいマルチバックエンド Keras (README)
        • Keras for TensorFlow, JAX, & PyTorch
        • 開発者ガイド : Getting started with Keras Core
        • 開発者ガイド : 関数型 API
        • 開発者ガイド : シーケンシャル・モデル
        • 開発者ガイド : サブクラス化で新しい層とモデルを作成する
        • 開発者ガイド : 独自のコールバックを書く
      • Keras Core 0.1.1 & 0.1.2 : リリースノート
      • 開発者ガイド
      • Code examples
      • Keras Stable Diffusion
        • 概要
        • 基本的な使い方 (テキスト-to-画像 / 画像-to-画像変換)
        • 混合精度のパフォーマンス
        • インペインティングの簡易アプリケーション
        • (参考) KerasCV – Stable Diffusion を使用した高性能画像生成
  • TensorFlow
    • TF 2 : 初級チュートリアル
    • TF 2 : 上級チュートリアル
    • TF 2 : ガイド
    • TF 1 : チュートリアル
    • TF 1 : ガイド
  • その他
    • 🦜️🔗 LangChain ドキュメント / ユースケース
    • Stable Diffusion WebUI
      • Google Colab で Stable Diffusion WebUI 入門
      • HuggingFace モデル / VAE の導入
      • LoRA の利用
    • Diffusion Models / 拡散モデル
  • クラスキャット
    • 会社案内
    • お問合せ
    • Facebook
    • ClassCat® Blog
Menu

Hermes エージェント☤ 入門 : 永続メモリ

Posted on 08/05/2026 by Masashi Okumura

Hermes Agent は、セッション間で永続化される、制約付き、整理された (curatd) メモリを備えています。これにより、ユーザーの設定、プロジェクト、環境、そして学習した内容を記憶することができます。

Hermes エージェント☤ 入門 : 機能 – コア : 永続メモリ

作成 : Masashi Okumura (@classcat.com)
作成日時 : 08/05/2026
バージョン : Hermes Agent v0.20.0 (2026.8.3)

* 本記事は hermes-agent.nousresearch.com/docs の以下のページを参考にしています :

  • Features – Core : Persistent Memory

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。

 

 

Hermes エージェント☤ 入門 : 機能 – コア : 永続メモリ

Hermes Agent は、セッション間で永続化される、制約付き、整理された (curatd) メモリを備えています。これにより、ユーザーの設定、プロジェクト、環境、そして学習した内容を記憶することができます。

 

How It Works

エージェントのメモリは、以下の 2 つのファイルで構成されています :

  • (ファイル – 目的 – 文字数制限)

  • MEMORY.md – エージェントの専用メモ ― 環境に関するファクト、慣習、学んだこと – 2,200 文字 (~800 トークン)

  • USER.md – ユーザプロファイル – ユーザ設定、コミュニケーション・スタイル、要望 – 1,375 文字 (~500 トークン)

どちらも ~/.hermes/memories/ に保存され、セッション開始時に凍結されたスナップショットとしてシステムプロンプトに注入されます。エージェントは memroy ツールを使用して自身のメモリを管理します – エントリの追加、置換、削除を行うことができます。

 

システムプロンプトでメモリがどのように配置されるか

すべてのセッションの開始時に、メモリエントリはディスクからロードされ、frozen ブロックとしてシステムプロンプトにレンダリングされます :

══════════════════════════════════════════════
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) かを示すヘッダ

  • 使用率と文字数、エージェントが容量を把握するため

  • § (セクション記号) で区切られた個々のエントリ

  • エントリは複数行にすることができます

凍結スナップショットパターン : システムプロンプト注入はセッション開始時に一度だけキャプチャされ、セッションの途中で変更されることはありません。これは意図的なものです – LLM のプレフィックスキャッシュをパフォーマンスのために保持します。エージェントがセッション中にメモリエントリを追加/削除すると、変更は直ちにディスクに永続化されますが、次のセッションが開始されるまでシステムプロンプトには配置されません。ツールの応答は常に最新の状態を示します。

 

メモリツールのアクション

エージェントは、以下のアクションでメモリツールを使用します :

  • add (追加) — 新しいメモリエントリを追加します

  • replace (置換) — 既存のエントリを更新されたコンテンツに置き換えます (old_text による部分文字列マッチングを使用)

  • remove (削除) — もはや関係がないエントリを削除します (old_text による部分文字列マッチングを使用)

read (読み取り) 操作は不要です – メモリの内容はセッション開始時にシステムプロンプトに自動的に注入されます。エージェントはそのメモリを会話コンテキストの一部として認識します。

 

部分文字列マッチング

replace と remove アクションでは、短い一意の部分文字列マッチングを使用します – エントリのテキスト全体は必要ありません。old_text パラメータには、正確に 1 つのエントリを識別する、一意の部分文字列である必要があります :

# If memory contains "User prefers dark mode in all editors"
memory(action="replace", target="memory",
       old_text="dark mode",
       content="User prefers light mode in VS Code, dark mode in terminal")

部分文字列が複数のエントリにマッチする場合、より具体的な一致条件を求めるエラーが返されます。

 

2 つのターゲットの説明

memory – エージェントのパーソナルメモ

環境、ワークフロー、および学習したレッスンについて、エージェントが覚えておく必要がある情報 :

  • 環境情報 (OS、ツール、プロジェクト構造)

  • プロジェクトの慣習と設定

  • 検出したツールの癖 (quirks) と回避策

  • 完了したタスク日誌のエントリ

  • 機能したスキルとテクニック

 

user — ユーザープロフィール

ユーザーのアイデンティティ、好み、コミュニケーション・スタイルに関する情報 :

  • 名前、役割、タイムゾーン

  • コミュニケーションの好み (簡潔 vs 詳細か、フォーマットの好み)

  • 個人的にイライラすること (Pet peeves) や避けたいこと

  • ワークフローの習慣

  • 技術スキルレベル

 

What to Save vs Skip

(積極的に) 保存すべき項目

エージェントは自動的に保存します – ユーザーが指示する必要はありません。エージェントは以下を学習した際に保存します :

  • ユーザー設定 : “I prefer TypeScript over JavaScript” → user に保存

  • 環境情報 : “This server runs Debian 12 with PostgreSQL 16” → memory に保存

  • 修正事項 : “Don’t use sudo for Docker commands, user is in docker group” → memory に保存

  • 規約 : “Project uses tabs, 120-char line width, Google-style docstrings” → memory に保存

  • 完了したワーク : “Migrated database from MySQL to PostgreSQL on 2026-01-15” → memory に保存

  • 明示的なリクエスト : Remember that my API key rotation happens monthly” → memory に保存

 

スキップすべき情報

  • 自明な/明白な情報 : “User asked about Python” — 曖昧すぎて役に立たない

  • 簡単に再発見できる事実 : “Python 3.12 supports f-string nesting” – これは Web 検索できます

  • 生データダンプ : 大きなコードブロック、ログファイル、データテーブル – メモリ容量を超えます

  • セッション固有の一時的な情報 : 一時ファイルパス、単発のデバッグコンテキスト

  • コンテキストファイルに既に含まれている情報 : SOUL.md と AGENTS.md の内容

 

容量管理

メモリは、システムプロンプトを束縛し続けるために、厳格な文字数制限が設けられています :

  • (ストア – 制限 – 一般的なエントリ数)

  • memory – 2,200 文字 - 8-15 エントリ

  • user – 1,375 文字 – 5-10 エントリ

 

What Happens When Memory is Full

制限を超えるエントリを追加しようとすると、ツールはエラーを返します :

{
  "success": false,
  "error": "Memory at 2,100/2,200 chars. Adding this entry (250 chars) would exceed the limit. Consolidate now: use 'replace' to merge overlapping entries into shorter ones or 'remove' stale or less important entries (see current_entries below), then retry this add — all in this turn.",
  "current_entries": ["..."],
  "usage": "2,100/2,200"
}

エージェントは次に以下の手順を実行します :

  1. (エラー応答に示される) 現在のエントリを読み込む

  2. 削除または統合可能なエントリを特定する

  3. 置換機能を使用して、関連するエントリをより短いバージョンにマージする

  4. そして、新しいエントリを追加する

ベストプラクティス : メモリ使用率が 80% を超えた場合 (システムプロンプトのヘッダーに表示されます)、新しいエントリを追加する前に既存のエントリを統合してください。例えば、”project uses X” という 3 つの別々のエントリを 1 つの包括的なプロジェクト説明エントリに統合します。

 

良いメモリ・エントリの具体例

簡潔で情報密度の高いエントリが最善に機能します :

# Good: Packs multiple related facts
User runs macOS 14 Sonoma, uses Homebrew, has Docker Desktop and Podman. Shell: zsh with oh-my-zsh. Editor: VS Code with Vim keybindings.

# Good: Specific, actionable convention
Project ~/code/api uses Go 1.22, sqlc for DB queries, chi router. Run tests with 'make test'. CI via GitHub Actions.

# Good: Lesson learned with context
The staging server (10.0.1.50) needs SSH port 2222, not 22. Key is at ~/.ssh/staging_ed25519.

# Bad: Too vague
User has a project.

# Bad: Too verbose
On January 5th, 2026, the user asked me to look at their project which is
located at ~/code/api. I discovered it uses Go version 1.22 and...

 

重複防止

メモリシステムは、完全に重複するエントリを自動的に拒否します。既に存在するコンテンツを追加しようとすると、”no duplicate added” メッセージとともに成功が返されます。

 

セキュリティスキャン

メモリエントリはシステムプロンプトに注入されるため、受け入れられる前にインジェクション (攻撃) およびエクスフィルトレーション (exfiltration, 情報漏洩) パターンがスキャンされます。脅威パターン (プロンプトインジェクション、認証情報エクスフィルトレーション、SSH バックドア) にマッチするコンテンツや、不可視の Unicode 文字を含むコンテンツはブロックされます。

 

セッション検索

MEMORY.md と USER.md以外にも、エージェントは session_search ツールを使用して過去の会話を検索できます。

すべての CLI およびメッセージング・セッションは、FTS5 全文検索を備えた SQLite(~/.hermes/state.db) に保存されます。検索クエリは、データベースから実際のメッセージを返します – LLM による要約や切り捨て (truncation) は行われません。エージェントは、アクティブメモリに存在しない場合でも、数週間前に議論した内容を見つけられます。また、エージェントは、見つけたセッション内で前後にスクロールすることもできます。

hermes sessions list    # Browse past sessions

3 つの呼び出し形状 (発見/スクロール/ブラウズ)と応答形式については、Session Search Tool を参照してください。

 

session_search vs メモリ

機能 永続メモリ セッション検索
容量 総計 約1,300トークン 無制限 (全セッション)
速度 即時 (システムプロンプト内) FTS5クエリ 約20ms、スクロール 約1ms
コスト 全プロンプトでトークンコスト 無料 – LLM 呼び出しなし
ユースケース 重要な情報が常時利用可能 過去の特定の会話を検索
管理 エージェントが手動でキュレーション 自動 – 全セッションを保存
トークンコスト セッションごとに固定 (約1,300トークン) オンデマンド (必要な時に検索)

メモリ は、常にコンテキストの中で参照されるべき重要なファクトを記憶するためのものです。セッション検索 は、”did we discuss X last week?” といった、エージェントが過去の会話から具体的な内容を思い出す必要があるクエリに対応するためのものです。

 

学習の軌跡(/journey)

学習の軌跡 (learning journey) は、Hermes が学んだすべてのことを時系列で表示するものです – 保存されたスキルや記憶のエントリが時間とともにプロットされ (古いものが一番上、新しいものが一番下)、ビルドアップ (学習の過程) を再生可能な「星座状グラフ」のシークバーも備えています。同じグラフデータに基づいて、以下の 3 つの UI が駆動されます :

  • 従来の CLI / スタンドアロン — `hermes journey`(エイリアス: `hermes learning`, `hermes memory-graph`) は、ターミナルにタイムラインを表示します。フラグ: –play はビルドアップをアニメーション表示し (–fpsで調整可能)、–width/–height はレンダリングサイズをオーバーライド、–no-color は色を無効、–json は生のグラフ・ペイロードをダンプします。

  • TUI — /journey (別名:/learning, /memory-graph) は、タイムラインをオーバーレイ (重ね合わせ表示) として開きます。

  • デスクトップ・アプリ — /journey は、スターマップ / memory-graph パネルを開きます。これは、同じノードをインタラクティブに視覚化したものです。

表示するだけでなく、journey はエルメスが学んだことを 切り捨て、修正する 場でもあります :

  • (コマンド – What it does)

  • `hermes journey list` – ノード ID の一覧 — スキル名とメモリチャンクの memory:<source>:<index>

  • `hermes journey delete <node> [-y]` – ノードを削除します。スキルはアーカイブされ (復元可能)、メモリチャンクは削除されます。-y を指定すると確認がスキップされます。

  • `hermes journey edit <node>` – $EDITOR でノードのコンテンツ(スキルの SKILL.md またはメモリチャンク)を開きます。

 

設定

# In ~/.hermes/config.yaml
memory:
  memory_enabled: true
  user_profile_enabled: true
  memory_char_limit: 2200   # ~800 tokens
  user_char_limit: 1375     # ~500 tokens
  write_approval: false     # false = write freely (default) | true = require approval

 

以上





クラスキャット

最近の投稿

  • Hermes エージェント☤ 入門 : 永続メモリ
  • Hermes エージェント☤ 入門 : キュレーター
  • Hermes エージェント☤ 入門 : スキル・ハブ
  • Hermes エージェント☤ 入門 : 言語サーバー・プロトコル (LSP)
  • Hermes エージェント☤ 入門 : スキル

タグ

AG2 (14) Agno (46) Agno 2.x (22) assistant-ui (19) AutoGen (13) ClassCat Press Release (20) ClassCat TF/ONNX Hub (11) Cursor (20) DGL 0.5 (14) Edward (17) FLUX.1 (16) Gemini (20) Hermes Agent (13) HuggingFace Transformers 4.5 (10) HuggingFace Transformers 4.29 (9) Keras 2 Examples (98) Keras 2 Guide (16) Keras 3 (10) Keras Release Note (17) Kubeflow 1.0 (10) LangChain (45) LangChain v1.0 (10) LangGraph (24) MediaPipe 0.8 (11) Model Context Protocol (16) NNI 1.5 (16) OpenAI Cookbook (13) OpenAI platform (10) OpenAI platform 1.x (10) TensorFlow 2.0 Advanced Tutorials (33) TensorFlow 2.0 Advanced Tutorials (Alpha) (15) TensorFlow 2.0 Advanced Tutorials (Beta) (16) TensorFlow 2.0 Guide (10) TensorFlow 2.0 Guide (Alpha) (16) TensorFlow 2.0 Guide (Beta) (9) TensorFlow 2.0 Release Note (12) TensorFlow 2.0 Tutorials (20) TensorFlow 2.0 Tutorials (Alpha) (14) TensorFlow 2.0 Tutorials (Beta) (12) TensorFlow 2.4 Guide (24) TensorFlow Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2026年8月
月 火 水 木 金 土 日
 12
3456789
10111213141516
17181920212223
24252627282930
31  
« 7月    
© 2026 ClassCat® AI Research | Powered by Minimalist Blog WordPress Theme