USBに収まるAIを作ってみた。── 弱いローカルAIを「ハーネス」で強力にする
はじめに
お久しぶりです。気がつけば、記事を書くのはずいぶん久しぶりになってしまいました。授業に、行事に、研究にと、毎日があっという間に過ぎていきました。それはそれで幸せなことなのですが、こうしてまた「作ったものの話」を書ける時間が取れて、正直ほっとしています。
それと先日、オンラインで開催されたAIの勉強会に参加してきました。これがとても良い時間で、いろんな立場の方が、「AIを教育にどう活かすか」を本気で考えていました。アプローチは人によってバラバラなのに色々なアイディアをしれてよかったと感じました。私も負けてられませんね。
その勢いのまま、今日の記事です。
その会の話にも出てきたのですが、学校でAIを使おうとすると、どうしても「子どものデータをどう守るか」という問題が立ちはだかります。これを真剣に考えると、APIでも心もとないのが現実です。そこで、ローカルモデルをうまく使うという選択肢が、どうしても外せなくなってきます。
そこで今回は、以前紹介した。USB内蔵AIをベースに、「弱いAIでも、それなりに仕事に使えるものへ改良する方法」 を書いていきます。
そもそも、ローカルLLMとは
まず前提の確認からです。ローカルLLM――つまり、手元のパソコンの中だけで動くAIです。最大の特徴は、
オンラインに接続しない。外とデータのやり取りを一切しない。
という点です。入力した文章も、AIが考えた内容も、すべてその端末の中で完結します。どこの会社のサーバーにも、何も送りません。
子どもの名前や情報を扱う学校現場で、これは決定的に大きい。だからこそ私は、このローカルLLMを USBメモリに丸ごと入れて、挿すだけで動く ところまで持っていきました(以下記事参照)。
インストール不要、ネット不要、データは外に出ない。しかも無料!条件だけ見れば、学校など個人情報を使用する職業にぴったりのAIです。
……ただし、弱点があります
USBに収まるサイズのローカルLLMは、どんなに良いモデルを選んでも、性能は弱くなります。
小さいモデルは、軽くて持ち運べる代わりに、物知りではなく、考えも浅い。クラウドにある巨大なAIと正面から比べると、力の差は歴然です。実際に使うと、ハルシネーションにも、まだまだ頻繁にぶつかります。(最近聞いて見たところ、織田信長が天下統一していたりしました。)
では、軽さ(=USBで動く・データを守れる)を手放さずに、賢さの方をなんとか底上げできないか。その解決策として私が注目したのが、ハーネスという考え方でした。
「ハーネス」を捉え直す ── 御す道具から、働かせる道具へ
ハーネス(harness)とは、もともと馬などにつける引き具・装具のことです。AIの世界でも、モデル本体の「外側」に組む仕組み――手順や道具立て、制御のしかけ――を、まとめてハーネスと呼びます。

ハーネスという言葉は、ふつう 「強くて手に負えないAIを、こちらの言うことを聞かせる(御す)」 という文脈で使われがちです。暴れ馬に手綱をつけて制御する、というイメージですね。賢すぎるAIを、安全に・思いどおりに動かすための道具。それが一般的なハーネス像です。
でも、私は、非力な馬でも、引き具と手綱をきちんとつけてやれば、荷車を引くという立派な「仕事」ができます。力そのものを増やすのではなく、持っている力を正しい方向に引き出してやる。これだって、立派なハーネスなんじゃないか。 と考えました。つまり、
強いAIを御すのではなく、弱いAIを、ちゃんと働ける状態まで引き上げてあげる。

御すためのハーネスではなく、働けるようにするためのハーネス。 この捉え直しが、今回のアイディアの核心です。
そして、この考えのもとで、新しいAIエージェントを作って見ました。元にするモデルは Gemma 4 E2B です。約2.85GBという、USBにすっぽり収まる軽量モデル。単体では決して強くありません。この「弱いけれど軽い」相棒を以下のハーネスで強化してみたいと思います。
実際に作ってみた ── 3つの工夫
ここからは、実際にAIエージェントへ組み込んだ工夫を、3つ紹介します。
工夫① AIに「ReActループ」を仕込んだ

