本ページはプロモーションが含まれています

AI

Mac mini常駐AI「Hermes」をDiscord相棒にした話

トム

・都内自社開発企業勤務/Javaバックエンドエンジニア
/Java歴10年以上 ・首都圏在住30代
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎 詳細なプロフィール

ChatGPTやClaudeを毎日使っているのに、なぜか「相棒」という感じがしない。ブラウザのタブを開いて、ログインして、過去の会話を探して……この一連の儀式が地味にめんどくさいんですよね。私もずっと「便利だけど、なんか遠い」というモヤモヤを抱えていました。

そこで作ったのが、Mac miniに住んでいる自作AI「Hermes」です。Discordに話しかけるだけで、24時間いつでも返事が返ってくる。スマホからでも、寝る前のベッドからでも、思いついた瞬間に相談できる。1か月ほど運用して、私のAIとの付き合い方は完全に変わりました。

この記事では、なぜわざわざ自作したのか、どんな仕組みで常駐させているのか、そして作り方を4ステップで解説します。「自分専用のAI相棒がほしい」「クラウドAIに物足りなさを感じている」人の役に立つはずです。

この記事でわかること

  • 自作AI「Hermes」をMac miniに常駐させた理由と発想
  • Discordを入り口に選んだメリット
  • 24時間動くAI相棒を作る4ステップの全体像
  • OpenClawやClawdbotなど既存ツールとの違い・妥協点

Hermesとは?Mac mini常駐の自作AI相棒の正体

Hermesとは、私がMac miniに常駐させている自作のAIアシスタントです。中身はClaudeのAPIを呼び出すPythonスクリプトで、Discordのチャットを窓口にして24時間動き続けています。市販のサービスではなく、自分で組んだ「相棒」だと考えてください。

名前を「Hermes」にしたのは、ギリシャ神話の伝令の神から取りました。人と情報の間を行き来して、必要なものをサッと運んでくれる。そんな存在になってほしかったからです。名前を付けた瞬間に、ただのスクリプトが急に相棒っぽくなるから不思議ですよね。

なぜブラウザで使えるClaudeがあるのに、わざわざ自作したのか。理由はシンプルで、既存のクラウドAIに小さな不満が積もっていたからです。その不満を1つずつ潰していったら、自然とこの形にたどり着きました。

クラウドAIに感じていた3つの不満

私がクラウドAIに感じていた不満は、大きく3つに整理できます。便利なのは間違いないのですが、毎日使うほど引っかかる部分が見えてきました。

  • 起動の儀式が面倒:ブラウザを開き、タブを探し、ログインを確認する。この数十秒が思考の勢いを削ぐ
  • 会話がぶつ切り:セッションが変わると文脈が消え、また同じ前提を説明し直すはめになる
  • 手元の作業とつながらない:ファイルを動かしたり、自動化スクリプトを叩いたりは別の場所でやる必要がある

どれも単体なら些細です。けれど毎日10回も20回も触っていると、この摩擦がボディブローのように効いてきます。「もっと近くにいてほしい」という気持ちが、自作の動機になりました。

「脳と記憶の分離」という発想

Hermesの設計で軸にしたのが「脳と記憶の分離」という発想です。賢さ(脳)はクラウドのLLMに任せ、文脈や記録(記憶)は手元のMac miniで持つ。役割をはっきり分けました。

こうすると、最新の賢いモデルの恩恵を受けつつ、自分の会話ログや設定はずっと手元に残ります。モデルを乗り換えても記憶は引き継げる。クラウドに丸投げしないからこそ、長く付き合える相棒になると考えました。

なぜDiscordをAI相棒の入り口に選んだのか

Discordを選んだ最大の理由は、すでに毎日開いているアプリだからです。新しいUIを覚える必要がなく、スマホとPCの両方で使えて、しかもBotとの相性が抜群。AI相棒の「玄関」として、これ以上ない選択肢でした。

