Hermesigned by step.
まず、Hermes Agent を理解しカスタマイズするために必要なすべて。自己進化するスキル、3 層のメモリ、GEPA 最適化、そして 1 から 10 のエージェントが 24 時間 365 日稼働する仕組み。
Hermes Agent は 2 ヶ月で GitHub スター 90,000 を突破しました。開発者たちは、ワークフローを学習し、コンテキストを記憶し、24 時間稼働するパーソナル AI エージェントを静かに構築している。

あなたが使ってきた AI エージェントはすべて同じ問題を抱えている。セッションが終わるとすぐにすべてを忘れてしまう。
あなたのコーディングの好み、3 回も修正したプロジェクトの規約を修正したこと、昨日 10 分かけて解決した修正。すべて消える。次のセッションが変われば、また一からやり直しだ。
Nous Research の Hermes Agent は根本的に異なるアプローチを採用している。学習ループを備えており、以下のことを行う:
- セッションをまたいで記憶する
- 自身で再利用可能なスキルを書く
- バックグラウンドでそれらを整理する
- そして、GEPA と呼ばれる進化的エンジンを通じてオフラインで検証する
これら 3 つすべてを組み合わせたオープンソースエージェントは他にない。OpenClaw でさえも。
このガイドでは、この学習ループの仕組み、各メモリ層の役割、そしてすべてをゼロから設定する方法を説明する。
最後には、3 つの完全に分離されたエージェントがあなたのマシンで動作させることができる。プログラマー(Claude Code を使用する)、ディープリサーチャー、デザイナー。それぞれが独自の個性、メモリ、スキル、Telegram ボットを持つ。
これをチェックしてほしい:

セットアップ全体は数分で完了し、ここにあるすべてはあなた自身のハードウェアで再現可能だ。
注:このガイドのすべてのイラストは、このガイドの終わりまでにあなたが構築する Hermes エージェントの 1 つである Pixel によってデザインされました。読みながら注目しながら見てください。
始めよう!
このガイドの読み方
2 つのパート:理論編と実践編。
時間がない?「セットアップと実行に飛んでください。コマンドは単独で動作します。
しかし、理論を読む価値はある。スキルがどのように自己進化するか、メモリがどのように構成されるか、GEPA がいつ真価を発揮するかを知ることは、Hermes をメモ付きチャットボットとして使うことと、複合的に成長するものとして使うことの違いを生む。
これからの内容:
- Hermes Agent とは実際何か。概要と、OpenClaw との比較。
- どのように構築されているか。アーキテクチャを 1 つの図で。
- メモリの前に:エージェントとは誰か?SOUL.md、アイデンティティ層。
- メモリシステム。3 層、3 つの速度。
- 自己進化するスキル。エージェントが作成するプレイブックとキュレーター。
- GEPA。オフラインスキル最適化。
- セットアップと実行。インストール、Telegram、最初のエージェント。
- 複数のエージェントの実行。プロファイル、3 つのペルソナ、スケジュールされたダイジェスト。
- ニーズに合わせてエージェントをカスタマイズする。
Hermes とは何か、そしてアーキテクチャクチャ的に何が違うのか
1 行で言えば:使えば使うほど良くなるエージェント。
それを現実にしているのは、通常は分離されている 3 つの機能が 1 つのフレームワークに統合されていることだ:実行時のスキル学習、永続的な多層メモリ、オプションの重みトレーニングパイプライン。3 つすべてを備えたオープンソースエージェントは他にない。
オープンエコシステムで最も近い比較対象は OpenClaw だ。どちらも永続的で、メッセージングに適しているが、アーキテクチャの選択は正反対である。
Kilo ブログの明確な枠組みがそれを捉えている:「Hermes は学習エージェントの周りにゲートウェイをパッケージングする。OpenClaw はメッセージングゲートウェイの周りにエージェントをパッケージングする。」

