御覧いただきありがとうございます。

ガジェットスキーです。

2023年11月に一条工務店で家を建てました。

妻、子供2人、義両親の6人で暮らしています。

家での生活を便利にするために奮闘中です。

もしよろしければご覧ください

 

前回の続きです。

 

ローカルAI開発環境構築記① | PCなしじゃ生きられない人のブログ

 

 

ローカルAI開発環境構築記② | PCなしじゃ生きられない人のブログ

 

 

ローカルAI開発環境構築記③ | PCなしじゃ生きられない人のブログ

 

 

自宅でローカルでAI環境を作りたくなってきたので作った時の内容をまとめています。

 

【Hermes Agent × LiteLLM × Lemonade】環境構築編④


 

 


1. はじめに

前回はLiteLLMの環境構築について紹介しました。

 

今回はHermesAgentの環境構築について解説します。

 

 


2. 構成のおさらい

前回のおさらいですが、今回構築する環境は次のようになります。

Hermes Agent 【Docker】
        │
        ▼
    LiteLLM 【Docker】
        │
        ▼
    Lemonade 【Windows】
        │
        ▼
llama.cpp (Vulkan)【Windows】
        │
        ▼
Qwen3-Coder-30B-A3B【Windows】

まとめると以下になります。

 

項目 動作先
Hermes Agent Docker
LiteLLM Docker
Lemonade
llama.cpp (Vulkan)
Qwen3-Coder-30B-A3B
Windows

 

というように少し変則的です。

 

前回お話ししたようにLemonadeはDocker DesktopだとAMD系のGPUを認識しないため、Windows環境です。

 

ではHermes Agentの環境構築の内容に入っていきます。

 


3. Hermes Agent環境構築

3.1 Hermes Agentの機能のおさらい

Hermes AgentはCLI型のAIエージェントです。

一般的なCLIツールと異なり、

  • コードを書く
  • ファイルを読む
  • ディレクトリを探索する
  • コマンドを実行する

これらをAIが自律的に行います。

 

そのため環境に常駐し、cronによる自動起動や、slack等の外部メッセージからの指示で動作することが可能です。

 

似たようなツールにOpenClawがありますが、OpenClawが既存のスキルを保持しているのに対し、

 

Hermes agentは自己改善ループにより、自分自身でスキルを自動生成していくというところに特徴があります。

 

Hermes agentは使うことで育てていくとコンセプトになります。

 

3.2 Docker環境のフォルダ構成

というわけで今回のLiteLLMの構成です。

 

今回LiteLLMはDockerで起動するため、Docker composeファイルを作成します。

 

まずフォルダ構成です。今後の説明は以下の構成を前提としてお話します。

 

{任意のフォルダ}

└─ Infrastructure 

         ├─ Docker

         │    ├─ docker-compose.yml  

         │    ├─ .env          ←APIキー配置用

         │    └─ litellm        ←Dockerで永続させるボリューム

         │            └─ config.yam    ←Dockerで永続させる設定

         └─ Hermes

                  └─ config                     ←Dockerで永続させるボリューム

 

3.2 Hermes AgentのDocker環境構築

今回Hermes AgentはDockerで起動するため、Docker composeファイルを作成します。

各設定についてはコメントで記載しています。

 

-------------------------------------------------------------

