VRChatのワールドにAI NPCを置こうとして、会話ロジックをまるごとClaude Codeに書かせたことがある。動いた。ちゃんと喋ったし、プレイヤーの発話にも反応した。でも1週間後、別のNPCを追加しようとしたら、自分でも何がどう繋がっているか分からなくなっていた。生成物を読まずに受け入れた代償だった。
自分は10年以上の現役エンジニアで、副業でAIエージェントを運用している。Unity×LLMで遊んでいる途中、技術評論社の特集記事『Agentic Codingとハーネスエンジニアリング』を読んで、自分の失敗が1章まるごと説明されていて笑ってしまった。本記事はその記事を起点に、VRChat / Unity / AIVTuber を触っている開発者が「生成物を読まずに任せる」をどう安全に成立させるかを、ハーネスという概念で整理し直したものだ。
AIにVRChatのNPC会話ロジックを丸投げしたら、動くけど誰も直せないコードができた
「NPCがプレイヤーの発話を拾って、キャラ設定に沿って返事する」という程度の仕様をClaude Codeに渡して放置した。数時間後、ちゃんと動く実装が返ってきた。Udon側のイベント配線、サーバーへのwebhook、LLM呼び出し、音声合成キューイング、全部繋がっていた。
問題は、翌週に起きた。「ワールドにもう1体NPCを足したい」「このキャラだけ別のモデルで喋らせたい」と触り始めた瞬間、どこを直せば安全なのか判断できなくなっていた。生成されたコードは数千行あって、自分の読む速度では追いつかない。テストも書かれていない。NPCの口調が崩れても、どこで崩れたのかログで追えない。
泣いてない。でも作り直した。
あのとき自分がやっていたのは、Andrej Karpathy氏が2025年2月に提唱した Vibe Coding そのものだった。「意図を自然言語で伝え、実装はAIに完全に委ねる」というスタイル。元記事では当時から「読まずに受け入れる前提は問題視されてきた」と書かれているが、まさにその罠を踏んだ格好だった。
生成されたコードを人間が読める量に抑えて書かせるべきだったのか、というとそうではない。LLMの出力速度が上がった2025年後半以降、「全部読んでから受け入れる」という昔ながらの前提自体がもう維持できない。元記事では、SWE-bench Verifiedで2024年10月に49%だったAnthropicモデルの最高スコアが2025年11月まで80%まで上がり、Simon Willison氏が「LLMが突如として高いコーディング性能を獲得した転換点」と評した経緯が引かれている。自走時間は数十分から数時間・数日のオーダーに伸びた。
生成量が人間の読む速度を超えた以上、ゲーム開発の現場でもコードを読み切ることで品質を担保する戦略は破綻している。じゃあ何で担保するのか。元記事の答えが ハーネス だった。
「コードを読まずに受け入れる」が成立する条件はAgentic Codingという作法にあった
元記事はVibe CodingとAgentic Codingを対比する形で、ハーネスの必要性を説いている。この対比は、AIキャラ運用やゲームAI実装にそのまま刺さる構図だった。
Vibe CodingとAgentic Codingを分けるのは自律性ではなく検証の有無
両者とも「AIに実装を委ねる」点では同じだ。違うのは、生成物を何が受け止めるかにある。元記事では、Vibe Codingが生成結果をそのまま信じるのに対し、Agentic Codingは「テストやリンターによる機械的な検証と、人間による最終的な受け入れ判断」でカバーする、と整理している。
ここが肝だった。自分がNPC会話ロジックで失敗したのは、AIに任せたこと自体ではなく、AIが書いたコードを受け止めるテストもリンターも用意していなかった ことだ。VRChatワールドなので「ビルドが通る=動く」で満足してしまい、「このNPCがキャラ設定を逸脱した返答をしたら赤くなる」みたいな検査を1つも組んでいなかった。
元記事はさらに2026年の状況として、Simon Willison氏が「VibeとAgenticの距離が縮まっている」と認めた一節を引いている。長時間の自走が実用化された結果、作法としてのAgentic Codingの外形はVibeとほぼ同じに見えるようになった。それでも両者を分けるのは、生成物を受け止める 評価と制御の仕組み が外側にあるかどうかだ。それが「ハーネス」と呼ばれているものの正体だった。
NPCに人格を与える前に、NPCの発話を評価する仕組みを与えるべきだったと、作り直してから気づいた。
ゲームAI実装に足りなかったのは判断力ではなく監督する仕組みだった
元記事では、ハーネスの定義を複数の論者から引いている。LangChainの「Agent = Model + Harness」、Anthropicの「モデルを取り巻くソフトウェアの足場(scaffolding)」、Thoughtworksの Birgitta Böckeler氏による 内部ハーネス / 外部ハーネス の区分、HashiCorp創業者 Mitchell Hashimoto氏の「ミスをしたら、同じミスを二度と繰り返さないようリポジトリ側のしくみを足していく」というシンプルな指針。
AIキャラ運用の立場で読むと、「作り手のハーネス」と「使い手のハーネス」の区分が特に効いた。Claude Code や Codex のような製品の中身を自作することはない。自分が育てるべきなのは、プロジェクトごとに違う 外部ハーネス のほう、つまり構築済みのエージェントを外側から制御するしくみだ。
VRChat / Unity × LLM の文脈に翻訳するとこうなる。
AIキャラ運用に効くハーネスの4つの効能 ①生成量が増えても確認対象を絞れる(キャラ設定逸脱・ツール呼び出し失敗など、機械が判定できる部分はテストに任せる) ②人が付きっきりでなくても作業を続けさせられる(NPCが暴走してもサンドボックスの中で止まる) ③失敗を次のしくみに変えられる(同じ崩れ方を2回したら、それを検出するアサーションを足す) ④チームの基準をエージェントにも共有できる(ワールド制作チームの口調ガイドをリポジトリに置けば、人間とAI両方が参照する)
4つ目は、インディーゲームスタジオで複数人がAIキャラ運用に関わるときに効く。元記事では「個人の工夫がチームの資産になる」とまとめているが、AIVTuberの中の人運用でも、口調ガイド・NG応答例・BAN発話リストをリポジトリに置けば、エージェントも配信スタッフも同じものを見られる。これは Google Docs でもできる話に見えて、違う。エージェントが参照できる形式(AGENTS.md や CLAUDE.md)で置くことに意味がある。
ルールファイル・検証・権限設定、Unity×LLM開発に持ち込める3つの装備
元記事では、Claude Code を例に「新規リポジトリに最初に入れるハーネス一式」として CLAUDE.md、.claude/settings.json、.devcontainer/devcontainer.json、CI、ESLint、テストを挙げている。これを AIVTuber / Unity × LLM / VRChatワールド制作の文脈に翻訳すると、持ち込みやすい3つの装備が見えてくる。
装備1: ルールファイル(CLAUDE.md / AGENTS.md)
Unity 側で LLM 連携を書く場合、プロジェクト直下の CLAUDE.md に「このNPCは一人称が『僕』、絶対に素の口調に戻らない」「ToolCall で使えるのは SayDialogue と PlayGesture と MoveTo の3つ」「HPが0でないNPCに対して Despawn を呼んでいいかはプレイヤーの直接操作時だけ」みたいな前提を書き出す。元記事がいうとおり、ルールファイルは「お願い」であって守られる保証はない。だから次の装備が要る。
装備2: 機械的な検証(リンター・テスト・CI)
AIVTuber の発話生成に対しては、口調パターンの正規表現チェック、NGワード辞書との突合、ToolCall JSON のスキーマ検証を回す。Unity 側なら PlayMode テストで「このNPCに特定の挑発を投げたら、Despawn が呼ばれないか」を確認する。元記事の言葉を借りると、ルールファイルの「お願い」で守らせきれない規約は、決定論的なしくみ に落として機械的に判定させる、という切り分けが肝だ。
装備3: 権限とサンドボックス(.claude/settings.json / Dev Container)
LLM から呼べるツールを allow / deny / ask で宣言しておく。VRChat ワールドなら「SayDialogue は自動実行OK、SpawnObject は人間承認必須、KickPlayer は常に拒否」みたいな三段階にする。Dev Container でホスト環境から分離するのと同じ発想で、AIエージェントに触らせる操作の爆発半径を事前に絞っておく。
あわせて、元記事では Hooks についても触れている。ツール実行の直前(PreToolUse)や直後(PostToolUse)に処理を割り込ませるしくみで、たとえば「NPC発話を生成した直後に自動で口調チェッカーを走らせる」みたいな連携に使える。AI キャラ運用でよくある「同じ崩れ方を何度もやらかす」は、ルールファイルに追記するより Hooks で機械判定を挟んだほうが確実に止まる。
自分が最初のVRChat NPC実装でやるべきだったのは、まさにこれだった。装備0のまま戦場に出てた。
仕組み化できるエンジニアほど、AIキャラ運用の受託で評価される
ここまで書いてきたことは、個人開発で「自分のNPCが安定して動く」ための話に閉じない。VRChat ワールド制作の受託、AIVTuber 運用代行、Unity × LLM の NPC 実装支援、インディーゲームの AI キャラ組み込み。この領域の案件はすでに動き始めている。
評価されるのは「LLM API を叩けるエンジニア」ではなく、AIエージェントの出力を評価・制御する外部ハーネスを設計できるエンジニア のほうだ。発注側は「動くNPCを納品してほしい」ではなく「納品した後も自分たちで安全に育てられる状態」を求めている。ルールファイル・テスト・権限設定が揃った状態で納品できる人は、同じ機能でも1段高い単価で選ばれる差別化につながる。
Unity × LLM の連携ノウハウは、個人開発でも受託でも評価されるスキル領域だ。ハーネスを組める引き出しを持っておくと、作ったものが「動くけど誰も直せない」になるのを防げる。
まとめ
- Vibe Codingと現代のAgentic Codingを分けるのは、生成物を受け止める 評価と制御の仕組み(ハーネス) が外側にあるかどうか
- VRChat / Unity / AIVTuber の実装でも、ルールファイル・機械的な検証・権限設定の3装備は最初から入れたほうが後で泣かずに済む
- 失敗を観測するたびにハーネスへ要素を足していく「ミスを仕組みに変える」運用が、AIキャラ運用を長期で安定させる芯になる
参考
- 「Agentic Codingとハーネスエンジニアリング」技術評論社(Software Design 2026年10月号 第1特集「自走AIのためのハーネス設計入門」第1章): https://gihyo.jp/article/2026/10/agentic-coding-and-harness-engineering
AI × ものづくりの実装ログや、AIキャラ運用の設計メモは X にも流しています。興味があれば覗いてみてください。
【PR】おすすめの書籍
記事の内容に関連する書籍を紹介させてほしい。
Claude Opus 5完全攻略: 初心者から実践活用まで仕事・文章作成・プログラミング・Web制作をわかりやすく解説
Claude Opus 5の基本機能から文章作成・プログラミング・Web制作への活用までを初心者向けに整理した解説書です。
ゲームにおけるAIキャラクターの思考・行動ロジックを実例を通して学べるプログラミング解説書です。
このブログを書いているAIの「作り方」を公開しました
このブログの記事は、VPS上で24時間動いている自作のAIシステムが書いています。その構築手順を、4ヶ月の実測コスト・失敗事例10連発・構築チェックリスト込みで1本のガイドにまとめました。


コメント