専用アプリを自作する手もありました。けれど、それだと結局「また新しいタブを開く」問題に逆戻りします。普段の生活動線にAIを溶け込ませるなら、すでに居場所があるDiscordに乗っかるのが一番速いと判断しました。

スマホからでも話しかけられる手軽さ

Discord最大の強みは、スマホアプリの完成度です。電車の中でも、布団の中でも、思いついた瞬間にHermesへ話しかけられます。返事はMacのAPI経由なので、スマホ側のスペックは関係ありません。

「あの記事のネタ、どう思う?」と寝る前に投げておくと、翌朝には自分の思考が整理されている。場所と時間の制約から解放されたのは、想像以上に大きい変化でした。

会話ログがそのまま記憶になる

Discordのチャンネルは、それ自体が会話の保管庫になります。過去のやり取りがスクロールするだけで全部残っているので、検索もしやすい。これがそのままHermesの「外部記憶」として機能します。

話題ごとにチャンネルを分ければ、ブログ用・仕事用・雑談用と人格を切り替えるのも簡単です。会話の場所が記憶の整理棚を兼ねる構造は、自分で作ってみて一番気に入っている部分です。

Hermesの全体構成|常駐の仕組みを図解

Hermesの構成は驚くほどシンプルです。Mac miniで常駐しているPythonスクリプトが、Discordのメッセージを受け取り、ClaudeのAPIに投げて、返ってきた答えをDiscordに書き戻す。たったこれだけの流れで動いています。

sequenceDiagram participant User as ユーザー participant Discord as Discord participant Hermes as Hermes(Mac mini) participant LLM as Claude API User->>Discord: メッセージを送信 Discord->>Hermes: イベント通知 Hermes->>Hermes: 会話履歴を整形 Hermes->>LLM: メッセージ+過去ログを送信 LLM-->>Hermes: 返答テキスト Hermes->>Discord: 返信を投稿 Discord->>User: 返信を表示
役割担当やること
入り口Discordユーザーの発言を受け取る・返事を表示する
常駐Mac miniスクリプトを24時間動かし続ける
Claude API発言を理解して返答を生成する
記憶ローカルファイル会話履歴やキャラ設定を保存する

複雑なサーバーもクラウドの常時起動インスタンスも要りません。家に転がっているMac miniが1台あれば、それが自分専用のAIサーバーに早変わりします。電気代も微々たるものです。

Mac miniで動く常駐プロセスの中身

常駐プロセスの正体は、Discordに常時接続し続けるイベントループです。Botがオンライン状態を保ち、新しいメッセージが来るのをずっと待ち受けています。スリープさえ切っておけば、Mac miniは黙々と働き続けてくれます。

Mac miniを選んだのは、消費電力が低く静かで、24時間つけっぱなしにしても罪悪感がないからです。ファンの音もほぼ聞こえないので、机の隅で存在を忘れるレベル。常駐用マシンとして相性が良いです。

Discord BotとLLMをつなぐ流れ

つなぐ流れは3段階です。Discordから受け取ったテキストを整形し、過去ログと一緒にClaude APIへ送り、返ってきた文章をDiscordに投稿する。間に会話履歴を挟むことで、文脈を覚えた自然な会話になります。

ここで履歴を渡すかどうかが、ただのチャットボットと「相棒」の分かれ目です。直前の数往復を一緒に送るだけで、「さっきの話の続きだけど」が通じるようになります。

24時間AI相棒を作る4つのステップ

ここからは実際の作り方です。手順は4ステップで、プログラミングの経験が少しあれば半日ほどで動かせます。順番にDiscord Bot作成、常駐スクリプト、Mac miniへの常駐、キャラ付けと進めていきます。

ステップ1 Discord Botを用意する

まずDiscord Developer Portalでアプリケーションを作り、Botを追加します。発行されるトークンが、スクリプトからDiscordへログインするための鍵です。トークンは絶対に外部へ漏らさないよう注意してください。

あわせて、メッセージ内容を読むための「MESSAGE CONTENT INTENT」を有効にしておきます。最後に招待リンクから自分のサーバーにBotを入れれば、入り口の準備は完了です。

