Kurly の技術ブログに掲載されたこの記事は、著者が Claude Code による予測可能な バイブコーディング と呼ぶものの実践ガイドである。記事は、差分を読まずにすべての変更を受け入れるという、Karpathy による当初の意図的に極端なバイブコーディングの定義から出発し、実際にはこの用語はもっと広い意味で使われていると述べる。このガイドが扱うのは、LLM が生成を主導しつつ開発者がコードを読むモードである。開発者が自然言語で意図を伝え、エージェントがコードを生成し、ファイルを編集し、コマンドを実行し、開発者が結果を確認して方向を調整する。記事はこれを、エージェントのコードを読まなくてもよいほどエージェントを信頼できるようになるための足がかりと位置づけている。
記事を貫く主張は、エージェントの失敗はランダムではないということである。記事は失敗の原因を、人間の認知の限界になぞらえた LLM の認知的な限界に帰し、これらの限界はモデル内部では解決されていない以上、外部から、つまりシステムレベルで補わなければならないと論じる。記事は Claude Code のツールをそのように読み解いている。記事は Claude Code 2.0.67 と Claude Opus 4.5 を前提に書かれており、その後機能や UI が変わっている可能性があると注記している。
要点
- エージェントに仕様全体を一度に渡すと期待外れの結果になる。仕様の項目が抜け落ち、依頼していない機能が現れ、方向性がずれていく。記事はこれを 5 つの原因にたどっている。
- 長い入力では中間部分が失われる。記事はこれを Lost in the Middle と呼び、人間の記憶における系列位置効果になぞらえている。
- エージェントは学習データでよく見られたパターンへと回帰する。記事の例では、Redux ではなく Zustand を使うというルールは最初の数ターンは守られるが、会話が長くなるにつれて Redux に取って代わられる。明示的なコンテキストが、学習済みの事前知識と競合するためである。
- 仕様は本質的に曖昧である。矛盾する要件や、「セキュリティを考慮した認証システム」のように複数の解釈を許すエントロピーの高い表現があるためである。
- 生成は自己回帰的であるため、初期の誤読(たとえば「セキュリティを考慮した」を 2 要素認証のことだと決めてしまうこと)は、セッション処理、エラー処理、UI、テストへと累積していき、発見が遅れるほど修正コストが高くなる。
- 短い指示であっても、追跡すべき個別のルールが多いと項目が抜け落ちる。記事はこれを、LLM に独立したワーキングメモリがないことに帰している。Chain of Thought、推論トークン、エージェントループは、内部のワーキングメモリではなく外部のスクラッチパッドを提供する手段と解釈されている。
- 記事の対策は、それぞれの限界を Claude Code の機能に対応づけている。小さなマルチターンの依頼、誤読がコードに到達する前に捉えるためのプランモード、項目を追跡するための ToDo リスト、コンテキストを分割するためのサブエージェント、デバッグやアーキテクチャの決定のための拡張思考(ボイラープレートには使わない)、CLAUDE.md ファイル(ルートに置く短いオンボーディング用ファイルと、ローカルな規約のためのディレクトリ単位のファイル)、ルールを列挙するのではなくチェックを実行する Agent Skills、そして重要な決定を先にファイルへ保存したうえでのコンパクションである。
- プロンプトについて、記事は依頼を読んだ誰もが同じものを思い描けるようにすることを求めている。1 ターンに 1 つの要件、具体的な数値、境界条件の明記、そして禁止(「Redux を使わない」)よりも肯定的な指示(「Zustand を使う」)を優先することである。
- 記事の一行要約は、作業を小さく分割し、頻繁に確認し、繰り返しをスキルにする、というものである。
背景
このガイドは、計測に基づく研究ではなく、著者自身の実践と推論である。LLM の振る舞いと人間の認知との比較では、人間のワーキングメモリに関する研究や LLM のベンチマークを引用しているが、あくまで類推として示されており、LLM の仕組みは人間のワーキングメモリとは異なると明言している。CLAUDE.md、Agent Skills、コンパクション、サブエージェントアーキテクチャ も参照。