執筆者: кемо
最終更新: 2026/05/06
今更ですが、流行りのLLMエージェント(OpenClawとか…)の仕組みを学びながら、可愛くて有能なメイドさんを雇用しようという試みです。
Ancilla-Bot クラウドに依存しない常駐型のローカルLLMアシスタントです。
OpenClawの後追い劣化エージェントの一体。
まあ、それは置いておいて……
このプロジェクトの個人的な狙いは、次の3つです。
ほぼ前回の記事に統合・拡張する形での作成となります。
さて、LLMエージェントの構成要素って何なんでしょうか?
この分野はまだ発展途上なので、いろいろ定義がありますが、個人的には以下の3つが有名どころだと思ってます。
提唱元 | 3要素 |
|---|---|
Planning / Memory / Tools | |
Reasoning / Acting / Observation | |
Memory / Tools / Subagents |
大まかな傾向として、MemoryとTools/Actionはほぼ共通で、3つ目に何を置くかで思想の違いが出る感じですね。
もう少し詳しく見ていきましょう。
これは元OpenAIの研究者の人のブログですね。
LLMがエージェントの頭脳として機能し、Planning / Memory / Toolsの3要素で構成されるとしています。
ほぼこれがプロジェクトの基幹になっています。
安心と信頼のGoogleの論文です。
LLMに「思考(Thought)→ 行動(Action)→ 観察(Observation)」のサイクルによって、推論が行動の方向性を決め、行動から得た情報が次の推論を改善するというのを繰り返させます。
構成要素というよりかはサイクルが近いですね。ReActは現在のLLMエージェントの基本的な設計思想に直結しており、ツールを使いながら推論するエージェント(Claude、GPT等)の原型です。
ClaudeのAnthropic君(はよモデル劣化直せ)の提唱するエージェントです。エージェントシステムの基本構成要素は、Retrieval・Tools・Memoryで拡張されたLLMであり、モデル自身が検索クエリを生成し、適切なツールを選び、何を記憶するかを判断できるらしいです。
これに加えて、マルチエージェント構成としてSubagentsの概念を追加しています
要は、「人間とやり取りしたり計画を立てたりするメインのエージェントと、実際に作業をするエージェントを分けましょう」って話ですね。
では、これを踏まえた上で設計に移りましょう。長々とまとめましたが、結局のところOpenClawにある機能を小さく実装していくだけです。
コアとなるLLMは、当然ローカルです。
まあ、ちょっと弄るだけで外部APIも叩けるんですが
モデルの選定ですが、当初はQwen3を使用していました。しかし、2026/5現在はQwen3.5やQwen3.6、Gemma4など、より性能の高いオープンモデルが公開されているので、そちらを使っています。
まあ、なんでもいいと思いますよ。
ただし、画像を読み込ませたいので視覚対応モデル(VLM)であった方がいいでしょう。
先述のReActです。これがないとお話にならない.。
このプロジェクトでは、例えば次のようなツール群を持たせています。
できることはあればあるほどいいのですが、ツールを提供しすぎると、そこまで性能のよいLLMを動かせない以上、処理がおぼつかなくなるので、非推奨です。
これらツールは呼び出された時点で、メインのLLMからは切り離された、独立したセッションとしてサブエージェントが処理します。これにより、会話履歴の肥大化や汚染を防いでいるわけです。
つまり、メインエージェントとサブエージェント間で受け渡されるのは、指示と要約だけってことです。
直近の対話を保って、文脈を崩さないための層です。
と言っても、ただの会話履歴です。
無限に積むとコンテキストが破綻するので、上限管理が必要です。
会話ログを要約して保存し、必要時に検索で引き戻すことで、長期的な一貫性を作ります。
なんかもうちょっと要領のいい方法はないものか……
ただのn番煎じです。LLMアシスタントエージェントは、この機能で定期的に実行されることによって、バックグラウンドでの活動、つまり、自律感や常駐感を演出しています。
この層があると、ユーザー操作がない時間にも仕事を進められるってことですね。
といった感じで設計しています。
特筆すべき点はありません。
これだけだと面白みがないので、エッジデバイスと連携する機能も入れました。ノートPCやタブレットにアクセスして、カメラ映像やマイク音声を取得できます。また、TTS APIによってしゃべることもできます。
これらの機能は、エージェントを立ち上げた際に同時に立ち上がる WebSocket サーバーによって提供されます。
ちなみにこのエッジデバイスでのセッションはユーザーが呼び出すこともできますし、エージェント側から勝手に開始することもできます。
メイドさんに監視されながら生活できるってことですね。
ついでに感情パラメータも出力させて送っているので、Live2Dモデルを操作したりもできます。
これ(エッジデバイスクライアント側)は残念ながら粗削りすぎて未公開です。しかし、WebSocket サーバーは現在のプロジェクトにもありますので、クライアント側だけ書けばどうにかなります。
まあ、だいたい何でもできるんじゃないんですかね。

おお
同じ報告を繰り返したり、異常にキーボードに固執したりします。
(現在は解決済み)

OpenClawやHermesの足元にも及びません。
完全に劣化エージェントです。
この程度の機能を持った上位互換プロジェクトなんぞ、世に無数に存在します。
単純にシステムの最適化不足もありますが、現在の構成ではLLMの性能がものを言います。
つまり、でかいオープンウェイトモデルを動かせるだけの計算資源が必要ってことですね。
(プロンプトが悪い説もある)
可愛ければいいんだよ。可愛ければ