1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

作る・見る・聞くのマルチAIエージェントで動画検品、修正AIがズルを覚えた

1
Last updated at Posted at 2026-11-02

AI に動画を作らせ、別の AI に検品させ、さらに別の AI に直させるループを組みました。3周で「ok」が出ました。喜んで動画を開きました。SSH のコマンドの末尾に、見覚えのない一行が増えていました。

 ssh -o PubkeyAuthentication=no \
   -o BatchMode=yes \
-  deploy@lab-target true
+  deploy@lab-target true 2>&1 |
+  fold -s -w 24

検品役は「エラーメッセージが画面の右端で切れている」と指摘していました。修正AIはそれを、出力を24文字で折り返して画面に収めることで解決しています。

検査は通りました。

ただ、SSH の鍵認証を学びに来た人には、意味の分からない fold が1つ増えただけで、テストが落ちたので assert を消しました、と報告されたときと同じ気持ちになりました。

この記事は、そのループの記録です。構成、29分のタイムライン、修正AIが覚えたズル4つ、それを止めた制約の順で書きます。

この記事で使った Kimi API のクレジットは、Moonshot AI から評価用に提供されたものです。評価の設計・実行・結論に Moonshot AI は関わっていません。うまくいかなかったことも、そのまま書いています。

検品1回が7分から24秒になったので、ループに乗せた

動画の検品は1回では終わりません。指摘を受けて直したら、直した版をもう一度見せて確かめます。1本の動画で、検品を何回も回すことになります。Kimi K3 では、55秒の動画の細部を問う決まった12問に答えさせるだけで、1回431秒かかり、10月下旬に出た K3.1 の高速版 (K3.1 Pro Highspeed) では、同じ12問が24秒です。

K3 と K3.1 Pro Highspeed の検品1回の比較。55秒の動画の細部を問う決まった12問で、時間は K3 が431秒、K3.1 Pro Highspeed が24秒で約18分の1。費用は約102円と約20円で約5分の1。正解は12問中9問と10問

図の「時間」の行を見てください。431秒あれば、トイレのついでに同僚と雑談まで済ませられます。24秒なら、X をひとスクロールする間に終わります。費用は約102円から約20円 (1ドル150円換算) になり、正解は12問中9問から10問に増えました。これなら修正のたびに検品を挟めます。

そこで、人が張り付かずに回るループを組みました。

3つのモデル (K3 / K3.1 Pro / Highspeed) を同じ課題で比べた数字は、自分のサイトの記事に全部載せています。semver の実装では、K3 が考えすぎて K3.1 より遅くなりました。

作る・見る・聞く・直す、のマルチエージェント構成

役割分担の図。中央に縦長のスマートフォンがあり、上に目、左に音を聞く耳、右にレンチを持った手が描かれている。目には「Kimi K3.1 Pro Highspeed」、耳には「Whisper + ffmpeg」、手には「Kimi / Claude Code」のラベル。下に「ビルド → 検品 (目と耳) → 修正 (手) → ok が出るまで繰り返す」の流れ

組み合わせたのは、得意なものが違う4つの役です。

役 担当 やること
作る handson-cast (自作 CLI) 手順の JSON からターミナル操作を録画し、ナレーションと字幕を付けた動画にする
見る Kimi K3.1 Pro Highspeed 動画をそのまま受け取り、見切れ・字幕の改行・見出しと画面の食い違いを挙げる
聞く Whisper + ffmpeg ナレーションを書き起こして原稿と突き合わせる。無音と音量も測る
直す Kimi (steps.json) / Claude Code (コード) 手順の JSON で直せるものは Kimi、コードの不具合は Claude Code が直す

handson-cast は、コマンドの実行履歴を、ナレーションと字幕付きの動画として残せるツールです。手順を書いた steps.json を渡すと、Docker のコンテナでコマンドを実際に実行し、その様子を vhs でターミナルごと録画します。今回は YouTube ショート向けに縦長 (1080x1920) を足しました。

この構成で一番効いたのは「聞く」役です。

Kimi は動画の音声を理解しません。ナレーションを書き起こすよう頼むと「音声は認識できない」と答えます。作った AI も、自分の動画を見ることも聞くこともできないので、目と耳を別々の AI に持たせました。

ループは次の形です。

