0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

電車の中からiPadで「バグ直しといて」と送るだけ。自宅MacBookをAIに働かせる構成を作ったら、まずTokenが溶けた話

0
Posted at

結論から

外出先のiPadから自宅のMacBookでAI開発させる構成を作りました。最終形はこれです。

iPad → Telegram → Hermes → Claude Code → DeepSeek → Git

そして、この記事で一番伝えたいのはここです。

1つのAIエージェントに全部やらせてはいけない。
Hermesに直接コードを書かせた瞬間、Tokenが目に見えて溶けました。

「遠隔操作するやつ」と「コードを書くやつ」を分けたら、体感が完全に変わりました。以下、失敗込みで書きます。


そもそもの動機:iPadでVS Codeを触るのは、わりと地獄

外出中に「あ、あの修正やっておきたい」と思うことがあります。

最初に考えるのはリモートデスクトップです。実際にできます。できますが、iPadの11インチの画面でVS Codeのサイドバーを開いて、ターミナルを分割して、カーソルをタップで動かして……というのを電車の中で15分やると、だいたい心が折れます。

で、あるとき気づきました。

そもそも自分がコードを書く必要、なくないか?

書くのはAIでいい。自分がやりたいのは「指示」と「確認」だけです。だとしたら必要なのは画面じゃなくて、チャットの入り口です。


最初の構成:Hermesに全部やらせて、Tokenが溶けた

最初はシンプルにこう考えました。

Hermes(汎用AIエージェント)にDeepSeekを繋いで、全部やらせればいいのでは?

Hermesは Terminal / File / Web / Browser / Cron / Messaging など何でも持っている汎用エージェントです。TelegramからMacBookのシェルを叩けるので、理屈の上ではこれ1つで完結します。

やってみました。

ログイン機能のバグを修正して

動きました。動いたんですが、Token残量の減り方がおかしい

Claude CodeにDeepSeekを繋いで同じことをさせた場合と比べて、明らかに速く減っていく。最初は「気のせいかな」と思っていましたが、何度か試して確信しました。気のせいではありませんでした。


なぜ溶けるのか:犯人は2人いた

犯人①:毎回ついてくるTool Definition

Hermesは汎用エージェントなので、大量のツールを持っています。

Terminal / File / Web / Browser / Vision
Image / Todo / Cron / Messaging / Skills

そしてAIモデルに問い合わせるときは、これらのツール定義とSystem Promptを毎回Contextに載せる必要があります

つまり1リクエストの入力は、こうなります。

ユーザーの指示
+ 会話履歴
+ System Prompt
+ Tool Definition(全部)
+ 読んだファイルの中身
+ Terminalの出力
+ 過去のTool Call履歴

一言送っただけなのに、入力Tokenは全然一言じゃないわけです。

犯人②:Agent Loopは「1タスク = 1リクエスト」ではない

こっちのほうが効きます。

「ログイン機能のバグを修正して」というたった1行の指示が、内部ではこうなります。

DeepSeekに質問 → ファイルを読む
DeepSeekに質問 → コード検索
DeepSeekに質問 → ファイル編集
DeepSeekに質問 → テスト実行
DeepSeekに質問 → エラー解析
DeepSeekに質問 → 再修正

人間の感覚では1タスク。API的には6回以上のリクエストで、しかも後半になるほどContextが膨らんでいます。

そして重要なのは、このループのたびに犯人①のTool Definitionも一緒に運ばれていることです。掛け算になります。溶けます。


発想の転換:Hermesは「書く人」ではなく「振る人」

ここで役割を分けました。

自分       = 何を作るか決める
Hermes     = 誰にやらせるか決める(AI秘書 / マネージャー)
Claude Code = どう実装するか決める(AIエンジニア)
DeepSeek   = 考える(頭脳)

Hermesにコードを書かせるのをやめて、Claude Codeを起動するだけの係にする。これだけです。

こうすると、Hermes側のContextに乗るのは「起動コマンド」と「最終結果のサマリ」だけになります。ソースコードの中身も、テストの出力も、Hermesは抱えません。重い仕事は、コーディング用に最適化されたClaude Code側のループで完結させます。

図にするとこうです。

               外出先
                 │
               iPad
                 │
             Telegram
                 │
                 ▼
          ┌─────────────┐
          │   Hermes    │  ← タスクを受けて振るだけ
          │  AI Manager │
          └──────┬──────┘
                 │
           自宅のMacBook
                 │
                 ▼
          ┌─────────────┐
          │ Claude Code │  ← ここで全部やる
          │ AI Engineer │
          └──────┬──────┘
                 │
                 ▼
             DeepSeek
                 │
                 ▼
           Git Repository

作り方(4ステップ)

ステップ1:MacBookをAIサーバーにする

MacBook上で常時動かすのは以下です。

Hermes Server
Claude Code
Git / Node.js / Python
開発プロジェクト

ここが最大の落とし穴なんですが、MacBookがスリープするとHermesもClaude Codeも死にます。

外出先から意気揚々と指示を送って、無反応で「あっ」となるやつです。1回やりました。以下は必ず確認してください。

  • 電源に繋いだままにする
  • スリープ設定(caffeinate でもいいですが、蓋を閉じる運用ならクラムシェル設定を見直す)
  • ネットワークが切れない場所に置く