どのように構築されているか
学習ループを理解する前に、Hermes がどのように構造化されているかの基本的なイメージが必要だ。
すべては run_agent.py スクリプト内の単一の AIAgent クラスを通る。CLI、メッセージングゲートウェイ、バッチランナー、IDE 統合:それらはすべて同じコアエージェントへのエントへのエントリポイントである。
これが、プラットフォームに依存しないストーリーを実際に機能させているものだ。

コアループは ReAct スタイルで同期型だ。システムプロンプトを構築し、圧縮が必要かチェックし、中断可能な API 呼び出しを行い、ツール呼び出しを実行し、再びループする。
後で重要になるいくつかの詳細:
- エージェントは 6 つの異なる場所でコマンドを実行できる。ローカルターミナル、Docker、SSH、Modal、Daytona、Singularity。同じコードで、設定を変更するだけ。他には、ラップトップからクラウド GPU サーバーに実行を移すことができる。
- ほとんどのモデルで動作する。翻訳層が任意のプロバイダーを 3 つの API 形式のいずれかにルーティングする。これにより、Claude から GPT、Gemini、ローカルの Ollama に 1 つのコマンドで切り替えても、何も壊れない。
- エージェントにはタスクあたり 90 ターンのハードキャップがある。これがないと、ループに陥ったエージェント(失敗する API を再試行したり、同じファイルを読み直したり)が静かにクレジットを消費してしまう。サブエージェントも同じ予算を共有するため、暴走する委任チェーンをすり抜けることはできない。
これで十分な足場ができた。次は面白い部分だ。
メモリの前に:エージェントとは誰か?
メモリと自己進化するスキルに入る前に、その両方の上位に位置する層がある:アイデンティティだ。
メモリはエージェントが知っていること。スキルは物事を行う方法。しかし、どちらもエージェントが現れたときにそれが誰であるかを教えてくれない。アイデンティティ層がなければ、すべてのエージェントは同じエージェントが違う帽子をかぶっているように感じられる。
Hermes はこれを 1 つのファイルで解決する:SOUL.md。
これは ~/.hermes/SOUL.md にあり、他のすべてが読み込まれる前に、システムプロンプトのスロット #1 を占める。エージェージェントの個性、トーン、コミュニケーションスタイル、ハードリミットを定義する。
SOUL.md は手動で作成され、静的だ。一度作成し、時間をかけて調整し、すべてのプロジェクトとすべてのセッションで一貫して保たれる。ファイルがない場合、Hermes は組み込みのデフォルトアイデンティティにフォールバックする。
これが自己改善のストーリーにとってなぜ重要なのか?なぜなら、その後に続くすべて(エージェントが書き込むメモリ、作成するスキル、知識を統合する方法)は、このアイデンティティのレンズを通して行われるからだ。
SOUL.md は固定された枠組みだ。メモリとスキルはその内部の可動部分である。
メモリシステム:3 層、3 つの速度
Hermes には単一の「メモリ」はない。3 つの層があり、それぞれ異なる目的のために設計されている。

