15
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

0から始めるローカルAIエージェント(Win11 + Docker + LM Studio + Hermes Agent)

15
Posted at

はじめに

LLMの進化がすごくてついていくだけで大変ですね。

最近は、ある程度まとまった仕事をする自律型AIエージェントが注目されるようになりました。
それをローカルで試してみたいなと思っていたところ Hermes Agent や OpenClaw という名前を見かけたので気になって使ってみました。

この記事はその備忘録です。

0. 環境

  • Windows11
  • NVIDIA RTX 4000 SFF Ada Generation(20GB)
    • (sub) NVIDIA GeForce RTX 3060(12GB)

構成

イメージは以下で、AIエージェントをDocker内でのみ動かす構築にしています。

Gemini_Generated_Image_qpqguhqpqguhqpqg.png

ローカルLLM

ローカルLLMとして LM Studio を使っています。導入は以下の昔の記事をどうぞ。
最近メインで使ってるモデルは google/gemma-4-26b-a4b-qat です。

0から始めるローカルLLM(導入~モデル検索、Pythonでの利用まで)

Docker

AIエージェントはDocker上に構築します。
Windows上に直接インストールすることも可能ですが、Dockerを利用することで以下のメリットがあります。

  • Windows側の環境を汚さずに利用できる
  • 動作環境をコンテナ内に閉じ込めることで、AIエージェントの管理や再構築が容易になる
  • Linux環境を前提として開発されることが多いため、Windows環境より再現性が高い

Docker Desktop は以下からインストールできます。
https://www.docker.com/ja-jp/get-started/

VSCode

基本はVSCode上での操作を想定しています。
https://code.visualstudio.com/

必要な拡張機能は以下です。

1. Hermes Agent

「あなたと共に成長するAIエージェント。」というキャッチコピーのAIエージェントです。
特徴として、会話だけでなくツール実行やメモリ機能を持ち、使い続けることで自分専用のアシスタントとして成長していく点が挙げられます。

公式ページ:https://hermes-agent.org/ja/

起動

以下のcompose.yamlファイルをVSCode上で保存してdockerで起動させます。
(最後のpasswordの部分は適当に変えてください)

compose.yaml
services:
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes
    restart: unless-stopped
    command: gateway run
    ports:
      - "127.0.0.1:9119:9119"
    volumes:
      - ./hermes_data:/opt/data
      - ./workspace:/opt/data/workspace
    environment:
      - HERMES_DASHBOARD=1
      - HERMES_DASHBOARD_HOST=0.0.0.0
      - HERMES_DASHBOARD_PORT=9119
      - HERMES_DASHBOARD_INSECURE=1
      - HERMES_DASHBOARD_BASIC_AUTH_USERNAME=admin
      - HERMES_DASHBOARD_BASIC_AUTH_PASSWORD=hogehoge

Dockerの拡張機能が入っていると右クリックで Compose Up がでるのでこれでDockerを立ち上げます。

ss1-2.png

Dockerタブで状況が確認できます。

ss2-1.png

右クリックの Attach Shell でDockerの中に入ります。

ここでAIエージェントの起動状況が確認できます。
Compose Down でコンテナを終了させればいつでもAIエージェントを止める事ができます。

コンテナを立ち上げると hermes_dataworkspace が出来ているかと思います。
AIが操作できる範囲は基本この2つのフォルダの配下だけです。
(逆にAIに読ませたいファイルはworkspace配下に置いてください)

AIに/opt/data以外でファイル生成を行わせると時々生成できない事象が発生しました。
これは Hermes の File Mutation Verifier(AIエージェント側の安全チェック)が反応しているようで、環境変数を調べると以下の設定がありました。

HERMES_WRITE_SAFE_ROOT=/opt/data

なのでworkspaceは/opt/data配下にしています。

モデルの設定(初期設定)

Attach Shell をするとコンソール画面が現れ、hermes CLI が使えます。
LLMモデルの設定だけは最低限する必要があるので設定します。

# hermes model