services:

 

  {前回のLiteLLMの設定}

 

  hermes-agent:

    #今回使用するHermes Agentの公式イメージです

    image: nousresearch/hermes-agent:latest

 

    #コンテナ名です。自由に名前を付けても大丈夫です

    container_name: hermes-agent

 

    #終了ステータスに関わらず、このコンテナが終了した場合は再起動するようにします

    restart: unless-stopped

 

    #この後設定するLiteLLMの後に起動するようにする設定です

    #Hermes AgentがLiteLLMにアクセスするため、LiteLLMの後に起動する必要があります

    depends_on:

      - litellm

 

    #Dockerの8642ポートをWindows側の8642ポートからアクセスできるようにする設定です

    #Hermes AgentにWindows側からアクセスするために開けておきます

    ports:

      - "8642:8642"

 

    #Linux環境などでコンテナ内からホスト側のサービスにアクセスするための設定です

    extra_hosts:

      - "host.docker.internal:host-gateway"

 

    environment:

      #Hermes Agentからみた使用するモデル名です。前回のLiteLLMで設定したモデル名と同じにします。

      HERMES_MODEL: {モデル名}

 

      #OpenAI互換のURLです。今回はHermes AgentはLiteLLMに接続するためLiteLLMのURLです。

      OPENAI_BASE_URL: http://litellm:4000/v1

 

      #OpenAI互換キーです。今回はローカルのLLMにするため、キーの名前はDon’t Careです。

      OPENAI_API_KEY: local

 

      #OpenAIのモデルです。configで設定するため不要かもしれません。

      #前回のLiteLLMで設定したモデル名と同じにします。

      OPENAI_MODEL: {モデル名}

 

      #OpenAIのモデルです。configで設定するため不要かもしれません。

      OPENAI_PROVIDER: openai

 

      #Hermes Agentが編集権限が保持するrootフォルダです。

      #この配下のみHermes agentがアクセスできるようになります。

      HERMES_WRITE_SAFE_ROOT: {docker上フォルダ}

 

    #Hermes Agent側から見えるWindows側ののフォルダの設定です。

    volumes:

      - {Windows上のHermes Agentに見せたいフォルダ}:{Docker上のパス}

 

    #Hermes Agentの作業フォルダです。ここがHermes Agentからみたホームディレクトリになります。

    working_dir: {Docker上のフォルダ}

 

    #標準入力(stdin)を開いたままにする設定です。

    #Hermes Agentは対話型なので、Hermesからの問い合わせに対し、CLIで入力できるように有効にしておきます。

    stdin_open: true

 

    #コンテナに仮想端末を割り当てる設定です。

    #Hermes Agentは対話型で正常に動作するためのおまじないみたいなものです。

    tty: true

 

    #コンテナ内でHermes gatewayを起動するための設定です。

    command: gateway run

-------------------------------------------------------------

 

ここまで設定したらdocker-composeファイルがあるパスで、

 

 docker-compose up -d  

 

を実行することでHermes AgentがDockerで起動できるようになります。

 

3.3 Hermes AgentのConfig設定

Hermes Agentの対話側の設定が可能です。

 

今回はDockerのコンテナの中に入って直接設定します。

 

Dockerが起動している状態で

 

 docker exec -it hermes-agent bash

 

を実行することでコンテナ内に入ります。

 

そこで

 

 hermes setup

 

を実行すると対話側の設定が開始されます。

 

まずはモデルのProvierの設定です。

 

ここまでの設定がうまくいっていれば、下記のようにLiteLLMが見えるようになっているはずです。

 

 

ここを選ぶとLiteLLMからアクセス可能なモデルが選択されます。

下記の図では今回別途フォールバック先も含まれていますが、LiteLLMで設定したモデルが見えていればよいです。

 

 

次にHermes Agentが実行するterminal環境です。

今回はDocker上で動いているのでDocker上のローカルで動作させるため、Localを選択します。

 

 

次は外部からの指示を出すための通信手段の設定です。

ここは任意で設定すればよいですが、私は今回は何も設定しません。

 

 

次にHermes Agentが使えるツールの設定を行います。

 

 

 

各設定できるようになることを以下にしめします。

 

