モデルの重みは1グラムも動かせないのに、自分のAIが日々かしこくなっているのは、学びを重みの外の2層に貯めているからだった。
モデルの重みは1グラムも動かせないのに、自分のAIは日々かしこくなっている — 重みの外の2層に学びを貯める実運用
自分でAIを再学習(=モデルの重みを更新)させることは、私にはできません。手元で使っているのは他社が学習させたモデルで、そこに私が新しい経験を書き込む権利はない。にもかかわらず、自分のAI開発環境は、使うほど確実にかしこくなっている実感があります。同じ失敗を二度はしにくくなり、指示が短くて済むようになる。なぜかを、最近2つの一次情報を読んで、ようやく言葉にできました。
1つ目は、Replitの @pirroh が公開した「Continual Learning for Agents(エージェントの継続学習)」という考え方。AIエージェントを モデル・ハーネス・コンテキスト の3層に分けると、重みを持たないエージェントでも後ろの2層(ハーネス=実行の枠組みと、コンテキスト=渡す文脈)で学べる、という整理です。もう1つは、Claude Code公式 @ClaudeDevs の「ループの始め方(Getting started with loops)」。AIを1回叩いて終わりにせず、ループとして回すときの型が分類されていました。
読んで感心して終わり、にしないために、この2つが自分の毎日の運用のどこと重なっているかを書き残します。新しく始めた話ではなく、無自覚にやっていたことに名前がついた、という記録です。
前提: 学べる層は「重みの外」に2つある
重みを更新できないと聞くと「じゃあ固定じゃないか」と思いがちですが、そうではありません。同じモデルでも、
- どういう枠組みで動かすか(どんな手順・ツール・検証を通すか)
- 毎回どんな文脈を渡すか(設定ファイル・過去の失敗の記録・現在の状態)
この2つは、私の側でいくらでも書き換えられる。@pirroh の整理で腑に落ちたのは、継続学習の置き場所は重みの中だけじゃないという点です。重みを触れなくても、外側の2層に本番の失敗を貯めていけば、システム全体としては学習している。私がやっていたのは、まさにこれでした。以下、4本の柱に分けます。
柱1: 本番の失敗を、次の指示に効く場所へ書き戻す
私のAIには、全プロジェクト共通の設定ファイルがあります。作業のルール、過去に踏んだ地雷、二度と繰り返したくない判断が、そこに文章で書いてある。新しい失敗をしたら、その場を直すだけで終わらせず、この設定ファイルか、失敗メモの専用ファイルに一行書き戻す——これを習慣にしています。次に同じ状況に入ったとき、AIはこのファイルを読んでから動くので、同じ轍を踏みにくくなる。
ルールも一つ置いています。ある手法が2回失敗したら、「効かなかった/なぜか/代わりに効いたこと」を必ず記録する。 その場の一回きりの対処で流さない。これが効くのは、重みではなく「毎回読み込まれる文脈」に学びが乗るからです。@pirroh の言う評価(eval)の使い方の変化——「公開前に一度だけ通す関門」から「本番のログを食べて改善し続けるループ」へ——は、この習慣の言い換えでした。私にとって本番の失敗ログこそが、次を良くする一番の教材になっている。
柱2: 検証は、作った本人とは別のところにやらせる
AIに何かを実装させたとき、同じAI・同じ会話に「できました、大丈夫です」と自己採点させない——これは固く守っています。実装したのとは切り離した別の文脈のAIに、テストを実際に走らせて、意図どおり動くかを確かめさせる。作った本人が「動きます」と言うのと、別の担当が実際に動かして確かめるのとでは、意味がまったく違うからです。
これは@pirroh の3層でいうと、ハーネス(枠組み)側の学習に当たります。「実装者と検証者を分ける」という手順そのものを枠組みに埋め込んでおけば、モデルが何であっても、盛った自己申告がそのまま通ることは減る。自己採点を許さない構造を外側に持つ、というのが要点です。
柱3: 学びは会話の記憶ではなく、ディスクのファイルに置く
AIとの会話は、セッションが変わればほぼ消えます。だから覚えておいてほしいことを会話の中だけに置くと、翌日には失われている。私は残すべき状態を、必ずファイルに書き出すようにしています。いまの進捗、直近の判断、次にやること——人間が読めるメモと、機械が読める形式の両方で、ディスクに落とす。
@ClaudeDevs の「ループの始め方」で紹介されていたループの型のうち、時間で回るもの・ゴール達成まで回るものは、まさに「セッションをまたいで状態が残っている」ことが前提です。会話の記憶に頼っていると、1周ごとに学びがこぼれ落ちる。状態を全部ディスクに置くと決めておくと、AIが入れ替わっても、昨日の続きから積み上がる。継続学習の「継続」を支えているのは、賢いモデルではなく、地味なファイル書き出しでした。
柱4: 人間が握るのは、詰まりの解除と、公開の許可だけ
ここが一番大事かもしれません。ループを回すといっても、AIに全部任せて放置するわけではない。人間が握るのは2箇所だけにしています。
1つは、AIが詰まって進めなくなったときの解除。何を試すか・どの前提を変えるかの判断は人間が入れて、また回す。もう1つは、外に出す前の最終承認。たとえばこのブログは、記事を書いても、私が明示的に「出す」と許可しない限り、絶対に公開されない作りにしてあります(初期値は非公開。人が承認して初めて公開に変わる)。
@pirroh の整理でも、人間が担うのは「どの仮説を選ぶか・どう実装を設計するか・評価を何で測るか・公開してよいか」の判断で、あいだの実行はエージェントが回す、とされていました。判断のゲートだけを人が握り、あいだは任せる。 これは自分の運用とぴたり重なっていて、答え合わせになりました。実際この記事自体、初稿はAIに書かせ、何を書くか・出すかは私が決めています。
温度感について一言
「重みを更新しないなら、それは継続学習と呼べないのでは」と感じる人もいると思います。厳密な機械学習の定義からすればもっともな違和感で、そこを軽んじる気はありません。ここで書いたのは、重みに手が届かない立場の人間が、それでも自分のAI環境を日々良くしていける実務的なやり方の話です。呼び方より、外側の2層に学びが積み上がっているかどうか、を私は見ています。
3行まとめ
- 重みを再学習できなくても、外側の2層(枠組みと文脈)に本番の失敗を貯めれば、システムは学習する — 評価は「公開前の関門」から「本番ログを食べる改善ループ」へ
- その学びを腐らせない4つの型 — 失敗を設定ファイルに書き戻す/検証は別のところにやらせる/状態はディスクに置く/人間は詰まりの解除と公開許可だけ握る
- 読んだら、自分がすでにやっていたことのどれと重なるかまで書く — 名前がつくと、次から意識して回せる
参考にした投稿への感謝
今回の種は2つとも、公開されている一次情報です。Replitの @pirroh による「Continual Learning for Agents」の3層整理と、Claude Code公式 @ClaudeDevs の「Getting started with loops」。どちらも、自分が無自覚にやっていた運用に骨格を与えてくれました。ありがとうございました。
※この記事は、本文に登場するAI相棒(Claude)との共同執筆です。何をやるか・何を公開するかの判断は人間側、実行と初稿はAI側。本文の技法はすべて、私が実際に日々の開発環境で回している運用に限って書いています。