Select provider:
  ↑↓ navigate  ENTER/SPACE select  ESC cancel

   (●) Nous Portal (Everything your agent needs, 300+ models with bundled tool use)
 → (○) LM Studio (Local desktop app with built-in model server)
   (○) Anthropic (Claude models via API key or Claude Code)
(略)
※LM Studioを選びます。

No LM Studio API key configured.
LM_API_KEY (Enter for no-auth default 'dummy-lm-api-key'): 
※LM Studio の API KEY を設定していれば設定します。

Base URL [http://127.0.0.1:1234/v1]: http://host.docker.internal:1234/v1
※Dockerからホストにアクセスする際は `host.docker.internal` となるので変更します。

Select default model:
  ↑↓ navigate  ENTER/SPACE select  / search  ESC cancel

   (●) google/gemma-4-e4b
 → (○) google/gemma-4-26b-a4b-qat
   (○) qwen/qwen3.6-35b-a3b
※使うモデルを選びます。

確認コマンドとして hermes chat -q "hello" と打ちます。

# hermes chat -q "hello"
Query: hello
Initializing agent...
────────────────────────────────────────

 ─  ⚕ Hermes  ─────────────────────────────────────────────────────────────────────────────────────── 
                                                                                                      
     Error: Auxiliary compression model google/gemma-4-26b-a4b-qat has a context window of 16,384     
     tokens, which is below the minimum 64,000 required by Hermes Agent.  Choose a compression        
     model with at least 64K context (set auxiliary.compression.model in config.yaml), or set         
     auxiliary.compression.context_length to override the detected value if it is wrong.              
                                                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 

Goodbye! ⚕

初回はコンテキストウィンドウが小さいと言って怒られました。
最低でも64000は必要なようです。
LM Studio側でモデルのコンテキスト長を修正します。

ss3-1.png

修正後は成功しました。

# hermes chat -q "hello"
Query: hello
Initializing agent...
────────────────────────────────────────


╭─ ⚕ Hermes ─────────────────────────────────────────────────────────────────────────────────────────╮
    Hello! How can I help you today?
╰────────────────────────────────────────────────────────────────────────────────────────────────────╯

Resume this session with:
  hermes --resume 20260710_054040_0166f3

Session:        20260710_054040_0166f3
Duration:       1m 18s
Messages:       2 (1 user, 0 tool calls)

CWDの変更(初期設定)

任意ですが、初期ディレクトリをworkspaceに変更しておきます。
(初期設定は . です)

# hermes config set terminal.cwd /opt/data/workspace

ダッシュボード

以下からダッシュボードにアクセスできます。

ユーザ名とパスワードはdockerファイルに記載してあるものです。
ダッシュボード上のチャットからでもAIとやりとりができます。

ワークスペースの操作

操作の基本はダッシュボード上のチャット、または hermes --tui によるTUI操作となります。

操作の例として試しに適当なファイルを作らせてみます。
docker内のターミナルで hermes --tui を実行し、sample.txtを作って と言ってみました。

ss4.png

workspace配下にsample.txtが作られました。
Tool calls が今回呼ばれたツールで、WriteFile 1回とTerminal実行 3回していますね。

Web検索と保存の例(Browser-CDP)

他の利用例として、Web検索をして結果をファイルに保存する例を見てみます。
Web検索の方法はいくつかありますが、今回はローカルブラウザを遠隔操作してデータ取得する方法を示します。
(他にはDuckDuckGoの検索サービスを直接利用する方法など)

まずはWindows側で遠隔操作用のブラウザ(chrome)を立ち上げます。
パワーシェルで以下を実行します。

& "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="C:\ChromeDebug"

実行するとChromeが立ち上がると思います。

次にアクセスですが、remote-debugging-portへのアクセスはホスト名が使えず、IPv4でのみしかアクセスできないのでIPアドレスを確認します。

dockerコンテナ内で以下を実行します。

/opt/hermes# getent ahostsv4 host.docker.internal
xxx.xxx.xxx.xxx  STREAM host.docker.internal
xxx.xxx.xxx.xxx  DGRAM  
xxx.xxx.xxx.xxx  RAW    
※↑ここのIPアドレスを覚える

※ブラウザへアクセスできるか確認
/opt/hermes# curl http://xxx.xxx.xxx.xxx:9222/json/version

次にhermesからの利用ですが、チャット中に /browser connect http://xxx.xxx.xxx.xxx:9222 と打てばそのセッション中は接続可能な状態になります。

実際の使用例は以下です。
(6月に発売したswitch2のゲームを集めてみました)

/opt/hermes# hermes --tui
> /browser connect http://192.168.65.254:9222
> 6月に発売したswitch2のゲームを集めてmd形式で保存して

※ここでブラウザを見ると自動でページが切り替わるかと思います。

> 日本語で書きなおして
※mdが英語で書かれたので

実際に作られたファイルは以下です。

switch2_june_2026_games.md
switch2_june_2026_games.md
# 2026年6月発売 Nintendo Switch 2 ゲームリスト

最新のニュースとリリーススケジュールに基づいた、2026年6月にリリースされた(またはリリース予定の)Nintendo Switch 2のゲームリストです。

| 発売日 | ゲームタイトル |
| :--- | :--- |
| 2026年6月3日 | ファイナルファンタジーVII リバース |
| 2026年6月3日 | eFootball: Kick-Off! |
| 2026年6月25日 | モノポリー: スター・ウォーズ™ ヒーローズ vs ヴィランズ |
| 2026年6月 | Unrailed 2: Back on Track |
| 2026年6月 | EA Sports FC 26 |
| 2026年6月 | River City Saga: Journey to the West |

*注:このリストは、利用可能なニュースの断片およびリリース・カレンダーに基づいて作成されています。*

リリース予定って…(7/10に指示しています)
6/25はスターフォックスの発売日なので結構間違ってますね。
Webから情報収集するならもう少し細かく指定しないといけなそうです。

また、使うときは日本のサイトに絞った方がいいかもしれません。
英語のサイトだと何のサイトかぱっと見で分からなかったり…。(英単語で検索していたので英語のページがヒットしていた)

その他の機能や特徴

ここまで紹介したファイル操作やWeb検索以外にも、Hermes Agentには多くの機能があります。

大きな特徴の1つがセッションをまたいだ永続メモリです。
ユーザーの好みやプロジェクト情報などを記憶し、毎回同じ情報を入力する必要をなくします。
また、よく利用する手順や知識を「Skills」として保存し、必要なタイミングで再利用する仕組みもあるようです。

その他にも、

  • SlackやDiscordなどの外部メッセージサービスとの連携
  • Cronによる定期タスクの実行
  • 音声入力

など、AIエージェントとして利用するための機能が多数用意されています。

OpenClaw

ローカルで動作する自律型AIエージェントを考える上で、OpenClawも有力な候補になります。
OpenClawも、ブラウザ操作、ファイル操作、ツール実行、Skills、メッセージ連携など、Hermes Agentと似た機能を備えています。

では何が違うかというと設計思想だと思います。

Hermes Agentは、ユーザーの好みや環境を記憶し、長く使うことで「自分専用のアシスタント」に育てていく方向性が強い設計です。
一方、OpenClawは設定やワークフローを組み合わせ、さまざまなタスクを自動化するエージェント基盤としての側面が強い印象です。

どちらも似た機能を持っていますが、
「自分向けに育てるAI」ならHermes Agent、
「作業を自動化するAI基盤」ならOpenClaw、
という違いになる感じでしょうか。

おわりに

両方とも比較的新しいプロジェクトですが、とても多くの機能が実装されていて便利だと感じました。
直接LLMを使うよりも、こうしたAIエージェントを間に入れることで、より実用的に使えると思います。

Hermesを選んだ理由ですが、たまたま最初に触っただけで特に理由はありません。

今後似たようなツールが増えていくのか、それとも更に新しい形のAIツールが登場するのか、今後の進化が楽しみですね。

15
33
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?