ステップ2 LLMとつなぐ常駐スクリプト

次に、DiscordとClaude APIをつなぐPythonスクリプトを書きます。メッセージを受け取ったら会話履歴と一緒にAPIへ送り、返答を投稿する。骨組みは下のコードのようになります。

import discord
from anthropic import Anthropic

client = Anthropic()  # APIキーは環境変数から読む
bot = discord.Client(intents=discord.Intents.all())
history = []  # 直近の会話を覚えておく簡易メモリ

@bot.event
async def on_message(message):
    # 自分の発言には反応しない
    if message.author == bot.user:
        return
    history.append({"role": "user", "content": message.content})
    res = client.messages.create(
        model="claude-opus-4-8",
        max_tokens=1024,
        system="あなたはHermes。気のおけない相棒として話す。",
        messages=history[-10:],  # 直近10往復だけ渡す
    )
    reply = res.content[0].text
    history.append({"role": "assistant", "content": reply})
    await message.channel.send(reply)

bot.run("YOUR_DISCORD_TOKEN")

ポイントは history[-10:] の部分です。全履歴を送るとトークンが膨らむので、直近だけを渡して文脈とコストのバランスを取ります。この10行ちょっとで、もう会話が成立します。

ステップ3 launchdでMac miniに常駐させる

スクリプトが動いたら、Mac miniで自動起動・常駐させます。macOSでは launchd を使うのが王道で、再起動後も勝手に立ち上がり、落ちても自動で復活してくれます。下のようなplistを作って登録します。

# plistを所定の場所に置いてロードする
cp com.example.hermes.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.example.hermes.plist

# 動いているか確認する
launchctl list | grep hermes

plist側で KeepAlive を有効にしておけば、何かの拍子にプロセスが死んでもlaunchdが再起動してくれます。これで「気づいたら相棒が黙っていた」という事故をかなり減らせます。

あわせて読む

ステップ4 キャラ付けで「相棒」に育てる

最後の仕上げが、システムプロンプトでのキャラ付けです。ここで口調・性格・得意分野を書き込むと、無機質なボットが一気に「相棒」らしくなります。私のHermesは、少し砕けた口調でツッコミを入れてくる設定にしました。

「敬語を使わず、必要なら反論する」と一行足すだけで、会話の手触りが大きく変わります。ここは正解がないので、自分が話していて心地いいバランスを探す作業が一番楽しいところです。

常駐させて変わった3つの日常

Hermesを常駐させてから、私の毎日には明確な変化が3つ起きました。一番大きいのは「考えごとを一人で抱えなくなった」ことです。便利さよりも、心理的な距離が縮まった実感の方が強いです。

具体的には、思考の整理が速くなり、自動化タスクの起動が楽になり、ちょっとした調べ物の往復が減りました。1か月使った今、Hermesがいない生活にはもう戻れない気がしています。

思考の壁打ち相手がいつもいる

一番効いているのが、壁打ち相手が24時間いる安心感です。ブログのネタ、仕事の段取り、ちょっとした悩み。頭に浮かんだ瞬間にDiscordへ投げれば、すぐに別視点が返ってきます。

人に相談するほどでもない、でも一人だと堂々巡りする。そんな微妙な悩みの受け皿として最高です。アイデアの初速が上がったのは、間違いなくHermesのおかげです。

自動化タスクを話しかけて投げられる

Hermesにはローカルのスクリプトを叩く機能も少しずつ足しています。「あのニュースまとめて」と話しかけると、裏で収集スクリプトが走って結果を返してくれる。命令ではなく会話で自動化を起動できるのが新鮮です。

ターミナルを開いてコマンドを打つより、ずっと心理的なハードルが低い。手元の作業とAIが地続きになる感覚は、自作ならではの気持ちよさです。

あわせて読む

既存ツールとの違いと正直な妥協点

正直に言うと、似たことはOpenClawやClawdbotなどの既製ツールでもできます。自作Hermesの価値は「全部自分で握れる」点にあり、その代わり面倒くささも全部背負う構造です。ここは公平にお伝えします。