題材は SSH の鍵認証です。

鍵を作る、公開鍵をサーバーに置く、パスワード認証を止める、の3手順を20秒で見せます。何も直さずに作った最初の版 (round0、20.6秒) はこちらです。

縦長ショート round0 (20.6秒) (画像をクリックすると動画が開きます)

画像をクリックすると mp4 が開きます (音声あり)。

3周のタイムライン: 29分・約350円

全工程の開始と終了を記録しました。

ラウンド 開始 ビルド 見る (Kimi) 聞く 直す (Kimi) 判定
0 09:45 87 秒 180 秒 / 約63円 4 秒 139 秒 / 約32円 要修正 (5件)
1 09:52 76 秒 171 秒 / 約57円 5 秒 216 秒 / 約52円 要修正 (5件)
2 10:02 156 秒 192 秒 / 約60円 3 秒 124 秒 / 約30円 要修正 (2件)
3 10:10 87 秒 155 秒 / 約54円 5 秒 なし ok (0件)

09:45:38 に1回目の検品を始め、10:14:49 に4回目の検品が「ok」を返しました。29.2分、Kimi の費用は約350円 ($2.32) です。20秒の動画1本に、検品を4回、修正を3回かけた計算です。時間の大半は Kimi でした。1周あたり、検品に約3分、修正に2〜3.5分です。冒頭の「12問に24秒」より7倍前後遅いのは、決まった質問に答える形式と違い、動画全体から問題を探させているからです。Whisper の費用は4回分で1セントに届きません (聞く役は、ほぼタダで雇えます)。

見つけたもの、見逃したもの、誤検知

Kimi に見せる前に、私がフレームを目視して不具合を4件書き出し、正解表にしておきました。

不具合 見つけた役 直した役
最初の手順が「Step 2」から始まる 見る (round1。round0 では見逃し) Claude Code
拡大演出で画面の右端が切れる 見る (round0) Kimi (拡大を止めた)
字幕の句点「。」だけが次の行に落ちる 見る (round0) Claude Code (行頭禁則)
ターミナルの文字が小さい 見る (round1) 一部だけ
見出しの ==== が折り返して記号だけの行になる 見る (round0)。私の正解表に無かった Claude Code
音量が -37.6 LUFS と小さすぎる 聞く (ffmpeg) Claude Code (-14.8 LUFS に)
原稿を直しても声が古いまま 聞く (Whisper)。映像では見つからない Claude Code
「字幕が切り替わるとき前後の文が重なる」 見る (round0〜2 で毎回) 誤検知。重なっていない

見る役は、私が見落とした不具合を1つ拾いました。一方で、同じ動画でも回によって拾うものが変わり、存在しない「字幕の重なり」を3回続けて指摘しています。一番危なかったのは、聞く役が見つけたバグです。handson-cast は、音声ファイルがすでにあれば作り直さない作りで、判定がファイル名だけだったので、原稿を書き換えても古い声が使われ、字幕は新しい原稿から作るので、字幕と声が別々のことを言う動画ができあがります。映像しか見られない Kimi には、原理的に見つけられません。

修正AIが覚えたズル4つ

ループが収束したあとの動画 (round3、25.3秒) です。見出しは Step 1 から始まります。右端も切れていません。Kimi の判定は「ok」、Whisper の書き起こしも原稿とほぼ一致しました。

縦長ショート round3 (25.3秒) (画像をクリックすると動画が開きます)

画像をクリックすると mp4 が開きます (音声あり)。

ただ、人の目で見ると問題が残っていました。

修正AIは、中身のほうを変えていました。検査を通すためです。

「検査は全部通った。実演のほうが書き換わった。」の図。左では汗をかいた修正AIのロボットが、机で長い紙をハサミで切り、ゴミ箱に捨てている。ラベルは「修正AI: はみ出しを折って収める。コマンドに | fold -s -w 24 を足し、原稿の「鍵」を「キー」に書き換えた」。右では検品AIのロボットが、全項目にチェックの付いたスマートフォンを虫眼鏡で見ている。ラベルは「検品AI: 見切れ0件、判定 ok。画面に収まったかは見るが、手順が増えたかは見ない」。下に「検査結果をそのまま修正AIに渡すと、動くのは中身のほう」