Tool できるようになること 具体例
🔍 Web Search & Scraping インターネット上の情報を検索・取得できる 公式ドキュメントを検索する
GitHubの情報を調査する
Webページの内容を取得する
ライブラリの最新仕様を調べる
🌐 Browser Automation WebブラウザをAI自身が操作できる Webページを開く
リンクをクリックする
フォームへ文字を入力する
ページをスクロールする
Webサイト上の操作を自動化する
💻 Terminal & Processes OSのターミナルやプロセスを操作できる PowerShell / Bashなどのコマンドを実行する
Gitを操作する
Dockerを操作する
Unity関連のコマンドを実行する
プログラムを起動する
プロセスを確認・管理する
📁 File Operations ファイルやディレクトリを読み書き・編集・検索できる ファイルを読む
新しいファイルを作る
既存ファイルを編集する
パッチを適用する
ファイルを検索する
コードを修正する
⚡ Code Execution コードを実際に実行して結果を確認できる Pythonなどのコードを実行する
計算する
アルゴリズムを検証する
コードの動作を確認する
データを加工する
👁️ Vision / Image Analysis 画像をAIに解析させることができる スクリーンショットを解析する
UI画像を確認する
画像内の文字や構造を確認する
Unityの画面を解析する
画像に写っている問題を調査する
🎬 Video Analysis 動画をAIに解析させることができる 動画の内容を確認する
動画内の動きを解析する
動画の問題点を調査する
ゲームプレイ動画を分析する
🎨 Image Generation AIに画像を生成させることができる ゲーム用画像を生成する
コンセプトアートを作る
UI素材を作る
アイコンや背景素材を作る
🎬 Video Generation AIに動画を生成させることができる テキストから動画を生成する
画像から動画を生成する
参照画像を利用して動画を生成する
🐦 X (Twitter) Search X(Twitter)の情報を検索できる X上の最新情報を検索する
特定の技術についてX上の反応を調べる
開発者の投稿を検索する
🔊 Text-to-Speech テキストを音声に変換できる 文章を読み上げる
音声データを生成する
音声による通知などを作る
📚 Skills Hermes AgentのSkillsを利用・確認・管理できる 利用可能なSkillを一覧表示する
Skillの内容を確認する
Skillを管理する
特定の作業用Skillを利用する
📋 Task Planning 複数の作業をタスクとして整理・管理できる 開発作業をタスク分解する
TODOを作成する
作業の進捗を管理する
複雑な作業を順番に実行する
💾 Memory セッションをまたいで情報を記憶・利用できる 過去に決めた設定を記憶する
プロジェクトの方針を記憶する
ユーザーの好みを記憶する
以前の作業内容を次回のセッションで利用する
🧩 Context Engine アクティブなContext Engineから実行時に提供されるToolを利用できる Context Engineが提供する追加機能を利用する
実行時のコンテキストに応じたToolを利用する
🔎 Session Search 過去のHermes Agentセッションを検索できる 以前の会話を検索する
過去に行った設定を探す
以前のエラー解決方法を探す
過去の開発作業を参照する
❓ Clarifying Questions AIが作業に必要な情報をユーザーへ質問できる 要件が曖昧な場合に質問する
不足している設定を確認する
複数の選択肢からユーザーに選択してもらう
👥 Task Delegation 作業を別のAgentへ委任できる 大きなタスクを分割する
調査を別Agentに任せる
実装と調査などを分担する
複数のAgentで作業する
⏰ Cron Jobs 指定した時間・スケジュールでタスクを実行できる 定期的な処理を登録する
定期的にスクリプトを実行する
定期的なチェックを自動化する
登録したJobを停止・再開する
🏠 Home Assistant Home Assistant経由でスマートホーム機器を操作できる 照明を操作する
スマート家電を操作する
センサー情報を取得する
スマートホームの状態を確認する
🎵 Spotify SpotifyをAIから操作できる 音楽を検索する
音楽を再生する
プレイリストを操作する
ライブラリを検索する
🤖 Yuanbao Yuanbao関連の情報・機能を操作できる グループ情報を取得する
メンバー情報を取得する
DMなどの操作を行う
🖱️ Computer Use AIがPCのデスクトップを直接操作できる アプリケーションを操作する
マウス操作を行う
キーボード入力を行う
Windows/macOS/LinuxのGUIを操作する
画面を見ながらGUI操作を自動化する

 

基本必要なら有効にすればよいですが、その分コンテキストが大きくなるのでVRAMに応じた設定が必要です。

 

3.4 Hermes Agentの起動

ここまで設定できていればコンテナ内で

 

 hermes

 

を実行するとHermesが起動します。

 

 

ここで対話をした際に応答が返ってくれば設定成功です。

 


4. まとめ

今回は4回にわたってHermes AgentをローカルLLMを使って動かすための設定を解説しました。