ひとつ目は、AIの考え方そのものを変える仕組み、ReActループです。
ReAct(リアクト)は、Reason(考える)+ Act(動く) を組み合わせた言葉です。AIに一発で答えを出させるのをやめて、「考える → やってみる → 結果を見る → また考える」を繰り返させる仕組みのことを言います。
具体的には、AIに次の4ステップをぐるぐる回らせます。
ステップ 中身 ① 考える(Thought) いま何をすべきか、自分の言葉で整理する ② 動く(Action) 道具を使う(計算する・調べる・ファイルを読む など) ③ 見る(Observation) 道具が返してきた結果を受け取る ④ また考える 結果を踏まえて、次の一手か、最終回答かを決める
文字だけだと分かりにくいので、AIの「頭の中」を覗いた擬似ログで見てみます。「今日って何日?」と聞かれた場面です。
ユーザー:今日って何日だっけ?
① 考える:自分は今日の日付を知らない。日付ツールを使えばいい。
② 動く :[日付ツールを実行]
③ 見る :2026-06-21(土)と返ってきた。
④ 考える:これで答えられる。最終回答を返そう。
AI:今日は2026年6月21日(土)です。
ポイントは、「自分の苦手を自覚させて、頼らせる」ところです。
弱いモデルの弱さは、「知っているフリで答えてしまう」ところに出ます。そこで、いきなり答えさせるのではなく、まず立ち止まって考えさせ、苦手なことは外の道具に任せる。この段取りを踏ませるだけで、ハルシネーションが減りました。
モデル本体が万能である必要はない。段取りの方を設計してやれば、小さなAIでも信頼できる答えを返せるようになる。 これがハーネスの効きどころです。
工夫② 「全力で動かす」のをやめる ── 変速機(トランスミッション)

ふたつ目は、速度と賢さのバランスを取る工夫です。
私は、AIを見るたびに、
強力なAIはアメ車のようで、弱いAIは軽自動車みたいだな
とかってに思っていました。このイメージが次のアイディアにつながります。
ReActループは強力ですが、毎回これを全力で回すと、どうしても遅くなります。「おはよう」の一言に、4ステップの熟考は要りません。非力なエンジンで全力疾走を続けたら、すぐ息が上がってしまいます。
そこで、自動車の変速機(トランスミッション)のような仕組みを入れました。やることの重さに応じて、AIの「ギア」を自動で切り替えるのです。
軽いギア:あいさつや雑談は、サッと低い力でかえす。
重いギア:調べ物や計算が必要なときだけ、上のギアに入れて、さっきのReActループをフル回転
非力なエンジンだからこそ、力を無駄づかいせず、要るときに要るだけ使う。「全力を出さない」という設計が、軽いマシンで実用速度を保つコツでした。
工夫③ AIの「外」に記憶を持たせる

3つ目は、AIに記憶(記録)を持たせる工夫です。
じつは、AIモデルそのものは、とても忘れっぽいんです。基本的に、ひとつのやり取りが終われば前の話は忘れてしまいますし、会話が長くなると、最初のほうの内容からこぼれ落ちていきます。とくに小さいモデルは、一度に覚えていられる量(コンテキスト)が小さいので、この「もの忘れ」が起きやすい。
そこで、Hermesエージェント(Hermes Agent)の考え方を参考に、AIモデルの“外側”に、やり取りを記録しておく部分を追加しました。
(ヘルメスについての説明は省略します。私は直接触ったことないので…)
ポイントは、記憶をモデルの中に詰め込もうとしないことです。会話の内容は、USBの中のデータベース(SQLite)にそのまま書き溜めておく。そして必要になったときだけ、関連する部分を取り出して、AIにそっと差し出す。記憶の置き場所を、非力なモデルの“頭の中”ではなく、その“外”に用意してあげるイメージです。 人間の脳なら長期記憶と短期記憶を分けるイメージですね。
これもまた、ハーネスの発想そのものです。モデルを大きくして記憶力を上げるのではなく、外に記憶を置いて、必要なぶんだけ渡す。 弱い相棒の苦手を、外側の仕組みで肩代わりしてあげる――今回の三つの工夫は、根っこでは全部つながっています。
今日はここまで ── 感想と、これからの課題

今回の改良で、「弱いけれど、ちゃんと働くAI」に、また一歩近づけたと思います。USBに収まる小さなモデルでも、ハーネス(ReActループ)と変速機を組み合わせれば、想像以上に頼れる相棒になる。やってみて、その手応えがありました。
ただ、いいものができた一方で、改良の余地はまだまだ残っています。
いちばんの課題は、速度です。ツールを使わせる(ReActループを本格的に回す)と、どうしても処理が遅くなります。かといって「じゃあ大きいモデルにすればいい」とすると、今度はパソコンの性能に依存してしまう。高性能なPCでしか動かない、では本末転倒です。
「どんなパソコンでも動く」と「ある程度は賢く答えてくれる」を、両立させる。 ――この二つを同時に満たすAIを作り切るには、まだまだ時間がかかりそうです。
それでも、今回たどり着いた成果が、同じように「ローカルでAIを使いたい」と考えている誰かの役に立てたなら、これ以上嬉しいことはありません。勉強会で出会った皆さんのように、私も自分にできるやり方で、少しずつ前に進んでいこうと思います。
それでは、また。