ステップ2:Telegramを入り口にする

Telegram BotをHermesの受付にします。iPadからは、これだけ送ります。

shopプロジェクトの現在の状態を確認して。

ステップ3:Hermesには「コードを書け」と言わない

これがTokenを守る一番のコツです。

❌ 溶ける言い方

このRepositoryを全部調査して、
問題を見つけて、ファイルを編集して、テストして。

Hermesが自分でAgent Loopを回し始めます。

✅ 溶けない言い方

Claude Codeを起動して、
このRepositoryの問題を修正させて。

主語がClaude Codeになっているのがポイントです。

ステップ4:Claude Codeをプログラマーとして起動する

HermesからはヘッドレスモードでClaude Codeを叩きます。-p--print)を付けると、対話UIを開かずに1ターン実行して結果を出力し、終了します。

cd ~/Projects/shop

claude -p "
現在のgit diffとTODOを確認してください。
決済機能の実装を続けてください。

既存コードの設計を尊重し、無関係なファイルは変更しないでください。
実装後にテストを実行し、失敗した場合は原因を修正してください。
最終的に変更内容とテスト結果をまとめてください。
" --allowedTools "Read,Edit,Bash"

--allowedTools で使わせるツールを絞れます。無人で走らせる以上、ここは指定しておいたほうが精神衛生上いいです。

Hermes側の仕事は、これだけになります。

Claude Code起動 → 結果待ち → 結果をTelegramへ送信

コピペ用:外出先から投げるプロンプトの型

実際に電車の中から送っているのがこれです。

~/Projects/shop を確認。

まず現在のGit状況を確認して。
未完成の決済機能をClaude Codeに実装させて。
既存テストを全部実行。エラーが出た場合は修正。

全部成功したらcommitして、
変更ファイル / 変更内容 / テスト結果 をまとめて報告して。

送ったらiPadを閉じます。しばらくするとTelegramにこう返ってきます。

変更ファイル:5件

実装:
・PaymentService追加
・Stripe webhook処理修正
・重複決済防止処理追加

Test:148 passed / 0 failed

Commit:feat: complete payment processing

人間はコードを1行も打っていません。 これがやりたかったやつです。


Token節約:さらに効いた2つのこと

① Hermesのツールを削る

コーディングのリモート操作用途なら、必要なのはこのくらいです。

Telegram:
  - terminal
  - file
  - web
  - todo

逆に Vision / Image Generation / TTS / Browser あたりを普段使わないなら、毎回モデルに渡す理由がありません。Tool Definitionが減れば、犯人①の分がそのまま軽くなります。

② 「Token使用量」と「請求額」を混同しない

これ、地味に重要です。

DeepSeekのようにPrompt Cacheに対応しているAPIでは、System PromptやTool Definitionのような毎回同じ部分がCache Hitになります。つまり「1,000,000 Token使った」と表示されても、1,000,000 Token分を通常の入力単価で払っているとは限りません。

見るべきはここです。

Input Token / Cached Input Token / Output Token / 実際の請求額

なお、Claude Code側は --output-format json を付けると、レスポンスに total_cost_usd とモデル別のコスト内訳が入ってきます。使用ダッシュボードを見に行かなくても、実行ごとのコストをスクリプトで拾えます(クライアント側の推定値なので、実際の請求と多少ずれる点だけ注意)。

claude -p "..." --output-format json

「体感で溶けている気がする」を、数字で潰せるようになります。

参考:https://code.claude.com/docs/en/headless


それでもリモートデスクトップは捨てないでください

Hermesで99%は回りますが、残り1%で確実に詰みます

  • macOSの権限ダイアログが出た
  • ログインが必要になった
  • CAPTCHA / 2段階認証
  • AIが謎の場所で止まっている
  • IDEの画面を自分の目で見たい

このとき、チャットの入り口しか持っていないと何もできません。予備の回線としてJump Desktopなどを入れておきます。

               ┌─ Telegram → Hermes → AI自動操作
iPad ──────────┤
               └─ Jump Desktop → MacBook(緊急時のみ)

普段はTelegram、詰んだときだけJump Desktop。この二段構えがかなり快適です。iPad + Magic Keyboardならなおさら安心できます。


結局どっちに何をやらせるのか

タスク Hermes Claude Code
コードを書く
大規模Repository解析
Debug / Refactoring
テスト実行
Telegram操作
遠隔操作
定期実行
ブラウザ操作
複数ツール連携
個人AIアシスタント

きれいに逆になります。だから分けたほうがいい、という話でした。


まとめ

Hermes      = Manager(誰にやらせるか)
Claude Code = Programmer(どう実装するか)
DeepSeek    = Brain(考える)
  • 汎用エージェントに直接コードを書かせると、Tool Definition × Agent Loop でTokenが溶ける
  • 重い仕事は、コーディング特化のClaude Codeに claude -p で丸投げする
  • Hermesには結果だけ持たせる
  • MacBookのスリープだけは本当に気をつける
  • リモートデスクトップは保険として残す

「iPadだけ持って外出して、自宅のMacBookにAIで開発させる」をやりたい人には、この構成はかなり相性がいいはずです。

同じことをやっている方の構成、特に「Hermes側をどこまで削ったか」はぜひコメントで教えてください。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?