AI・信頼性・評価
AI委譲の判断——非決定性のコストと、来歴の担保
エージェントに任せて、うまくいく。味を占めて、また任せる。ある日、「あれと同じものを、もう一度」と来る。同じ指示を投げても、同じものは返ってこない。前のあれを作ったのが正確には何だったのか——モデルのどの版か、プロンプトはどれか——にも、答えられない。そして振り返れば、「そもそも、あれはエージェントに投げる必要があったのか」にも、はっきり答えられない。
N体のエージェントを走らせるなら、互いを踏ませない統治と、壊せる範囲の縛りが要る。だが統治は、「任せる」と決めた後の仕事だ。ロックも承認ゲートも監督もタダでは回らないのに、その手前の「そもそも任せる価値があるか」と、その後ろの「任せた結果をどう監査するか」には、統治の設計だけでは答えが出ない。生成が安くなると、人はつい何でも投げる。冒頭のつまずきは二つとも、その安さの請求書だ。
ここでいう「安くなった」の土俵は、同じ量を人の手で書き起こす場合と、一世代前のモデルに同じ量を出させる場合の二つだ。本稿は具体的な単価を扱わない——価格表はモデルごと・改定ごとに動くうえ、効くのは単価ではなく、リトライと検証まで含めた一件あたりの総額だからだ。安いは、無料ではない。値札が安くなっただけで、帳簿が消えたわけではない。費用の欄と、来歴の欄。この二つを順に埋める。費用の側は二段になる——何を誰に任せるか、そして任せ方を縛るゲートにいくら払うか、だ。
非決定のコストを差し引いた純益で振り分ける
素朴な答えから始める。「生成はほぼ無料になった。なら、迷ったら投げればいい」。これは決まった場所で破綻する。仕様を一行で固定できる仕事——決まった形式の変換、決まった条件の集計——をエージェントに投げたとする。返ってくるものは、同じ入力でも揺れる。揺れる以上、正しさは構造では保証されず、一件ずつ検証して買うしかない。全件を確かめ、外れを作り直させ、直ったものをまたレビューする。生成の値札の外で、この費用が静かに積み上がる。同じ仕様はスクリプトにも書けて、そちらは正しさを構造が保証するから、検証が要らない。安いはずの選択が、高くて不確実な選択に変わる。破綻の芯はここだ——安くなったのは生成であって、検証ではない。
1642本の注釈付きトレースを分類した研究がある。失敗の44.2%はシステム設計の問題に、32.3%はエージェント間のずれに由来すると報告されている1。原著者自身、失敗の多くは個々のエージェントの能力ではなく組織設計と協調の課題から生じるとし、基盤モデルが強くなるだけでは潰しきれないだろうと述べている。だとすれば、この費用はモデルが賢くなれば消える、という類のものでもない。曖昧に投げれば、賢い働き手でも曖昧に外す。検証と作り直しの費用は、投げる前の見極めで決まる部分が大きい。
だから、エージェント・決定的コード・人間という三つの担い手を並べ、非決定のコストまで差し引いた純益で選ぶ。
自律エージェントにやらせる。 柔軟で、幅広く、24時間動く。だがトークン代に、非決定の代償——誤りの期待被害と、その検証・作り直し・レビューの費用——が乗る。仕様を固定できる仕事に使えば、いま見たとおり高くて不確実になる。過剰適用だ。
決定的なスクリプトや従来コードにやらせる。 安く、速く、再現できて、正しさが構造で保証されるから検証が要らない。ただし、仕様を決定的に固定できる範囲でしか効かない。曖昧さ・自然言語・判断には無力で、ここに固執するとエージェントの領分まで潰す。過少適用だ。
人間にやらせる、あるいは人間の承認を挟む。 人手を残す理由——品質の順位ではなく、責任と文脈の配置の問題だ——は本連載の別の回が扱う。ここで要るのは、その配置に付く値段のほうだ。人手は最も高く、遅く、スケールしない。安い労働が余っている今、人間を安易に使うのは最大の浪費だ。不可逆・高リスク・対外や倫理の判断にこそ温存すべき、希少な資源だ。
二問を上から順に当てる。一問目は仕様の側だ——決定的に固定できるか。固定できるならそこで終わり、できないときだけ二問目、失敗をどこまで巻き戻せるか、巻き戻せない分の被害はどれほどかへ進む。
| 問い | 振り分け先 |
|---|---|
| 仕様を決定的に固定できる | スクリプト(エージェントに投げるのは無駄で、しかも不確実になる) |
| 固定できず、取り返しがつく | エージェントに任せ、事後に検証する |
| 固定できず、取り返しがつかない・被害が大きい | 人間、またはエージェント生成+人間の承認ゲートを通す |
この「自動化すべきか、手でやるか」を費用便益で決める発想は、ソフトウェア工学がずっと持っていた。make か buy か。自動化の損益分岐点。三度手でやったら自動化する、という経験則もそうだ。新しいのは第三の選択肢が加わったこと——非決定な自動化だ。これでコストの式に、期待失敗コストと検証コストの項が増えた。だから「安くなった」を無条件に受け取らず、その項を差し引いた後の純益で判断する。
Self-Consistencyと呼ばれる手法がある。ひとつの問いに何度も答えさせ、割れた答えのうち多数派を採用する——原論文が測ったのは、推論課題での正答率の向上だ2。費用を設計で薄める工夫のひとつだ。ただし原論文は、この手が効くのは最終解答が定まった選択肢から出る問題に限ると断っている。開いた形の生成には、そのままでは移せない。そして手法自体は費用を消すのではなく、サンプル数のぶんだけ費用の欄に付け替える。帳簿から項が消えるわけではない。
ゲートの値打ちは、外して測る
費用の欄には、まだ載せていない行がある。ゲートそのものの費用だ。人間の承認ゲートも、機構による検査も、置けば実装と保守が要り、待ち時間が増え、拒否のたびに説明の文が文脈を食う。だから本来は二行が並ぶ——そのゲートが防いだ損害と、そのゲートを回す費用。ところが前者は、たいてい主張で埋まる。防いだ事故は起きなかった事故なので、数えにくい。効いていると思うから置き、置いたまま残る。
だが効き目のほうは、測れる場合がある。外して、点差を見ればいい。SWE-agent はそれを自分の道具立てでやった。GitHub の実際の課題を与え、そのリポジトリの実テストが通るかどうかで採点する SWE-bench——人手の採点者を挟まないので同じ条件を何度でも回せる——の300件版で、モデルを固定したまま、エージェントに持たせる部品を一つずつ外したり別の作りに替えたりして点数を比べている3。
検索の設計が分かりやすい。基準の構成では、検索結果が上限(50件)を超えたら結果を返さず、もっと具体的な問い合わせを書けと促す。基準の構成を、結果の一括表示から一件ずつの逐次表示へ替えると、18.0%から12.0%へ落ちる。差は6.0ポイント、基準の三分の一だ。ただし逐次表示の構成で50件上限がどう扱われたかは原著に明記がない(全件を順に見尽くす挙動の記述から、抑止が効いていないとは読める)。∴ これは上限単独の値ではなく、検索の設計ひとまとまりの値打ちにあたる。原著者の説明では、結果が多いとエージェントは全件を順に見尽くそうとし、費用の予算や文脈の窓を使い切ってしまう。効くのは、比較の点がもう一つあることだ——検索コマンドを丸ごと持たせない構成は15.7%で、逐次表示の検索より高い3。設計を誤った能力は、その能力が無い状態にも劣りうる。ゲートを外した分だけ点が下がるという足し算には、なっていない。
この種の値付けは、我々が当たった範囲では、実運用のハーネスで唯一の公開例だった。数値そのものは2024年の一モデル・一ベンチマークの測定で、自分のゲートに同じ点差が出る保証はない。移せるのは数値ではなく手順のほうだ——外して、回して、差を見る。
費用の側にも、実装された自認がある。Claude Code などへフックと規約を配布しているパック ECC は、ゲートの拒否メッセージが文脈を食うこと自体を設計の対象にしていて、同じセッションでファイル編集ゲートの拒否が重なると、既定では4回目以降、長い説明を1行へ畳む(破壊的コマンドと初回Bashのゲートは対象外)。主なゲートの拒否文には、そのゲートを切る手順も併記される——ただし全部ではなく、破壊的なコマンドを止める拒否文には付かない。強制の段数は minimal・standard・strict の三段で、どのゲートがどの段まで生き残るかが、そのまま値打ちの順位の宣言になっている4。ゲートの費用は、書いた時ではなく、回すたびに発生する。
そして値打ちは固定ではない。この値付けをした当のチームは、翌年、道具は bash だけという薄い作りへ賭け直した。いまは作り込んだ側のリポジトリの冒頭に、開発の主力は薄い側へ移り、薄い側が取って代わったので今後はそちらを使うことを勧める、と掲げている5。ゲートの値打ちはモデルの能力の関数で、減価する。帳簿にゲートを足す欄があるなら、退役させる欄も要る——その欄をいつ、どう埋めるかは、本シリーズの最終回が引き取る。
ただし、この測り方が届かない相手がいる。平均点は、稀にしか起きないが起きたら取り返せない失敗を映さない。秘密の露出も、対外送信の誤爆も、頻度で割れば点差にはほとんど出ない。外して測って値付けできるのは、繰り返し起きて、機械が採点できる失敗のほうだ。一撃で取り返しがつかなくなる側を止めるゲートは、点差ではなく被害の大きさで正当化するしかない。差が出ないことは、外していい理由にならない。
完全再現でなく、来歴と事後検証を残す
来歴の欄に移る。ここにも素朴な答えがある。「チャットのログは全部残してある。要るなら同じプロンプトをもう一度流せばいい」。これも決まった場所で破綻する。まず、再実行は同じものを返さない。温度を下げても、共有された推論エンドポイントでは同時実行の負荷でバッチの大きさが揺れ、浮動小数点の加算順序が変わって出力が変わりうる——原因は乱数ではなくバッチ不変でないカーネルだ、と分析した報告がある6。そもそもプロバイダはモデルの版を入れ替え、古い版を廃止する。廃止の予定日と後継の対応表を公開しているプロバイダもあり、期日を過ぎた版への要求は失敗する7。数ヶ月後の「同じプロンプト」は、別の働き手への同じ指示だ。次に、ログは会話を写すが、来歴を写さない。どの版のモデルが、どの設定で、どの入力から作ったのか——監査で要るのはその記録であって、やり取りの文面ではない。
だから、再現と監査を分けて考える。多くの場合に本当に要るのは、ビット単位の完全再現ではなく、来歴と検証だ。ここでは、生成のどの段階を担保するかで三つに分けて考える——過程を丸ごと固定する、入力の記録を残す、出力を検証して凍結する、だ。
完全再現を狙うなら、乱数のseed、温度、モデルの版・プロンプト・入力をすべて固定する。全部を固定すればビットに近い再演に迫れ、監査は最強になる。だが脆さはいま見たとおりで、版の廃止一つで崩れる。そして全固定は、自分を改善から締め出す——版を上げれば、固定した意味が消えるからだ。
そこまで固定しないなら、来歴を記録する。生成の入力——モデル・プロンプト・seed・データ・コードのハッシュ——を出力に添える。出力そのものは再現しない。安く、永続する。正確な出力を再生成できなくても、「何が作ったか」には常に答えられ、過程を監査できる。大量生成にもスケールする。ただし証明できるのは来歴であって、正しさではない。そして生成の瞬間に記録する規律が要る。あとから付け直そうにも、そのとき動いていた版や設定は、もう手元にないからだ。
この「その場で記録する」は、指示のままにせず機構へ降ろせる。Aider が引くのは、AI由来の変更と人間の変更のあいだの境界だ。編集の一手ごとに説明つきのコミットが入る。作業ツリーに未コミットの変更が残っている場合は、AIが触る前にそちらを先に確定させて分ける。公式ドキュメントの言い分はこうだ——「こうすればあなたの編集は aider の編集と分かれたままになり、aider が不適切な変更をしても作業を失わずに済む」8。誰の手が入ったかの境界が、記録の側に引かれる。来歴は、覚えておく約束ではなく、経路に置いた手続きにできる。
残るのが、出力をartifactとして検証・凍結する手だ。生成後に決定的に検証し、通った版を不変の成果物として保存する。ビルドの成果物のように扱うわけだ。どう再生成するかを気にせずに済み、確定した版が正本になる。安く、ソフトの出荷様式にも合う。だが事後に検証できる出力にしか効かず、変種を再導出する力は失う。
初期値は、要るものを見極めて分ける。あとで誰かが検算する科学的な主張や数値結果なら、seedとモデルの版とコードを固定し、再現可能に近づける。実験法の作法だ。日々の大量成果物なら、決定的に検証してから不変のartifactとして凍結し、来歴のメタを添える。監査だけ要るなら、生成時に入力のハッシュを記録しておく。核心は、非決定を「再現できないから諦める」でなく、「何が作ったか+通ったか」を安く固定することだ。
来歴を辿れることは、科学とエンジニアリング両方の古い規律だ。実験の再現性、データのlineage管理、バージョン管理、再現可能ビルド9、通った成果物を凍結するartifactリポジトリ。新しいのは、出力が非決定になったことで、「再ビルドすれば同じ」という前提の側が壊れた。だから完全再現に固執せず、来歴と事後検証へ軸足を移す。そもそも、記録の欠落は生成AI以前からの常態だった。AAAIとIJCAIの論文400本を再現性の指標で調べた2018年の調査は、必要な変数を全て記載した論文は一本もなく、記載率は各因子で2〜3割にとどまると報告している10。完全再現を最初の目標に据えるのは、多くの場合、払いきれない費用を帳簿に載せることだ。
コストと来歴が届かない先、人間が引き受ける三つ
ここまでの二つ——純益で振り分ける、来歴を残す——には、それぞれ届かない先がある。届かない先は三つあり、いずれも人間が引き受けることになる。
来歴が証明するのは「何が作ったか」であって、「それが正しいか」ではない。誤った出力の来歴は、誤ったまま完璧に辿れる。監査可能性は、正しさの代わりにはならない。
振り分けの二問も、「仕様を決定的に固定できるか」を正しく見切れることを前提にする。固定できると思った仕様に隠れた曖昧さがあれば、スクリプトは端で静かに壊れる。固定できないと思って人に回した仕事が実は型にはまるなら、安い自動化の機会を潰す。見切りを誤れば、過剰適用にも過少適用にも転ぶ。
そして「安い」という前提自体が動く。モデルが良くなれば非決定のコストは縮み、今日の「使うほどではない」が明日の初期値になる。線は一度引いて終わりではなく、費用が動くたびに引き直す。動いたかどうかは、外して差を見れば分かる。だが測定が出すのは点差であって、引き直すかどうかの判断ではない。稀で不可逆な失敗を止めているゲートは、点差が出なくても外せない。このうち、参照なしで正しさを測る仕事と、版が静かに差し替わるドリフトへの手当ては、古い作法が半分しか答えない領域として、いまも未解決のまま残る。
それでも、今日の初期値は引ける。仕様を固定できるところはスクリプトへ、判断が要るところはエージェントへ、不可逆・対外はゲートと人へ。作ったものには、再現でなく来歴を添える。そして残った三つ——正しさの判定、見切り、動き続ける線引き——は、いまも人間が引き受ける。安いから、で決めない。作ったなら、辿れるようにする。安いは、無料ではない——値札から消えた額は、検証と作り直しの行、来歴の行として、帳簿の別の欄に現れる。この帳簿を付け続けた先に、次の問いが待っている。繰り返しの協働で、費用ではなく腕のほうに積み上がっていくものは何か。
出典
-
[negative] M. Cemri et al., “Why Do Multi-Agent LLM Systems Fail?” NeurIPS 2025 Datasets and Benchmarks Track, arXiv:2503.13657. 7つのフレームワークから集めた 1642本の注釈付きトレース(MAST-Data)を14の失敗モードへ分類し、システム設計の問題が44.2%、エージェント間のずれが32.3%、タスク検証が23.5%を占めると報告する(v3, 2025-10 の Figure 1。同図の説明が
The percentages shown represent the prevalence of each failure mode and category as observed in our analysis of 1642 MAS execution tracesと対応関係を明示している)。版に注意——v2 は「200本超」を母数に 41.8/36.9/21.3、第一分類の名も “specification issues” だった(初版は151本・“specification and system design failures”)。v3 は本文の主図を1642本へ差し替えたが、210本を母数とする図には旧割合が残るので、数字を引くときは版と母数の両方を見る必要がある。素の URL は v3 を返すので、本稿は v3 に揃えている。著者らはモデルの改善だけでは潰しきれないとし、we conjecture that improvements in the base model capabilities will be insufficient to address the full MASTと述べる(断定でなく conjecture)――「安いから投げる」の純益を削る留保側(コストは見た目より高い)。https://arxiv.org/abs/2503.13657 ↩ -
[positive] X. Wang et al., “Self-Consistency Improves Chain of Thought Reasoning in Language Models,” ICLR (2023), arXiv:2203.11171. 同じ問いを複数回サンプルして多数決を取ると推論精度が上がると報告(ばらつきが収まるのは、最も一貫した答えを選ぶ機構からの本稿の読み)――非決定のコストを設計で薄められる支持側。ただし原論文は限界として、適用できるのは最終解答が定まった選択肢集合から出る問題に限ること、そして計算費用が増えることの二つを挙げている。https://arxiv.org/abs/2203.11171 ↩
-
[negative] J. Yang et al., “SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering,” (2024), arXiv:2405.15793. GitHubの実際の課題をリポジトリの実テストで採点するSWE-benchの300件版(Lite)で、モデル(GPT-4 Turbo)を固定したまま道具立てを一つずつ外す/別の作りに替える比較(ablation)を報告する。基準の構成は18.0%。検索は「一つの問い合わせにつき最大50件までしか返さず、それを超えたら結果を報告せず、より具体的な問い合わせを書くよう促す」設計で、これを逐次表示に替えると12.0%、検索コマンド自体を持たせない構成は15.7%。※この12.0%の構成は上限が無いだけでなく表示方式も違う(原著Figure 5の説明は、基準の構成が「結果を網羅した一覧を示し、漠然とした問い合わせを絞り込む助言を与える」点で逐次表示と異なるとしている)ので、6.0ポイントは上限単独の寄与ではない。原著は、結果が多いとエージェントが全件を見尽くそうとして「費用の予算や文脈の窓を使い果たしうる」と説明している。ほかにファイル閲覧の窓・観測履歴の畳み込み・編集時のlinterについても同種の比較を出している。ゲートの効き目を主張ではなく点差で示した例で、我々が当たった範囲では実運用ハーネスで唯一の公開値付けだった――同時に、界面の設計を誤ると能力の無い構成にも劣りうるという、AIに不利な側の実測でもある。https://arxiv.org/abs/2405.15793 / https://swe-agent.com/latest/background/aci/(2026年7月26日参照) ↩ ↩2
-
[negative] ECC(旧 Everything Claude Code。Claude Code などへフックと規約を配布するOSSのパック)のhooks実装・ドキュメントとissue(2026年8月2日参照)。強制の段数を環境変数(
ECC_HOOK_PROFILE、既定は standard)で minimal/standard/strict と切り替える構成で、Bashの事前フックのうち最小構成でも生き残るのはgitのフック迂回(--no-verifyとcore.hooksPath上書き)を塞ぐ一本だけ――どのゲートがどの段まで残るかが優先順位の宣言になっている。中心のゲート(GateGuard)の拒否メッセージにはそのゲートを無効化する手順が併記されるが、全部ではない――破壊的コマンドを止める拒否文と、上記のフック迂回を塞ぐ拒否文には付かない。また同一セッションでファイル編集(Edit/Write/MultiEdit)の拒否が重なったときに長文の説明を1行へ畳む「拒否の予算」を持つ(既定で最初の3回までが四項目の全文、4回目以降は1行。破壊的コマンドと初回Bashのゲートはこの畳み込みの対象外。issue #2142由来)。ゲート自体が文脈と手間を消費するという、コスト側の自認が実装に現れている例。※本稿が引くのはhook層に限る(同リポジトリはREADMEが281のスキルを掲げる(2026年8月3日時点)雑多な集積で、全体を規律の体系として推すものではない)。https://github.com/affaan-m/ECC/tree/main/scripts/hooks ↩ -
[positive] SWE-agent/mini-swe-agent のREADME(SWE-benchとSWE-agentを作ったのと同じPrinceton・Stanfordのチーム、2026年8月2日参照)。「一年が経ち、LMがより有能になったいま、その多くは有用なエージェントを作るのにまるごと不要だ」と書き、bash以外の道具を持たず履歴を一直線に追記するだけのREADMEいわく約100行の実装で「SWE-benchのverified版で74%超」と主張する(本人らの主張であり、我々は再現していない)。作り込んだ側の告知は同チームのSWE-agentリポジトリのREADME冒頭にあり、「現在の開発努力の大半は mini-swe-agent にあり、それが SWE-agent に取って代わった」「今後は SWE-agent ではなく mini-SWE-agent を使うことを一般的に勧める」と述べる(「保守のみ」といった表現は使っていない)。ゲートの値打ちがモデルの能力とともに減価しうる=AIに有利な側。https://github.com/SWE-agent/mini-swe-agent / https://github.com/SWE-agent/SWE-agent ↩
-
[negative] H. He et al. (Thinking Machines Lab), “Defeating Nondeterminism in LLM Inference” (2025-09-10). 温度0でも推論エンドポイントの出力が揺れる主因は、同時実行するリクエストの量でバッチの大きさが変わり、カーネルがバッチ不変でないために浮動小数点の加算順序が変わることだと分析する。浮動小数点の非結合性だけでは非決定にならないと明示している――査読を経た論文ではなく研究所のブログ記事である点は割り引いて読む必要がある。 https://thinkingmachines.ai/blog/defeating-nondeterminism-in-llm-inference/ ↩
-
[negative] Anthropic公式ドキュメント “Model deprecations”(2026年8月2日参照)。「より安全で有能なモデルが登場するにつれ、Anthropicは定期的に古いものを退役させる」とし、モデルの状態を Active/Legacy/Deprecated/Retired の四段で定義して「Retired: そのモデルはもう使えない。退役したモデルへの要求は失敗する」と述べる。同ページは退役済みモデル名と退役日、推奨される後継の対応表を載せている。版が入れ替わることをプロバイダ側が明文化した例で、完全再現の前提を崩す側。https://platform.claude.com/docs/en/about-claude/model-deprecations ↩
-
[positive] Aider(オープンソースのターミナル型コーディング・エージェント)公式ドキュメント “Git integration”(2026年8月2日参照)。「aiderがファイルを編集するときはいつでも、説明的なコミットメッセージつきでその変更をコミットする」と述べ、作業ツリーに未コミットの変更がある場合はAIが触る前にそれを先にコミットすると説明する――「こうすればあなたの編集はaiderの編集と分かれたままになり、aiderが不適切な変更をしても作業を失うことがない」。いずれも既定の挙動で、
--no-auto-commits/--no-dirty-commitsで切れる。来歴の記録を、覚えておく約束ではなく実行経路の手続きとして持つ実装の支持側(製品ゆえ更新されうる)。https://aider.chat/docs/git.html ↩ -
[positive] C. Lamb & S. Zacchiroli, “Reproducible Builds: Increasing the Integrity of Software Supply Chains,” IEEE Software, vol. 39, no. 2 (2022). 同じソースから同じバイナリが得られることを検証可能にし、ソフトウェアサプライチェーンの完全性を高めると論じる――本稿の三択でいえば「完全再現」の系譜にあたる古い規律で、出力が非決定になると前提の側が崩れる。https://doi.org/10.1109/MS.2021.3073045 ↩
-
[negative] O. E. Gundersen & S. Kjensmo, “State of the Art: Reproducibility in Artificial Intelligence,” AAAI (2018). AAAIとIJCAIの論文400本を6つの再現性指標で調べ、必要な変数を全て記載した論文は一本もなく、記載率は各因子で20〜30%にとどまると報告した――完全再現を初期目標に据える戦略の射程を区切る留保側。調査は2018年時点のもので、以降の改善は本稿では追っていない。https://doi.org/10.1609/aaai.v32i1.11503 ↩
この記事はAIが執筆しています。内容には誤りが含まれる可能性があります。ご注意ください。