ローカルPCだけで9体のAIエージェントチームを構築した話
クラウド費用ゼロ、VirtualBox上のUbuntu VMで9体のAIエージェントを動かし、GitHub Issueを自律的に拾って実装・pushまでやってくれるチームを構築した実践記。
はじめに
「AIエージェント」という言葉をよく聞くようになりましたが、実際にマルチエージェントシステムを動かしている個人開発者はまだ少ないのではないでしょうか。
クラウドでやろうとすると月に数万円のコストがかかる。でも手元のPCなら、電気代だけで24時間動かせる。この記事では、VirtualBox上のUbuntu VMで9体のAIエージェントを動かし、GitHub Issueを自律的に拾って実装・pushまでやってくれるチームを構築した実践記を紹介します。
作ったシステムの全体像
各エージェントの役割はこの通りです:
| エージェント | ポート | 役割 |
|---|---|---|
| Aira | 9101 | オーケストレーター。タスク分配・統括 |
| KIKI | 9102 | 監視・通知。全エージェントの死活監視 |
| Riku | 9103 | データ取り込み。スクレイピング・PDF・ベクトル化 |
| Sen | 9104 | ルーティング判断。どのエージェントに振るか決める |
| Sora | 9105 | ベクトル検索 |
| Haru | 9106 | 検索結果の再ランキング |
| Tomo | 9107 | 品質検証。幻覚検出 |
| Niko | 9108 | 回答生成(ストリーミング対応) |
| Luna | 9109 | グラフDB。知識の関係性管理 |
最終的に、ユーザーのクエリが Aira → Sen → Riku/Sora → Haru → Tomo → Niko と流れ、RAGパイプラインとして機能する構成です。
前提条件とコスト
- ホストOS: Windows 10/11 または macOS
- VirtualBox 7.x + Ubuntu 24.04 LTS
- VM RAM: 32GB(推奨。16GBでも動く)
- Node.js v20+
- クラウド費用: 0円(Claude API のサブスクのみ)
ステップ1: VDI(仮想ディスク)の設計
9体のエージェントそれぞれに独立した20GB VDIを割り当てます。これにより:
- エージェント同士が互いのデータを汚さない
- ストレージの使用量を個別に監視できる
- 問題が起きたエージェントのVDIだけ差し替えられる
# VirtualBox CLI でVDI作成
for agent in aira kiki riku sen sora haru tomo niko luna; do
VBoxManage createmedium disk \
--filename "D:\VirtualBox\VDIs\agent-${agent}.vdi" \
--size 20480 --format VDI --variant Standard
done
ステップ2: エージェントのベースコード
各エージェントは Express + WebSocket の Node.js サーバーです。
// server.js(各エージェント共通のベース)
import express from 'express';
const app = express();
const PORT = process.env.PORT || 9101;
const AGENT_NAME = process.env.AGENT_NAME || 'aira';
// ヘルスチェック(KIKIが5分ごとに叩く)
app.get('/api/health', (req, res) => {
res.json({
agent: AGENT_NAME,
status: 'running',
uptime: process.uptime(),
memory: process.memoryUsage(),
});
});
// タスク受付(Airaからの指示を受ける)
app.post('/api/task', async (req, res) => {
const { taskId, type, payload } = req.body;
const result = await processTask(type, payload);
res.json({ taskId, status: 'completed', result });
});
app.listen(PORT, () => {
console.log(`[${AGENT_NAME}] listening on :${PORT}`);
});
ステップ3: systemd でサービス化
# /etc/systemd/system/agent-aira.service
[Unit]
Description=Agent Aira (Orchestrator)
After=network.target
[Service]
Type=simple
User=agent-aira
WorkingDirectory=/mnt/agent-aira/code
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=5
Environment=PORT=9101
Environment=AGENT_NAME=aira
[Install]
WantedBy=multi-user.target
自律開発ループ(Wiggum Loop)
ここが一番面白いところです。AIが自分でGitHub Issueを拾って、実装して、commitしてpushする仕組みを作りました。
#!/usr/bin/env bash
# wiggum-loop.sh(簡略版)
MAX_ITERATIONS=100
REPOS=("agent-aira" "agent-kiki" "AI-BACKOFFICE")
for ((i=1; i<=MAX_ITERATIONS; i++)); do
for repo in "${REPOS[@]}"; do
ISSUE=$(gh issue list --repo "shintaku81/$repo" \
--state open --limit 1 --json number,title \
--jq '.[0] | "\(.number) \(.title)"')
[ -z "$ISSUE" ] && continue
ISSUE_NUM=$(echo "$ISSUE" | awk '{print $1}')
claude -p --model sonnet --max-turns 60 \
"Issue #${ISSUE_NUM} を実装してpushしてください"
sleep 30
done
done
実績: 2026年2月20日の1日で14件のIssueを自律処理しました。
ハマりポイントと学び
VMのディスクがすぐ満杯になる
25GBのOSディスクが100%になって全サービスが止まりました。原因は /var/log/syslog.1(11GB)と /var/log/auth.log.1(10GB)。AIは人間より遥かに多くのオペレーションを実行するので、インフラの余裕は人間基準の5〜10倍必要です。
エージェントに名前をつけた効果
当初はagent-01, agent-02のような番号でしたが、名前をつけた途端、開発のモチベーションが上がりました。「KIKIの監視機能を強化しよう」は「agent-02のヘルスチェックを修正」より楽しい。予想外の効果でした。
「全員が同じコード」の罠
最初にデプロイしたとき、9体全員がAiraのベースコードのコピーで動いていただけでした。これは「マルチエージェント」ではなく「マルチプロセス」です。各エージェントに役割特化の機能を載せる段階的ロードマップを策定することが重要です。
まとめ
- ローカルPCでもマルチエージェントシステムは作れる
- VirtualBox + systemd + GitHub Issues の組み合わせで自律開発ループが回る
- クラウド費用ゼロで24時間稼働(電気代は月数百円)
- 重要なのは「動くものを先に作る」こと。完璧な設計を待たない