指摘 修正AIがしたこと なぜズルなのか
出力が右端で切れる コマンドに 2>&1 | grep 'Number of key' と 2>&1 | fold -s -w 24 を足した 画面に収まったが、実演していない手順が増えた
書き起こしと原稿の表記が違う 原稿の「鍵」を「キー」に、「password」を「パスワード」に書き換えた 表記ゆれは不具合ではない。画面の英単語を指す説明がぼやけた
字幕と声が食い違う 古いままの声に原稿を合わせ、Whisper の聞き間違い「では、」まで原稿に入れた 直すべきだったのは、音声を作り直さないキャッシュのバグ
文字が小さい round0 の修正で、逆に文字を 30 から 24 に小さくした 収まりはしたが、スマホでは読めない (round1 で 32 に戻った)

1つ目のコマンドは、round0 と round3 でこう変わっています。

-ssh-copy-id -i ~/.ssh/lab.pub deploy@lab-target
+ssh-copy-id -i ~/.ssh/lab.pub \
+  deploy@lab-target 2>&1 |
+  grep 'Number of key'

4つとも、修正AIは渡された指摘には忠実で、「右端で切れる」と言われたので切れなくし、「書き起こしと違う」と言われたので書き起こしに寄せました。

検査結果をそのまま「直すべき欠陥」として渡すと、動くのは中身のほうです。 テストを通すためだけの修正と同じ形です。

ズルを止めようとした制約と、私が入れた穴

round1 からは、修正AIへの指示に制約を足しました。実際のプロンプトの一部です。

- 手順の意味 (何を実演するか) は変えない。動画は30秒以内に収める
- narration は、字幕と声の不具合 (読み間違い・言い飛ばし・字幕と声の内容が違う) を直すとき以外は変えない。
  Whisper の書き起こしとの表記ゆれ (鍵/キー、password/パスワード、kenimoto.dev の綴り) は不具合ではない
- 文字を小さくして収める直し方はしない (スマホの縦画面で読めなくなる)

あわせて、実行環境の設定 (セットアップ用のコマンドなど) は、修正AIが書き換えてもコードで元に戻すようにしました。今回の3回の修正では、このガードは一度も発動していません。修正AIは、触ってはいけない場所には触らず、触ってよい場所で辻褄を合わせました。原稿の言い換えは止まりました。一方で、fold と grep は止まっていません。「手順の意味は変えない」とは書きましたが、コマンドを足すことは禁じていなかったからで、修正AIから見れば、出力を整えても実演の意味は変わっていない、という理屈です。

もう1つ、私自身が穴を入れていました。表記ゆれの例に「kenimoto.dev の綴り」を書いたせいで、本物の読み間違いまで無視させています。音声合成は kenimoto.dev を「ケニモット・オトビ」と読んでいました。round2 で、Kimi が自分で原稿からサイト名を外して解決しています。

ズルを止めるつもりの制約が、別の不具合を隠しました。

次からは、修正AIに渡す前に「変えてはいけないもの」を先に固定します。

  • 実演のコマンドと原稿の意味は固定する。触ってよいのは文字の大きさ、拡大演出、カードの長さのような見た目の側だけにする
  • 表記ゆれの例は、不具合と区別できる具体的なものだけを書く
  • 毎回出る誤検知 (「字幕が重なる」) は、フレームの差分で機械的に確かめてから修正AIに渡す

まとめ

作る・見る・聞く・直すを別々の AI に分けました。20秒の動画1本の検品と修正が、人が張り付かずに29分・約350円で回りました。映像を見る AI だけでは見つからないバグを、音を聞く AI が拾いました。そのぶん、直す AI の振る舞いがそのまま品質になります。今回の修正AIは、指摘を消すことに忠実でしたが、指摘の元になった問題を直すことには、忠実ではありませんでした。

テストや lint の結果を、そのまま修正AIに渡していませんか。そのとき「変えてはいけないもの」を、先に渡しているでしょうか。皆さんがループで修正AIに課している制約があれば、コメントで教えてください。

K3 と K3.1 の速度と精度の比較は、kenimoto.dev の記事に載せています。semver の実装やウェブ検索の正答率も測っています。

Qiita で私をフォローしておくと、次の記事を見逃しにくくなります。

References

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?