メインコンテンツへスキップ
見出し画像

自己成長AIエージェントHermesをローカルで試してみた ~自動スキル生成やブラウザ操作などローカルLLMでガチの自動化!?~

    こんにちはRcatです。
    今回は自分専用のAIエージェントHermesを試してみます。
    最大の特徴は自己成長するというもの。さらに様々なツールを駆使していろいろやってくれるらしい。

    この記事ではすべてローカルのLLMを使い、一切外部への依存なく動かしていきます。

    画像

    はじめに

    利用規約

    情報や作品の活用時は事前に利用規約をご確認ください。

    コメントについて

    利用規約のガイドラインを確認の上コメントしてください。
    則っていないコメントは削除します。


    概要

    Hermesとは

    学習ループを内蔵した自己改善型のAIエージェントプラットフォームです。
    経験をスキルとして昇華し、知識を蓄積することで使用者について理解を深めていきます。
    また、専用のチャット画面だけでなく、Discordやslakといった外部のサービスにBotとして接続することで使い慣れた環境で指示を出せます。

    バックエンドのAIモデルも様々なものに対応しているので、ローカルでも使用可能です。

    環境構築

    まずは動かすための環境を構築します。
    ここではLinuxマシンに対してDockerを使って導入します。
    理由はファイル編集機能などもあるそうなので、念のためサンドボックスにしたいのと、最近はサービス全部Docker化し始めてるので…

    Dockerイメージを入手

    docker pull nousresearch/hermes-agent:latest

    セットアップ実行

    docker run -it --rm -v ./hermes_data:/opt/data nousresearch/hermes-agent setup

    ※公式はデータ保管場所がhomeだったので、カレントに変えてます

    起動すると初期設定が始まります。
    ここはクイックで

    画像

    AIプロバイダはカスタムで

    画像

    URLをローカルのllama.cppに向ける
    私の場合はllama-serverが8082ポートで稼働しているのでそこに向ける。
    ちなみにDockerだとlocalhostは使えないので明示的にマシンのアドレスを指定している。どうせ変えないし。

    画像

    1の自動を選ぶとホストされているモデルが出てくる。
    ローカル最強のQwen3.6 35B-A3を選びます。ちなみにMTP版w
    コンテキストはとりあえず128kでいいか。

    画像

    ターミナルはそのまま

    画像

    外部アプリに接続

    画像

    ここではDiscordを選んだ

    画像

    Discordの場合は、Botのトークンと、管理者のDiscord ID、ログ用のチャンネルIDを入れればOK。
    なのであらかじめBOTを作っておきます。

    これで設定が終わる。

    AIモデルについて

    今回使用しているのは、ローカルLLMのQwen3.6 35B-A3です。
    8bitで40GB、4Bitで20GB程度のVRAMがあればホストすることができます。
    性能は多分現時点でローカル最強。少なくとも個人的にはこれ以上すごいモデルは知らない。

    詳しくはこちら

    早速使ってみる

    実は二年前にこんなの作ってたんですね。
    これ、今でも現役なのですが、Discordから話しかけるだけでリアルにアクションを起こさせるためのミニエージェントだったりします。
    代替えが務まっちゃうのか確認してみましょうか。

    起動する

    さっきのはセットアップだけなので、起動はしてません。
    なので起動する必要があります。

    公式の説明はここにあります

    使いやすいようにdocker-compose.yamlファイルを作成します。
    内容はこんな感じ。

    画像
    末尾にコピペエリアがあります

    ちなみに公式のはこんな感じ。このコマンドをファイル化して、環境変数を盛りまくった感じ。公式説明でも下の方にあるダッシュボードをすでに有効化しています。

    画像

    ファイルができたらdocker compose upで起動。
    なんて楽なんでしょう!

    話しかける

    BotとDMします。
    探せないので自分のサーバーに参加させました。
    どちらにしろログ用のチャンネルが要るので、サーバーには入れておきましょう。

    適当に挨拶する

    画像

    返事が来たのでさっそく依頼してみましょう。
    まずはローカルネットワークへのアクセスができるか確認します。

    画像

    というわけで私の部屋のIoT換気扇を起動させます。
    元ネタはこれ。Arduinoで作った自作のIoT機器です。

    操作URLはこちら

    http://192.168.0.105/SWCGI?H=0

    なんか警告が・・・なるほど、ネットワークアクセスのうち危険そうなもの(IP直/http)は初回警告出るのか。
    /approve alwaysでスルーさせます。

    画像

    いい感じ。何も言ってないのに分析しようとしてるぞw
    ちなみにちゃんと現実の機械も動きました。
    というわけでOFFにもさせます。

    画像
    画像

    スキルを登録する

    hermesの真骨頂スキルの自動生成やりますか!
    今回の換気扇操作をスキルとして覚えてもらう作戦です。

    とりあえず覚えってっていえばなんと即覚えました。マジかよ

    画像

    まぁ大事なこと忘れてたのでいったん消してもらいます。名前とか名前とか。

    こっちも即削除。

    画像

    そして作り直し。ちゃんと何のためのスキルでどんなパラメータなのか詳しくいっておきましょう。

    画像

    パラメータが0,4だったのでその間があるんじゃないかと深読みしてきましたね。実はこれArduinoのピン番号だったりする。なので絶対合わない。

    画像

    なのでエイリアスをつけて覚えてもらいます。

    スキルを使う

    というわけで実際に使ったのがこちら。
    ちゃんと認識してる?

    画像

    ちゃんと覚えてるのか?

    さっきのは履歴があるので、そっちを参照しただけかもしれません。本当にスキルを使ったのかを再度確認します。

    というわけで

    /reset
    画像

    というわけで指示します。

    画像

    ちゃんと覚えてますね。使い道が広がりそう。
    この後、自作LED照明と音楽プレイヤーの操作も覚えさせました。

    画像

    ちなみにこんな感じで、実際のURLそのまま渡してスキル化させました。

    画像

    タイマーを使う

    cronを使った遅延実行にも対応しています。
    これがあれば、機器の方でタイマーを搭載しなくてもよくなる。
    ある時間にあると止めるとかそういう需要ありますよね。

    タイムゾーン設定

    ちょっと探すのが難しかったので、ダッシュボードで設定します。
    一般の下の方にタイムゾーンを入力するとことがあります。まずはここで日本時間であることを設定します。

    画像

    確認する。
    うん、大丈夫っぽい。

    画像

    少し前に作った音楽プレイヤーのスキルがあるのでこれを使ってみます。

    画像

    5分後・・・
    音楽の再生が始まったことを確認しました。新スキルと既存のcronもちゃんと組み合わせられてますね。

    画像


    ブラウザを使う

    こういうエージェントは、検索とか自動化してくれるというのが自作とは一味違うところ。しかもスクレイピングではなくブラウザを操作するというねw
    というわけでやってみます

    ブラウザツールの用意

    ブラウザ用のクラウドAPIとかが紹介されているのですが、そういうの嫌いなのでローカルでホストします。

    ドキュメントでの説明場所はこの辺

    公式の説明と被ることろがありますが、今回は若干やり方を変えます

    git clone https://github.com/jo-inc/camofox-browser
    cd camofox-browser
    make build

    最後のとこだけ公式と違います。
    理由は簡単で、ここでmake upしてしまうとdocker composeレベルでコンテナが独立するのが嫌だからです。私はhermesのコンテナとセットにしたい。

    こんな感じでまとまってるとわかりやすいんですよね。

    画像

    ビルドが終わったら、docker images lsを実行するとイメージ一覧が出る。
    ビルドしたのはこれですね。camofox-browser:135.0.1-x86_64

    画像

    docker-compose.yamlにブラウザコンテナを立ち上げる設定を追記する。
    ※やる前にいったんhermesのコンテナは落としましょう

    画像
    末尾にコピペエリアがあります。

    ポイントはイメージ名をさっき確認したのでコピペすること。
    AIがブラウザ操作しているところを見たいならVNC系はONにします。

    ブラウザで実践

    準備ができたら実践してみます。
    私のnoteのプロフィールを渡して、最新記事を見てもらいましょう。

    画像
    5倍速

    左がhermesとのやり取りのDiscordで右がAI用の仮想デスクトップ。

    まずはブラウザを起動し、私のプロフにアクセスしています。
    次に何が一番新しいかをちゃんと判断して、現時点最新のものをちゃんと読んでいます。

    なんかスクロールが怪しいですが、要約を見る限りちゃんと全体を読んでる?あるいはHTML解析かな?
    莫大なトークンが流されたので多分そうでしょう。

    というわけで、アクセスおよび正常に中身を確認できていることがわかりました。恐ろしいですね。

    スクショを取ってもらう

    なんとブラウザのスクショもできるらしいんですよね。
    なのでそのまま流れで依頼します。

    画像

    しばらく待って出てきました。
    スクショとってっていただけなのにプロフの内容をまとめてきた。それはいらんw
    てかアイコンを認識してるってことはちゃんとVisionもしてるのか。

    画像

    AIがとったスクショがこちら。おおwちゃんと取れてるw

    画像

    その他

    システムプロンプトってどのくらい?

    /clearで履歴を破棄した後の最初のメッセージ。プロセッシングが7000トークンちょいで97%なので7000トークンちょい。英語だと二万文字くらいか?なげぇな

    画像

    ローカルでのパフォーマンスは?

    私の環境で言えば実用レベルの速度で動作します。さすがにブラウザ操作は複雑なのでかなり遅くなりますが、遅くてキレるレベルではないです。


    まとめ

    今回は自己成長型専用AIエージェントhermesを試してみました。
    今まで、指示と動作をセットでいろいろ作ってましたが、代替えできちゃいそうですね…。
    特にちゃんとしたWEB APIを乗っけておけばほとんどのものは操作可能なわけで…

    ただ、汎用的なものなのでオーバーヘッドが多いのも確か。自作の自宅アシスタントであれば、換気扇止めるのに数秒で済みますが、hermesでは十秒以上かかります。これは単純に何でもやれるように指示が長いからですね。

    個別の開発コストを取るか、毎回のオーバーヘッドを取るかって感じですね。個人的にはhermesで今後はいい気がしますw

    というわけでhermesも常駐決定です、

    それではまたお会いしましょう。


    リンク集

    感想投稿フォーム

    コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け

    メンバーシップの説明

    Docker-Composeマネージャー

    ローカルLLMバイブコーディング完全ガイド

    ミニPCにLinuxをインストール

    特典

     
     
    モノづくりが趣味。 "売ってないなら自分で作ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワーク 全部やります。 記事執筆はAI不使用。 ご連絡や利用規約はプロフィール記事参照。

    あなたへのおすすめ