第1章: LLM は「続きを書く機械」── ループの大前提
ChatGPT が世界に登場した 2022 年末、誰もが驚いたのは 文章の上手さ だった。 質問すれば答えが返る。コードを頼めばコードが返る。 画面の中で、AI が “喋っている” ── これだけで世界は十分に驚いた。
それから 3 年。 いま驚いているのは、ぜんぜん違うことだ。
「tests/ が全部緑になるまで直しておいて」とだけ打って席を立つ。
戻ってきたら、23 ファイル書き換わっていて、テストが緑で、変更内容が日本語で要約されている。
ChatGPT は 答えた。 Claude Code や Cursor は 動いた。
LLM の世代が変わったのか? いや、中身の LLM は同じ系列のままだ。 では、何が変わったのか。
1.1 そもそも、LLM は何をしているか
ChatGPT も Claude Code も Cursor も Devin も、中身は 大規模言語モデル (LLM) だ。 モデル自体は、驚くほど単純なことしかしていない。
LLM は、与えられたテキストの “続き” を 1 トークンずつ予測する。それ以上のことはしていない。
「明日の天気は」と入力すれば、過去に読んだ膨大な文章の統計から、もっとも自然な続きとして「晴れでしょう」や「雨が降りそうです」を選ぶ。
「def fibonacci(n): の続きを書け」と入力すれば、コードらしい続きを返す。
つまり LLM の本質は 続きを書く機械 だ。 それ以上でも、それ以下でもない。
トークンLLM が読み書きする最小単位。だいたい単語より少し短い ── 「東京タワー」は「東京」「タワー」のように 2 トークン、英語の “playing” は “play” “ing” のように分けられる ── くらいの粗さ。本書では、ひとまず「単語の親戚」と思っておけばよい。詳細は本書のスコープ外(自然言語処理の教科書を参照)。
ここで素直な疑問が湧く。
続きを書くだけの機械が、なぜ ファイルを書き換えたり、テストを実行したり、Pull Request を作ったり できるのか?
これが本書全体を貫く、最初の問いだ。
1.2 単発の補完では、絶対にできないこと
ChatGPT 初期の使い方を思い出してほしい。
- 人間が質問を入力する
- モデルが答えを生成する
- 終わり
このサイクルでは、LLM はずっと “喋っている” だけ で、外の世界には一切触れない。
たとえば「fibonacci.py のバグを直して」と頼んでも、ChatGPT (Web 版) にできるのはこれだけだ。
| 頼まれたこと | ChatGPT 単発でできる? |
|---|---|
fibonacci.py の中身を 読む | できない(ファイルが手元にない) |
| バグを直したコードを 保存する | できない(書き込みできない) |
| テストを 走らせて確かめる | できない(コマンド実行できない) |
| 結果を見て 直し直す | できない(観測する手段がない) |
できるのは、「こう直すといいですよ」というテキストを返すこと だけ。 これは 世界に手を出せないモデル だ。
私はこれを「ガラスの向こうの専門家」と呼んでいる。 すごく賢い同僚が、防弾ガラスの向こうに座っていて、絶対にガラスの外に出てこない。 こちらが投げた質問には、的確な答えを しゃべってくれる。 だが、こちらの PC のキーボードには、絶対に触れてくれない。
これがチャットボットの原理的な限界だ。
そして、ここに コーディングエージェントが起こしたブレイクスルー がある。
LLM が偉くなったから Claude Code が動くのではない。 LLM は何も変わっていない。
変わったのは LLM の外側 ── 専門家にキーボードと画面を渡し、行動の結果を見せ続ける “作業環境” のほうだ。
1.3 ループを巻きつけるという発想
ここで誰かが、こんなことを思いつく。
「LLM に 道具を渡して、その出力を また LLM に食べさせ続ければ、自分で動くんじゃないか?」
具体的にはこういうことだ。
- LLM に 道具のカタログ を見せる
→ 「
ファイルを読むファイルを書くシェルを実行するという道具が使えますよ」 - LLM に頼みごとをする → 「fibonacci.py のバグを直して」
- LLM は 道具を呼ぶ命令 をテキストで返す
→ 「
ファイルを読む(fibonacci.py)を実行してください」 - 外側のプログラム がそれを受け取って、本当にファイルを読む
- 読んだ内容を、また LLM に 続き として渡す
- LLM はその内容を見て、次の命令を返す
→ 「
ファイルを書く(fibonacci.py, ...)を実行してください」 - これを 目的が達成されるまで繰り返す
LLM 自身は相変わらず「続きを書く機械」のままだ。 何ひとつ拡張されていない。
しかし 外側に道具とループを巻きつけた瞬間、LLM はファイルを読み書きし、テストを走らせ、結果を見て直す ── つまり 動ける 存在になる。
これが、本書のすべての出発点だ。
この図は本書を通じて 何度も戻ってくる 図だ。 第2章ではこの三角形をもう一段深く解剖し、第3章ではループの内部リズム(think → act → observe)に踏み込む。
1.4 三つの登場人物 ── LLM・道具・ハーネス
ここまでに、3 つの登場人物が出てきた。整理しよう。
| 役者 | 役割 | 例 |
|---|---|---|
| LLM | 続きを書く。何をするか を決める | Claude / GPT / Gemini |
| 道具 (Tool) | 外の世界に触る具体的な手段 | ファイル読み書き、シェル実行、Web 取得 |
| ハーネス (harness) | LLM と道具の 間を取り持つ外側のプログラム。ループ本体 が住む場所 | Claude Code 本体、Cursor、Codex CLI、Devin |
ハーネス (harness)「馬具」を意味する英単語。LLM という馬を 乗りこなすための装具一式 ── ツール接続、ループ制御、UI、停止判断、安全装置 ── が住んでいる場所、というニュアンスで使われる。Claude Code というプロダクトの「本体ソフトウェア」だと思えばだいたい合う。
エージェント = LLM + 道具 + ハーネス
この三つのうちどれが欠けても “動く” ようにはならない。 道具がなければ世界に触れない。ハーネスがなければループが回らない。LLM がなければ何も考えない。
ニュースや SNS では「Claude Opus 4.5 がすごい (= LLM)」「Cursor が便利 (= UI)」のように、特定の役者だけが脚光を浴びる。 だが本書を通じて何度も戻ってくる視点はこうだ。
エージェントの賢さの大半は、LLM ではなく “ハーネスの設計” が担っている。
どんな道具をどう用意するか。ループの停止条件をどう決めるか。文脈をどう保つか。権限をどう絞るか。 これらの設計判断が、同じ LLM を使っても天と地ほどの差 を生む。
「Devin と Claude Code は LLM がどちらも Claude 系なのに、動きが全然違う」── これはハーネス設計の違いだ。 「Claude Code が前より体感速くなった気がする」── 大半はハーネス側の改善が効いている。
本書はその「設計判断」を一つずつ解きほぐしていく。
1.5 「エージェント」という言葉の正体
ここまで読むと、業界で言う エージェント という言葉の正体が見えてくる。
エージェント (Agent)LLM・道具・ハーネスを組み合わせ、目的を与えるとループを回して自律的に行動する プログラム。 単発で答えるだけの チャットボット とは違い、自分で道具を選び、結果を見て次の手を考え、目的に達するまで繰り返す。
似た言葉と混同しやすいので、軽く整理しておく。
| 用語 | 意味 | 例 |
|---|---|---|
| 補完 (Completion) | LLM の生の機能。テキストを与えると続きを返す。1 往復で終わる | API でモデルを叩く |
| チャット (Chat) | 補完を会話風に並べたもの。ユーザーが質問、モデルが応答。手は出さない | ChatGPT (Web)、Claude (Web) |
| エージェント (Agent) | チャットに 道具とループ を足したもの。手を出して、自分で繰り返す | Claude Code、Cursor の Agent モード、Devin |
ChatGPT は チャット。Claude Code や Cursor の Agent モードは エージェント。 両者の差は LLM の賢さではなく、外側の構造設計 だ。
実務メモ最近のチャット UI(ChatGPT、Claude.ai、Gemini)は、内部で限定的な道具(Web 検索、コード実行サンドボックス、ファイル添付)を呼べるようになっており、純粋なチャットとエージェントの境界はじわじわ曖昧 になっている。本書では便宜上、「目的を与えると複数ターン自律的にループする」のをエージェントと呼ぶ。
1.6 では「ループ」はいつ止まるのか
最後に一つ、素朴な疑問を残しておく。
LLM はその気になれば永遠に「続き」を書き続けられる。 ファイルを読み、書き、テストを走らせ、また直し、また走らせ ── このループはどこで止まるのか?
答えは 「LLM 自身が “もう道具を呼ばない” 出力を返したとき」 だ。 つまり LLM が「終わりました、こういう変更をしました」のような 道具呼び出しを含まないただのテキスト を返した瞬間、ハーネスはループから抜ける。
裏返せば、LLM が “終わり” を判断できないと、ループは延々と回り続ける。 これが現代のエージェントの最大の難しさのひとつで、
- 早めに止まりすぎる「早すぎる終了」
- 永遠に止まらない「無限ループ」
という 正反対の二つの病 として現れる。 第4章で停止条件を、第10章でこの二つの病を、それぞれ正面から扱う。
「エージェント = LLM + 道具 + ループ」── この一行が頭に入っていれば、本書の残りはほとんど “この三者をどう設計するか” の話に過ぎない。
第2章ではこの三角形をもう一段深く解剖する。 特にハーネスという、ふだんあまり意識されない役者に、正面から光を当てる。
この章の振り返り
- LLM の本質は「続きを書く機械」。それ以上でも以下でもない
- 単発の補完では 世界に触れない ── ガラスの向こうの専門家
- 道具と ループを巻きつけた瞬間、LLM は “動ける” 存在になる
- エージェントは LLM + 道具 + ハーネス の三者で成立する
- ChatGPT は チャット、Claude Code や Cursor の Agent モードは エージェント
- 同じ LLM を使っても、ハーネスの設計 が違えば挙動はまるで別物になる
- ループは LLM が「道具を呼ばない出力」を返した瞬間に止まる ── ここに固有の難しさが眠る
この章で読めるようになるツイート / ブログ
- 「Claude Opus 4.5 が出たのに、Claude Code のほうが体感速くなった気がする」 → モデルではなくハーネス側のループ・道具設計の改善が効いている、と読める
- 「ChatGPT に “ファイル直して” は無理だが、Claude Code なら直してくれる。中身は同じ系列の LLM のはずなのに」 → 差は LLM の賢さではなく、外側に道具とループが巻きついているかどうか
- 「
claude --print(単発) とclaude(対話) で、同じ依頼でも結果がここまで違うのか」 → 単発補完とループ駆動の差そのもの。同じモデルでも “動かす” 仕組みの有無で別物になる
次章は、本章で図 1.1 に置いた 三角形を、もう一段深く解剖 する。 特に「ハーネス」という、ふだん意識されない役者が 何をしているのか、何をしていないのか を腑に落とす。