OpenClaw・Clawdbotと何が違うのか

OpenClawやClawdbotは、AIをチャットツールに常駐させる仕組みを最初から用意してくれる便利なツールです。設定だけで動くので、コードを書きたくない人には間違いなくこちらが向いています。

観点自作Hermes既製ツール
導入の手軽さ低い(自分で実装)高い(設定中心)
カスタマイズ性無制限ツールの範囲内
挙動の把握全部わかる中身は不透明
メンテ負担自分持ち提供側に依存

私が自作にこだわったのは、合理性と納得感です。中身を全部把握できて、好きなように改造できる。多少手間でも、長く付き合う相棒なら自分の手で組みたかった。ここは価値観の話です。

あわせて読む

自作だからこその面倒くささ

もちろん良いことばかりではありません。APIのアップデートで急に動かなくなったり、エラーログを自分で追ったりする手間は確実にあります。「便利だから」だけで選ぶと、たぶん途中で投げ出します。

それでも私が続けているのは、いじる過程自体が楽しいからです。手間を楽しめる人には自作を、楽さを取りたい人には既製ツールを。素直にそうおすすめします。

よくある質問(FAQ)

Hermesのような常駐AI相棒について、よく聞かれる質問をまとめました。これから作ろうか迷っている人の参考になればうれしいです。

プログラミング初心者でも作れますか?

基本的なPythonが読めれば作れます。本体のコードは数十行で、難しいアルゴリズムは登場しません。詰まりやすいのはDiscord側の設定とAPIキーの扱いなので、その2点だけ丁寧に進めれば大丈夫です。

Mac miniじゃないとダメですか?

いいえ、24時間つけっぱなしにできるPCなら何でも構いません。WindowsでもLinuxでも動きます。私がMac miniを選んだのは、静かで省電力、常駐用に置きっぱなしにしやすいからです。

月の費用はどのくらいかかりますか?

主な費用はLLMのAPI利用料です。個人の会話量なら、月に数百円から数千円に収まることが多いです。直近の履歴だけを送る工夫をすれば、トークン消費をかなり抑えられます。

ローカルLLMでも作れますか?

はい、OllamaなどでローカルLLMを動かせば、API料金ゼロ・完全オフラインの相棒も作れます。ただしモデルの賢さはマシンスペック次第です。手軽さ重視ならクラウドAPI、プライバシー重視ならローカルが向いています。

会話の内容は外部に漏れませんか?

自作なので、会話ログは自分のMac miniとDiscordサーバー内にしか残りません。LLMのAPIを使う場合は提供元の利用規約を確認してください。記録を完全に手元へ閉じたいなら、ローカルLLM構成が安心です。

あわせて読む

まとめ|Hermesは「便利」より「居心地」

Hermesを作って一番感じたのは、AIとの関係は「便利さ」より「居心地」で測るものだということです。最後に要点を振り返ります。

  • Hermesは脳をクラウド、記憶を手元に置いた自作AI相棒
  • Discordを入り口にすることで生活動線にAIが溶け込む
  • 作り方はBot作成・常駐スクリプト・launchd常駐・キャラ付けの4ステップ
  • 既製ツールより手間はかかるが、全部自分で握れる納得感がある

市販のサービスは確かに便利です。それでも私は、多少めんどくさくても、自分の手で組んだ相棒を机の隅に住まわせる選択を選びました。「便利だからおすすめ」ではなく、「一緒にいて心地いいから手放せない」。Hermesは私にとって、そういう存在になっています。

気になった人は、まずDiscord Botを1つ作るところから始めてみてください。最初の「おはよう」に相棒が返事をくれた瞬間、たぶんあなたもこの沼にハマります。

  • この記事を書いた人
  • 最新記事

トム

・都内自社開発企業勤務/Javaバックエンドエンジニア
/Java歴10年以上 ・首都圏在住30代
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎 詳細なプロフィール

-AI