はじめに
Claude Code などのコーディングエージェントの目覚ましい進化により、やりたいことドリブンな時代になりました。
一方で、既存のクラウドサービス・APIに頼りきりたくない、というか、やはりエンジニアとしては手触り感も欲しいし、より「オレオレ仕様」にしたい、全容を理解してハンドリングしたいという支配欲もある。
(お金貰ってプロダクト作るならば、もちろん既存の高性能なサービスにベットしますが。)
Qiita記事:【脱・従量課金】CPUローカルLLM×Microsoft Agent Frameworkで始める次世代マルチエージェント開発 (Vol.1 導入/01-get-started編) では、CPUのみのローカル環境で Microsoft Agent Framework (MAF) を動かす第一歩を踏み出しました。
APIの従量課金に怯えず、自分のマシンの中でAIが思考を巡らせる「手触り感」は、やっぱり「いいなぁ〜」って感じです(思うように行かないことのほうが多いが、それも楽しさ?)。
しかし、ゴールはもちろん原始LLM時代の「会話ができること」だけではありません。
ゴールとしては、「自ら考え、ツールを操り、必要であれば自らの分身(エージェント)すら作り出してタスクを完遂する」。そんな完全自律型システムが構築できたら良いなと考えています。
動的・JIT的に生産されるマルチエージェント工場のような、もしくは、会社組織という概念のAIエージェント化のようなプロダクトをイメージしています。
今回は、上記の最終完全体に向けて実装していきたい項目、及び、開発のロードマップを考えてみました。
Phase 1:基盤と対話インターフェース(実装済み)
まずは土台作りです。MAFの非同期設計を活かし、どこからでもエージェントに指示を出せる環境を整えています。
- ローカルLLM: Ollama を用いた認証不要・セキュアなローカル接続
- CLIでの対話: Hello AI Agent(寄り道として Claude Code のシステムプロンプトを取り入れてみたり)
- 自律的なコーディング: 不足している機能があれば、エージェント自らがPythonコードを書き、ツールとして自分に実装
- Discord対応: ターミナルだけでなく、Discord経由でいつでもエージェントを召喚
- ツールコーリング: 一旦、エージェントの挙動からコマンドラインでファイル/フォルダ操作などを実行させることに成功
- スラッシュコマンド: Discord 経由で処理の強制停止やコード書き換え後のリスタート、git commit / push、bash操作(/bash と打つと Discord 上にコードブロックが出て、そこに bash コマンドを打って送信すると、ローカルPCでそのまま実行される)
- Agent Loop(基本): 「思考 -> 実行 -> 観察」のループ構造。MAFの標準的な async for を用いたストリーミング出力により、ローカルLLMでも思考の過程をリアルタイムに追える「手触り感」を実現
Phase 2:知能の最適化と「道具」の獲得(次の難所)
ローカルLLMの限られたリソースで、いかに「賢さ」を引き出すか。ここがエンジニアの腕の見せ所、というか楽しいところ(?)。
- セキュアな実行環境(Dockerコンテナ化): エージェントが自由にコードを実行したり、システムを書き換えてもホスト環境を壊さないよう、使い捨て可能なサンドボックス環境を構築
- トークン圧縮とフィルタリング: 入力情報を削ぎ落とすことが、CPU推論の速度維持に直結
- 重複情報の忘却
- BERT / スパムフィルタ: 入力情報の重要度を判定し、不要なノイズをカット
- ベイズ最適化: プロンプトを自動で最適化
- プロンプト設計のシステム化: プレプロンプト / プロンプトブループリント: 毎回手動で指示を書くのではなく、エージェントの役割に応じた「設計図(Blueprint)」を動的に生成。いわゆる Lost in the Middle 対応したい
- A2A/MCP (Model Context Protocol): ローカルのDBや外部ツールとシームレスに接続し、エージェントが「手足」を使える状態に
- メタスキル作成: 「新しいスキルをどう習得すべきか」という戦略自体をLLMが構築
- 各種スキル作成: メタスキルで作る想定。いろんな便利系スキル入れたいな〜。夢しか無い
- ハーネスの導入: 自動生成されたスキルやコードが本当に正しく動いているかを、人間を介さずに自動でテスト・評価する安全帯。
- コードレビュワー/テスター: コード量のインフレ化に備えてゴミを量産させないために。無論、静的解析などは初期から pre-commit で
Phase 3:自己増殖(最終目的地)
ここからが「勝手にやってくれる」レベルの世界です。エージェントは単なるプログラムから「動的な組織」へと進化します(AGIとはいかずとも、定義次第ではもうシンギュラリティと言っても良いのでは?)。
- エージェント作成スキル: 複雑なタスクに直面した際、そのタスクに特化した「サブ・エージェント」を自律的に生成(JIT: Just-In-Time AI Agent と命名しようと思いきや、同じようなことを考えている人は世界にも居るわけで。だが、個人の勉強なのだから気にしない)
- 完全なるAgent Loop: 人間の介入を一切排除し、エラー発生時の自己修正から完了管理のフィードバックループ、最終報告までを完結させる
まとめ:APIキーを捨てて、自由を手に入れる
「ローカルLLM × MAF」という選択は、単なるコストカットではありません(もちろんMAF以外でも)。
それは、中身がブラックボックスなAPIに依存せず、システムの隅々まで自分の手で制御するという、エンジニアとしての本質的な楽しさを取り戻すプロセスなんじゃないかと考えています。
今後、このロードマップに沿って、MAFの使い方試しつつ色々やっていく過程で、随時プロセスを記事化していこうと思います。