層 1:2 つの小さな Markdown ファイル。
中核には、ディスクに保存された 2 つのファイルがある:
- MEMORY.md(最大 2,200 文字)には、環境、プロジェクトの規約、ツールの癖、学んだ教訓に関するエージェントのメモが含まれる。
- USER.md(最大 1,375 文字)には、あなたのプロファイルが含まれる:名前、コミュニケーションの好み、スキルレベル、避けるべきこと。
両方とも、セッションが開始されるときに凍結されたスナップショットとしてシステムプロンプトに挿入される。エージェントがセッション中に新しいメモリエントリを書き込んだ場合、その変更はすぐにディスクに保存されるが、次のセッションまでシステムプロンプトには表示されない。
メモリが約 80% 容量に達すると(システムプロンプトヘッダーにパーセンテージで表示される)、エージェントは統合する必要がある。
関連するエントリをより密度の高い、情報量の多いバージョンにマージし、有用な情報だけが残るようにする。
層 2:全文セッション検索。
すべての会話(CLI とメッセージング)は、全文検索機能付きで SQLite に保存される。エージェントは、過去数週間の会話をここから検索できる。
トレードオフは明らかだ:層 1 は常にコンテキスト内にあるが小さい。層 2 は無制限の容量を持つが、アクティブな検索と LLM による要約が必要。
重要な事実はメモリに保存される。その他はすべてオンデマンドで検索可能だ。
層 3:外部メモリプロバイダー(8 つのプラグイン)。
より深い)。
より深い永続メモリのために、Hermes には組み込みメモリと並行して動作する8 つのプラグ可能なプロバイダーが含まれている(組み込まれている(決して置き換えることはない)。同時にアクティブにできるのは 1 つだけだ。
外部プロバイダーがアクティブな場合、Hermes は各ターンの前に関連するメモリを自動的にプリフェッチし、各応答後に会話ターンを同期し、セッション終了時にメモリを抽出する。

自己進化するスキル:エージェントが自身のプレイブックを書く
メモリは事実を扱う。スキルは手順を扱う。
スキルは YAML フロントマター付きの Markdown ファイルであり、エージェントの手続的メモリとして機能する:知っていることではなく、物事を行う方法だ。
スキルの構造は次の通り:
トークンコストを低く抑えるために、スキルは段階的な開示を使用する:

- レベル 0:エージェントは名前と説明のみを見る(カタログ全体で約 3k トークン)
- レベル 1:実際にスキルが必要になったときに、完全なスキルコンテンツを読み込む
- レベル 2:スキル内の特定の参照ファイルにドリルダウンできる
自己改善ループ。
これが中核的な差別化要因だ。エージェントは skill_manage ツールを使用して、自律的に独自のスキルを作成する。スキル作成は以下の場合にトリガーされる:
- エージェントが複雑なタスク(5 回以上のツール呼び出し)を完了したとき
- エラーや行き詰まりに遭遇し、解決策を見つけたとき
- ユーザーがそのアプローチを修正したとき
- 重要なワークフローを発見したとき
つまり、ループは次のように機能する:エージェントが問題に遭遇する → 試行錯誤して解決する → 成功したアプローチを SKILL.md ファイルとして保存する → 次回同様の問題に遭遇したとき、スキルを読み込み、実証された手順に従うことで、アプローチを再発見する必要がなくなる。
ツールは 6 つのアクションをサポートしている:作成、パッチ(対象を絞った修正、トークン効率が良いため推奨)、編集(完全な書き換え)、削除、write_file、remove_file。

キュレーター:スキルのガベージコレクション。
メンテナンスがなければ、エージェントが作成したスキルは積み重なる。数十の狭く重複したプレイブックができ上がり、トークンを無駄にし、カタログを汚染する。
キュレーターはこれを処理するバックグラウンドメンテナンスシステムだ。これは非アクティブチェック(cron デーモンではない)で実行される:最後の実行から 7 日が経過し、エージェントが 2 時間以上アイドル状態の場合、エージェントのバックグラウンドフォークが自身のプロンプトキャッシュで起動し、アクティブな会話には触れない。
2 つのフェーズで動作する:
- 自動遷移(決定論的、LLM なし):30 日間使用されていないスキルは stale になる。90 日間使用されていないスキルはアーカイブされる。
- LLM レビュー(最大 8 回の反復):フォークされたエージェントがエージェント作成のすべてのスキルを調査し、スキルごとに保持、パッチ、統合、アーカイブを決定する。
2 つの重要な制約:
- キュレーターはバンドルまたはハブからインストールされたスキルには決して触れない。エージェントが作成したもののみ。
- 自動削除は決して行わない。最悪の結果は ~/.hermes/skills/.archive/ へのアーカイブされることで、1 つのコマンドで復元可能だ。
キュレーターの各パスの前に、Hermes はスキルディレクトリ全体の tar.gz スナップショットを取る。ロールバックは 1 つのコマンドで可能で、ロールバック自体も元に戻せる。
また、hermes curator pin <skill> で重要なスキルを固定し、アーカイブや削除から保護することもできる。パッチと編集は引き続き行われるため、エージェントは固定されたスキルをアンピンしなくても改善できる。

GEPA:実行トレースを使用したオフラインスキル進化
ここからが面白くなる。
エージェント内学習ループ(スキル作成 + キュレーター)には既知の弱点がある:
- エージェントは自己称賛する傾向がある。実際には、実際にはうまくいっていなくても、自分はうまくやったとほとんど常に思っている。コミュニティからのフィードバックでこれが確認されている。
- スキルを自動生成する同じシステムが、手動カスタマイゼーションをより悪いバージョンで上書きする可能性がある。
ここで GEPA が登場する。
GEPA(Genetic-Pareto Prompt Evolution)は Hermes ランタイムに組み込まれていない。これはコンパニオンリポジトリ(NousResearch/hermes-agent-self-evolution)にあり、オフライン最適化パイプラインとして動作する。ICLR 2026 Oral 論文として公開され、MIT ライセンス。
コアアイデア:エージェントに「うまくやったか?」と尋ねる代わりに、GEPA は実行トレースを読み取って失敗の理由を理解し、進化的探索を通じて対象を絞った改善を提案する。
パイプライン:
- Hermes リポジトリから現在のスキルを読み取る
- 読み取る
- 評価データセットを生成する(Claude Opus による合成テストケース、SQLite からの実際のセッション履歴、または手動でキュレートされたゴールデンセット)
- GEPA オプティマイザーを実行する:実行トレースを読み取る → 失敗点を理解する → 候補バリアントを生成する
- ルーブリックを使用した LLM-as-judge スコアリングで候補を評価する(バイナリの合格/不合格ではない)
- 制約ゲートを適用する:完全なテストスイートが 100% 合格すること、スキルが 15KB 未満であること、キャッシュ互換性が維持されること、意味目的が変わらないこと
- 最良のバリアントが Hermes リポジトリに対する PR として送られる。直接コミットされることはない。
GPU は不要。すべて API 呼び出しで動作する。コスト:最適化実行あたり約 $2-10。
これは最初はスキップできるが、壁に当たったときに微調整(RL/GRPO)に時間と費用をかけたくない場合に非常に効果的だ。

私は最近 GEPA に関する記事を書いた。
完全なファインチューニングや RL ベースのファインチューニングに移る前に試すのに最適な代替手段だ。

さて、まとめると:
SOUL.md がアイデンティティを設定する。ランタイムループが経験を捉える。キュレーターがライブラリをクリーンに保つ。GEPA がライブラリ内のものが実際に機能することを保証する。
これで理論は完了だ。それでは、あなたのマシンで動かしてみよう。
セットアップと実行
Linux、macOS、または WSL2。Python 3.11+ がインストーラーに含まれている。API ベースの使用には 8GB RAM で十分だ。
1 行インストール:
セットアップウィザードを実行する。プロバイダー、API ー、API キー、モデル、ツールを順に設定する:
ターミナルでチャットを開始する:
Telegram に接続する:
電話からエージェントと話したい場合は、ターミナルではなく、Telegram ボットに接続する。
@BotFather からボットトークンを取得し(/newbot を実行)、@userinfobot からあなたの Telegram ユーザー ID を取得する。
これで完了だ。動作するエージェントが手に入った:
~/.hermes/ の中身
インストール直後に、ホームディレクトリに新しいフォルダが作成される。
レイアウトを理解しておく価値がある。Hermes で行うすべてのことは、これらのパスのいずれかに影響を与えるから。
いくつかのファイルは詳しく見る価値がある。
- config.yaml は、秘密以外のすべての情報源だ。モデルの選択、ターミナルバックエンド、ツールの有効化、MCP サーバーはすべてここにある。
hermes config editで編集するか、hermes config set <key> <value>で一度に 1 つの値を設定する。 - .env はあなたの秘密情報を保持する。API キー、ボットトークン、パスワード。Hermes は秘密らしい値を自動的にここにルーティングする。
- SOUL.md は、他のすべての前に、システムプロンプトのスロット #1 である。アイデンティティ層、前述の通り。
- skills/ は、学習ループ全体が存在する場所だ。エージェントが作成するすべてのスキル、そしてインストールするすべてのものがここに配置される。
- state.db は、セッション検索を支える SQLite データベースだ。WAL モードで安全、FTS5 インデックス付き。これにより、「3 週間前に何について話しましたか?」が実際に機能する。
これらのほとんどを手動で編集することはないだろう。しかし、レイアウトを知っておくことで、他のすべてが理解しやすくなる。
新しいスキルの追加
Hermes は、18 のカテゴリにわたる 687 のスキルを持つ公式のスキルハブを維持している。内訳は次の通り:
- 87 の組み込みスキル(エージェントに同梱)
- 79 のオプションスキル(オンデマンドで有効化可能)
- 16 は Anthropic から(フロントエンドデザイン、pdf、pptx、docx、mcp-builder など)
- 505 は LobeHub から(より広範なコミュニティからの貢献)

また、任意の GitHub リポジトリをカスタムタップとして追加できる:
これは、チーム全体でスキルを共有したり、独自のプライベートコレクションを維持したりする方法だ。
1 から 10 のエージェントへ
1 つのエージェントでも問題ない。複数の特化したエージェントこそ、Hermes が面白くなるところだ。
Hermes には、プロファイルと呼ばれるファーストクラス機能がある。各プロファイルは、独自の設定、メモリ、スキル、セッション、SOUL.md を持つ完全に分離された Hermes インスタンスだ。デフォルトでは何も共有しない。
3 つ設定する:デザイナー、プログラマー、リサーチャー。
チームを作成する
--clone は、デフォルトのプロファイルの config と .env を開始点としてコピーします。
それぞれに独自の Telegram ボットを与える
各プロファイルには、BotFather からの独自のボットが必要だ。Telegram はトークンごとに 1 つの接続しか許可しないため、共有すると問題が発生する。
BotFather で /newbot を 3 回実行し、3 つのトークンを保存する。次に、プロファイルごとにゲートウェイウィザードを 1 回実行する:
セットアップは通常のエージェントとまったく同じで、BotFather で新しいボットを作成し、それぞれのエージェントに接続できる。
それぞれに SOUL.md で個性を与える
ここでエージェントが互いに真に異なるものになる。各プロファイルの SOUL.md を編集する。
デザイナー ~/.hermes/profiles/designer/SOUL.md:
これらの例をチェックしてほしい:

プログラマー ~/.hermes/profiles/programmer/SOUL.md:
リサーチャー ~/.hermes/profiles/researcher/SOUL.md:
プログラマーのカスタマイズ:Claude Code を通じて実行をルーティングする
プログラマーは、自分でコードを書くだけでなく、Claude Code CLI に実行を委任する方が面白い。Hermes がオーケストレーションし、Claude Code がファイル編集、コマンド実行、git 管理を行う。Hermes は結果を読み取り、次に何をするかを決定する。
これは、私が Claude Max サブスクリプションの上でエージェントを実行している方法でもある。別の API 別の API キーは不要。Claude Code は Max の認証情報を自動的に使用する。
セッションを開始し、この単一のアクティベーションプロンプトを送信する:
私はすでに Claude Max サブスクリプションを持っています。あなたは私のスタッフエンジニアとして、日々のコーディングタスクを手伝ってくれます。内部ではすべての実行に Claude Code を使用しています。それに応じて設定してください。
プログラマーは autonomous-ai-agents/claude-code スキルを自分でインストールし、claude が PATH にあることを確認し、コード実行にそれを使い始める。次のメッセージから、コーディング関連のこと(ファイルの読み取り、コードの記述、テストの実行、コミット、プッシュ)はすべて内部で Claude Code を通じてルーティングされる。
知っておくべき 2 つのこと:
- アクティベートする前に claude が PATH にあることを確認する。
which claudeが実際のバイナリパスを表示するはずだ。 - Claude Code にはプリントモード(ワンショット、高速、TUI なし)とインタラクティブモード(完全な tmux セッション)の両方がある。プログラマーはタスクに基づいて選択する。あなたが考える必要はない。
デザイナーのカスタマイズ:視覚スタイルを教える
デザイナーは、一般的な AI 出力ではなく、あなたのスタイルで画像を生成できるようになると、真に有用になる。パターン:参考デザインを提供し、それを学習させ、同じスタイルで新しい画像を生成するスキルを作成するように依頼する。
これは、自己改善ループをセットアップメカニズムとして使用している。手動でスキルを書く代わりに、エージェントに良い例を見せ、パターンを自分でエンコードするように依頼している。
デザイナーとのセッションを開始し、参考画像を貼り付ける(CLI ではドラッグアンドロップ、Telegram では添付)。次に、このプロンプトを送信する:
デザイナーは参考画像を研究し、SKILL.md を書き、Python スクリプトを生成し、~/.hermes/profiles/designer/skills/my-design-style/ に保存し、スクリプトが実行されることを確認する。
すでに hermes setup を実行し、プロバイダーとして OpenRouter を選択した場合、キーは --clone のおかげでデザイナープロファイルの .env にすでに存在する。そうでない場合は、一度追加する:
その後、デザイナーに新しいイラストを依頼すると、スキングすると、スキルがトリガーされる。あなたのスタイルの指紋に基づいたプロンプトを書き、OpenRouter を通じて Nano Banana を呼び出し、出力を保存する。
同じパターンは、スタイルが重要なあらゆる出力に機能する。参考コンテンツを提供し、エージェントにそのパターンを再現するスキルを構築するように依頼する。ニュースレターのイントロ、X のスレッド、コードレビューのコメント、一貫性が重要なものなら何でも。
スケジューリング:平易な英語で Cron
リサーチャーの SOUL.md は、毎日の Telegram ダイジェストを担当すると述べている。これは、あなたが依頼を覚えていなくても、独自のスケジュールで実行されるジョブがあることを意味する。それが Hermes cron の役割だ。
Hermes には組み込みのスケジューラが搭載されている。ゲートウェイデーモンは 60 秒ごとにティックし、分離されたエージェントセッションで実行し、指定されたメッセージングプラットフォームに出力を配信する。ジョブは再起動後も存続する。~/.hermes/cron/jobs.json に保存され、出力は ~/.hermes/cron/output/ に保存される。

面白い部分:cron 式を書く必要はない。何をしたいかを英語で説明すると、Hermes が変換する。
リサーチャーの毎日のイジェストを設定する
リサーチャーとのセッションを開き、このプロンプトを送信する:
リサーチャーは cronjob ツールを使用してジョブを作成し、配信先はデフォルトで現在のチャット(この場では Telegram)になり、スケジューラーが引き継ぎます。作成されたことを確認します:
次の実行予定時刻とともにジョブが表示されるはずです。明日の朝 8 時に、Telegram にダイジェストが届きます。それ以上の操作は必要ありません。
その他の便利なパターン
cron の構文は柔軟です。知っておく価値のあるバリエーションをいくつか紹介します:
- ワンショットのショットの遅延。
/cron add 30m "ビルドを確認するようにリマインド"は 30 分後に 1 回実行されます。 - 繰り返し間隔。
/cron add "every 2h" "サーバーステータスを確認"は 2 時間ごとに実行されます。 - 標準の cron 式。
/cron add "0 9 * * 1-5" "..."で正確な制御が可能。この場合、平日の 9 時です。 - スキルのアタッチメント。
/cron add "every 1h" "新しいフィードアイテムを要約" --skill blogwatcherは、プロンプトを実行する前にスキルを読み込みます。
ジョブをチェーンすることもできます。ある cron の出力は、context_from フラグを介して次の cron の入力になります。研究ステップが作成ステップにフィードするような、複数段階の自動化に便利です。
これで終わりです。
お読みいただきありがとうございます。コメントで、次に、次に取り上げてほしいトピックを教えてください。
ビデオで学ぶ方が好きなら、数日中に YouTube と X で完全な Hermes Agent のウォークスルーを公開します。
お楽しみに!
ではまた!





