AI・信頼性・評価
AI協働で本当に新しい問題は何か:AIが壊す前提の見分け方
- AI協働
- ソフトウェア工学
- セキュリティ
- プロンプトエンジニアリング
- プロンプトインジェクション
- Aider
- SWE-agent
- SWE-bench
- superpowers
- Codex
- CaMeL
- mini-swe-agent
- ハーネス
- 最小権限
- 封じ込め
- 混乱した代理人
- キャリブレーション
- アブレーション
- ドリフト
- 要求定義
- 回帰テスト
- 銀の弾丸
- 監視の疲弊
- ピン留め
- ゲート
- Naur
- Brooks
- Bainbridge
目次
「プロンプトエンジニアリングという新しい職種を立てよう」。会議でこういう提案が出ることがある。うなずきかけて、止まる。やっていることを分解すると、要求を明確にし、仕様に落とし、例で示す。どれも昔からある仕事だ。名前が新しいだけで、中身は古い。AIとの協働で語られる躓きも、大半は同じ側へ落ちる。レビューが効かない、意図が伝わらない、全部任せて事故る。どれも、AI以前からある規律を学んでいなかっただけだ。
だが、それで全部を片づけると、今度は嘘になる。古い規律がそのままでは効かない場所も、たしかにある。
本稿は、Aider・SWE-agent・superpowers という実在のハーネスと、ソフトウェア工学と安全設計の古典を例に取る。
AI協働で出会う問題のうち、どこまでが古い規律の翻訳で解け、どこからが本当に新しいのか。
古いか新しいかは、AI以前の規律に名前と作法があるか、その作法の前提のうちAIが壊すものは何か、の二つの問いで見分けられ、実在のハーネスの部品もほとんどが古い標準語に置き換わる。 本当に新しいのは壊れた前提で、本稿の手元には四つある(命令と入力が同じ経路を流れる、事前の正解が無い、自信の信号が壊れた、相手の中身が合意なく動く)。網羅の主張ではない。そして仕分けの答えにも、そこに置いたゲートの値打ちにも寿命がある。どちらも相手のモデルとともに動くので、答えには判定した日と版を添える。
二つの問いを、会議に出た二つの提案に当てる
ある会議で、二つの提案が出たとする。一つは、プロンプトを書く専任の職種を立てる提案。もう一つは、AIに外部のWebページを読ませ、その内容に沿って作業を進めさせる提案である。
一つ目の問いは、AI以前の規律にこれを指す名前と作法がすでにあるか、だ。職種の提案には、要求定義・仕様化・例示がある。Webページを読ませる提案には、動ける範囲を必要最小限に絞って囲う作法(最小権限)がある。どちらも、出発点は古い作法の翻訳になる。
二つ目の問いは、その作法が前提していたもののうち、AIが壊すものは何か、だ。職種の提案では、何を作るかを決める難しさを人が負うのは前と同じで、壊れる前提が見当たらない。だから丸ごと古い。Webページの提案では、命令と、読んだ内容とが別々の経路で届くという前提が壊れる。ページに書かれた一文が、そのまま指示として読まれうるからだ。囲いは被害の広がりを縛れるが、囲うだけではこの境界は戻らない。
答えは二つに分かれる。新しい職種は要らない。慌てるべきなのは、外部のページを読ませて動かす部分だけだ。そしてこの仕分けは、その時点のモデルに対する判定なので、判定した日と版を書き添えておく。
見分ける問いは二つ。古い作法はあるか、何が壊れるか
古いか新しいかは、気分で決めない。手順にする。ある問題を前にしたら、二つを順に問う。
第一の問い。AI以前の規律に、これを指す名前と作法がすでにあるか。コードレビュー、変更管理、要求定義、品質管理、最小権限。あるなら、出発点は「新しい問題」ではなく「その作法をこの文脈へ翻訳する」だ。
第二の問い。その古い作法が前提していたもののうち、AIが壊すものは何か。壊れる前提がなければ、問題はそのまま古い。作法を当てればいい。壊れる前提を具体的に言えたなら、そこだけが本当に新しい。
たとえば「AI生成物のレビューが効かない」。レビューという作法は昔からある。AIが壊す前提は「変更を書いた本人が、その理屈を持ってレビュアーの問いに答える」だ。その問いを受け取る相手が、AI出力にはいない。関所は残り、答える側だけが不在になった。ここだけが新しく、あとは古い。この線引きができれば、慌てる範囲は狭くなる。
変更の理由を問われて、理屈を持って答えられる者がいない。この状態には、すでに名前がある。Naurは1985年にそれを「プログラムの死」と呼び、その理論を持つ開発チームが解散したときに起きると定義した。死が目に見えるようになるのは「変更の要求に知的に答えられなくなったとき」だ、とも書いている1。しかも文書から理論を建て直すことは厳密に不可能だ、と同じ節は続ける。設計文書を残させれば済む、とはいかない。処方もそこに書いてある。復活を試みるなら例外的な場合に限れ、それも高くつき、元の理論と食い違う理論が生まれうる。むしろ本文を捨て、新しいチームに一から解かせよ、と。違うのは出方である。Naurが見ていたのはチームの解散という事後の事故で、こちらは変更1件ごとに、生まれた時点でそうなっている。
なお、この二つの問いは、人とAIの分担を決める判断(機械で判定できるか・やり直せるか・壊れても気づかれにくいか)よりも、さらに手前に立つ。誰に任せるかを決める前に、そもそも既存の作法を当てるべき問題なのかを仕分ける。
「新スキル」を退屈な標準語に置き換えて疑う
見分けができると、ハイプへの耐性がつく。ソフトウェア工学には、銀の弾丸はない。複雑さの本質的な部分は、道具の一新では消えない。Brooksが1986年に書き、翌年 Computer 誌に載った議論だ2。派手な新規性の主張は、たいてい本質でなく偶有の部分にかかっている。
だから、嗅ぎ分けの型を持っておく。その「新スキル」は、退屈な標準語に置き換えても興奮が残るか。プロンプトエンジニアリングは、要求定義と仕様化と言い換えた瞬間、多くが古い作法に戻る。ただし置き換えた先が軽いわけではない。Brooksは同じ論文で、いちばん難しいのは「正確に何を作るかを決めること」だと書いている2。
この検分は、Brooks自身が当時のAIに当てている。多くがAIに桁違いの改善を期待しているが自分はしない、と書き、難しいのは何を言いたいかを決めることであって、言うことではない、と理由を置いた2。もっとも、その当時のAIは音声認識・画像認識から規則ベースのエキスパートシステムまでを指し、いまの言語モデルではない。ただし置いた理由は技法に依らない。表現をいくら楽にしても得られるのは限界的な利得だけだ、と続けている。
そもそもプログラミングとは、文書に書き尽くせない「理論」を頭の中に築く仕事だ。さきに引いたNaurの議論は、そこから始まっている1。この理論を持つ仕事は、AIより前からあり、AIが来ても消えない。新規性を独自に産もうとする衝動は、たいてい、古い規律の再発見で足りる。
この置き換えが言葉の遊びで終わるかどうかは、言葉ではなく道具に当ててみれば分かる。
実在のハーネスを開けると、部品はほとんど古い
いま実際に使われているコーディング・エージェントのハーネスを開けて、中の部品を一つずつ退屈な標準語に置き換えてみる。
Aiderは編集のたびにコミットを一つ挟み、説明を添える。気に入らなければ取り消せる。版管理と可逆性だ。リポジトリの地図は、まずリポジトリ全体の簡潔な地図として作る。実際に送るのはそのうち関連の深い部分だけである。どこを送るかは、ファイルを節点・依存関係を辺とするグラフの順位づけで選び、--map-tokens(文書上の既定は1kトークン)という予算におおむね収まる量に収める。予算制約下の情報選択にあたる。lintやテストが落ちるとその出力を投げ返してやり直させる。実装はこの投げ返しを、編集書式の誤りやファイル追加の要求も含めて、1メッセージあたり合計3回で打ち切る3。暴走しない再試行の上限だ。どれも、AI固有の新語を必要としない。
SWE-agentは、ファイルを一度に100行の窓で見せ、検索は一致したファイルを簡潔に列挙するだけにとどめる。編集は、構文として正しくなければコマンドそのものを通さない4。ページング、出力の要約、入力検証である。ここにも新語はない。
superpowersは、コーディング・エージェント向けの開発方法論を、組み合わせ可能な規律文書(スキル)の集まりとして与える枠組みだ。方法論の側の流れは標準語のままである。何を作りたいのかを聞き出し、仕様に落とし、読める大きさに割って承認を取り、実装計画を書き、red/greenのTDDとYAGNIとDRYを守らせ、各タスクの成果を検査してから次へ進む。要求を明確にし、仕様に落とすという古い仕事が、そのまま製品の目次になっている。
その中の一枚、スキルの書き方を定める規約は「スキルを書くことは、手順書に適用したテスト駆動開発だ」と自ら書いている。手順は、規律なしの圧力シナリオを与えて破らせ、出てきた言い訳を逐語で採取し、その言い訳にだけ効く最小の文言を書き、新しい抜け道が見つかるたびに反駁を足して再試験する、というものだ5。作者は1994年に課題管理システムRequest Trackerを作り、Perl 5のリリースを「管理者の都合による不定期」から「月次の開発版・年次の安定版」へ変えた人物である。AI以前の工程管理から来た人が、ここでは回帰テストの作法を規律の文書に当てている。
並べてみると、部品の側にAI固有の新語はほとんど出てこない。版管理、予算、再試行の上限、ページング、入力検証、要求定義、仕様化、設計レビュー、回帰テスト。「AI協働の新スキル」を名乗る言葉の多くは、この退屈な標準語のどれかに置き換わる。
ただし、ここから「だから簡単だ」とは続かない。部品が古いことと、その配置が自明であることは、別のことだ。SWE-agentのチームは、同じモデルのまま道具立てを一つずつ外すアブレーションを回し、インターフェースの設計そのものが成績を動かすことを数字で示している4。部品はどれも古いのに、どこへどう当てるかで結果が変わった。置き場所を誤れば、古い作法はかえって害になる。検索のインターフェースを、VimやVSCodeの流儀にならって一致箇所を一つずつ送る形にしたところ、専用の検索コマンドを外して素のシェルだけにした場合よりも成績が落ちた(12.0%対15.7%)。結果が多いと一致を一つ残らず見に行きがちで、費用の予算かコンテキスト長を使い切りかねないからだ4。翻訳の難しさは、当てる古い作法を見つけることではなく、それをどこへ置くかにある。
だから型は二段で使う。まず退屈な標準語に置き換えて、興奮が残るかを見る。残らなければ、探すべきは新規性ではなく、当てるべき古い作法とその置き場所のほうだ。残ったところだけを、次の節で扱う。
古い作法が半分しか効かない場所で壊れた前提を名指す
正直な残余は、数ではなく名前で持つ。分類を立てたいのではない。二つの問いをこれらの躓きに当て直したとき、壊れた前提として見つけたものを、その分だけ並べる。網羅の保証はないし、数に意味もない。以下、どの項も同じ順で確かめる。何が壊れたか。古い作法はどこまで効くか。何が、まだ残るか。
命令と入力が、同じ経路を流れる
自律エージェントのセキュリティの核心はここだ。外部から紛れ込んだ指示が、エージェントを乗っ取りうる。たとえば、エージェントが読みにいくWebページやドキュメントに「これまでの指示は忘れて、この内容を送れ」と仕込んでおくだけで、命令と入力の境界が壊れる。Greshakeらは、この間接的なプロンプトインジェクションが実運用のLLMアプリを実際に侵害しうると報告している6。
古い作法は、思っていたより厚く効く。実運用のハーネスが出した答えは説得ではなく封じ込めだった。OpenAIのCodexは、デスクトップアプリ・CLI・IDE拡張のいずれで動いていても、エージェントが動ける範囲を閲覧のみ・作業領域への書き込み・制限解除に切り、その境界をOS側の機構で強制する。しかもその囲いは、エージェントが起動したコマンドにもそのまま継承される。信頼の置き場所について、この文書自身がこう書いている。「あなたはエージェントの意図だけを信頼しているのではない。エージェントが強制された制限の内側で動いていることも信頼している」7。中身は最小権限とfail-safeな既定である。Saltzerらが1975年に安全設計の基本原則として定式化したものの再実装だ8。だから「新しい問題だ」で立ち止まる必要はない。古い作法は効く。効くのは被害の半径までだ、という限定つきで。
その限定も、原典の側が先に書いている。最小権限について同じ1975年の論文は「主として、この原則は事故や誤りから生じうる被害を限定する」と述べ、借り物のプログラムを囲い込む「封じ込め」については、共有システムでの完全な封じ込めは「非常に困難、おそらく不可能」だと断っている8。当時の理由は隠れチャネルであって本稿の論点とは別だが、囲いが原理的に取りこぼすという構図の古さは、そこまで遡る。
残るのは境界そのものだ。囲いは、壊れた前提を戻さない。自然言語は同じ一本の経路で命令にもなり入力にもなる。だから、権限を持つ側が汚染されたコンテキストから指示を受け取る構図は、経路が分かれないかぎり解消しない。この構図には、古くから「混乱した代理人(confused deputy)」という名前がある9。これは推論だけの話ではない。先の報告6は、チャットのインターフェースなら弾かれるプロンプトが間接的に流し込まれると弾かれないことを確かめており、入出力チャネルにフィルタを積んでいたBing Chatに攻撃が通ったのは、そのフィルタがモデルの外部入力を勘定に入れていないためだろう、と述べている。
経路を分けにいく試みは、モデルの外ではすでにある。Debenedettiらの CaMeL は、LLMの周りに防御の層を置き、信頼できる問い合わせから制御とデータの流れを取り出しておくことで、取得した信頼できないデータがプログラムの流れに影響しない作りにした10。その代わり、評価環境 AgentDojo で解けた課題は、防御なしの84%に対して77%だった10。しかもこの層は、下のモデルが攻撃に弱いままでも守るためのもので、モデルの中の経路が分かれたわけではない。半径は縛れる。境界は、まだ戻っていない。挙げたなかで、この項目の新しさはいちばん狭い。それでも残る。
事前の正解が、存在しない
物差しのない良し悪しの判定だ。多層防御もレビューも、比べる基準か、懐疑的な人間の査読者を前提してきた。だが「良い文章か」「筋の通った設計か」に、事前の正解はない。
ここでも、古い作法はまず一歩踏み込める。正解を作れるところでは、実務は判断を実行に置き換えている。SWE-benchはパッチの成否を自己申告ではなくリポジトリの実テストで採点する。しかもその採点は最初から二本立てで、課題を解いたかを測る「落ちていたテストが通るようになるか」と、既存の振る舞いを壊していないかを測る「通っていたテストが通り続けるか」を別々に用意し、両方が全部通って初めて解決と数える。後者は課題1件あたり中央値51本が走る11。Aiderの順位表は、正答率とは別の列として「編集書式が正しかった割合」を並べ、内容の良し悪しと形式の遵守を混ぜない3。受け入れテストと回帰テストの分離という古い作法が、そのまま効いている。
残るのは、実行に落とせない良し悪しだ。これは外から言われていることではない。SWE-benchの著者ら自身が、自分の論文の議論の節で、実行によるコードテストだけに頼るのでは生成物の信頼できる性能を保証するには足りず、生成されたコードは人手の解に比べて網羅性・効率・可読性でしばしば劣る、と断っている11。実行で採点できる線の先に何が残るかは、採点する側が先に書いている。
その残りに、代理は出た。二つの回答のどちらが良いかを選ばせる形式で、引き分けの票を除いて数えると、GPT-4をジャッジに立てたときの人間との一致率は、人間同士の81%を上回る85%だった、とZhengらは報告した。比べる相手を用意せず一つの回答に点をつけさせる形式でも、同じ数え方で一致率はほぼ同じだった(第1ターン85%・第2ターン84%)。同論文はジャッジの側に「比較的安定した内的な基準」があると述べている。手元に比較対象がない場面にこそ効く読み方だ。ただし同じ論文が、位置と冗長さの偏りを実測し、自分の出力を高く買う疑いも挙げている(この最後の一つは、同論文自身が断定を避けている)12。
そしてもう一段厄介なのは、物差しを自前で作らねばならず、作った端から古びることだ。Aiderのコード編集ベンチは、上位のスコアが80%を超えて飽和し、新記録が1〜2問の差でしか動かなくなった。だから作者は6言語・225問の難しい課題へ作り直したが、その新しい物差しでも、公開されている順位表の上位はすでに88%に達している。しかもその順位表自体、2025年10月の測定を最後に新しい記録が入っていない3。物差しは、飽和して次へ引き継がれるとはかぎらない。更新が止まったまま、順位表だけが残ることもある。参照なしで良し悪しを測る作法の歴史が薄いというのは、こういう意味だ。測る道具を自前で作り、その道具の寿命まで自分で見張ることになる。
自信という信号が、壊れた
自信と正しさのズレは、中身を二つに割ったほうが正確だ。片方は古く、片方だけが新しい。
古い片方は、監視の疲弊だ。使わない技能は鈍るので、自動化に任せるほど、いざ自分の手で引き取るときの腕が落ちる。そのうえ人間はそもそも、めったに何も起きない対象を見張る注意を、三十分ほどしか保てない。Bainbridgeが1983年に、1950年の警戒研究を引いて並べたのがこの両方だ13。四十年以上前に名前がついている以上、これは新しい側ではない。同じ論文は、オペレータが結局自分でも判断し、計算機を確かめる手間が負担に加わったため、計算機の支援があるほうが系全体の成績が落ちた研究(Ephrath, 1980)も引いている13。「信頼しつつ検証せよ」が疲れない査読者を前提していた、という限界も、その古い側の内側にある。
新しいのは、信号そのものが壊れていることだ。確信と正答率の対応(キャリブレーション)にも、AI以前から名前と測り方がある14。だが事前学習だけのモデルは選択肢への確信度と正答率がよくキャリブレーションされているのに、後工程を経るとキャリブレーションが崩れる。OpenAIの技術報告はそう測っている。同じ節は「GPT-4は自信を持って誤りうる」とも書き、間違えそうなときに検算をしない、と続けている15。数値として測られたのは内部の確率のほうで、口調の強さと正しさの関係を定量した測定ではない。それでも、自信の強さを手がかりにできるという前提は、その一段目からすでに崩れている。査読者は、疲れる前の時点ですでに、いつも使っていた目印を一つ失った状態で読み始めることになる。そのキャリブレーションを崩したのは、利用者ではなく提供者の後工程だ。ここが残る。
相手の中身が、合意なく動く
モデル版のドリフトだ。あなたのエージェントは、ベンダーの更新で挙動が変わりうる。同じプロンプトへの応答が、版のあいだで変化していくことは実際に観測されている。同一モデル名の2023年3月版と6月版に、素数か合成数かを判定する同じ設問を、同じ「順を追って考えよ」の指示つきで与えたところ、GPT-4の正答率は84%から51%へ落ち、GPT-3.5は逆に6月のほうが良くなった、という測定がある16。
古い作法はここにもある。依存を固定する。版をピン留めし、再現可能ビルドで固める。だが新しいのは、同じ名前・同じ入り口の裏で中身が静かに差し替わることだ。提供者が版のスナップショットを出しているあいだはピン留めできる。上の測定が成り立ったのも、3月版と6月版が別々に呼べたからだ。ただし、それを出し続けるかどうかは提供者の裁量で、こちらの再現可能ビルドが握れる保証ではない。挙動が変わったと気づいても、行動に移せる変更履歴がない。いつ・どう更新されるかは不透明だ、とその測定の著者ら自身が書いている16。ここに効く規律は、まだ育っていない。モデル性能のシフトを監視する研究は、感情分析のような単純な分類を行うMLサービスについて立ち上がりつつあったが、LLMの評価の多くは、広く使われるLLMサービスの経時的なドリフトを系統的には追っていなかった、と同じ論文は先行研究を整理している16。
候補はもう一つあった。機構が古びることだ。昨日置いたゲートが、今日はもう何も守っていない、という型を指す。二つの問いに当てると、古い作法はある。置いた検査を定期に見直して減らす手続きは、安全管理にも監査にも古くからある。ではAIが壊す前提は何か。答えはこの項と同じ、「相手の中身が、合意なく動く」に落ちる。だから独立の項は立てない。かわりに次の節で、この版ドリフトの裏面を書く。成果物ではなく、こちらの仕掛けの側に出る顔である。
機構は減価するので、ゲートを引退させる
版ドリフトを、自分の仕掛けの側から見る。モデルが変われば、出力が変わる。それと同時に、その出力を守るために置いたゲートの値打ちも変わる。
実例がある。SWE-benchとSWE-agentを作ったチームは、2024年に、先に挙げたアブレーションでインターフェースの作り込みが成績を動かすことを測った4。その一年後、同じチームはツールをbashだけに削り、履歴を一直線に追記するだけのエージェントを出して、「一年が経ち、LMがより有能になったいま、その多くは有用なエージェントを作るのにまるごと不要だ」と書いている。そして現在、SWE-agentの公式ドキュメントは自らを「mini-swe-agentに取って代わられた」「保守のみのモード」と告知し、そちらへ移ることを勧めている。同じ告知は、後継が「より簡素で柔軟でありながら、性能は同等のままだ」とも書き添える17。減ったのは仕掛けであって成績ではない、というのが本人たちの申告だ。値付けをした本人たちが、その値が下がったと判断して、作り込んだインターフェースを既定の座から降ろした。ただし消したわけではない。道具立てや履歴の扱いを取り替えて比べたいならSWE-agentのほうを使え、と後継のREADME自身が書いている17。実運用での値打ちが減っても、測るための道具としては残る。減価は、リポジトリ単位ではなく用途ごとに起きる。
どちらの判断も、その時点のモデルに対しては妥当だったのだろう。だから引き出すべき教訓は「ゲートは無駄だった」ではない。ゲートの値打ちは、相手の能力の関数だ、ということだ。そして関数の引数は、こちらの合意なく動く。
この型の壊れ方は、指示の壊れ方とも機構の壊れ方とも違う。文章で書いた指示は破られても何も鳴らず、ゲートやテストのように機械で強制する仕掛け(機構)は破られたら失敗として赤く出る。だが値打ちを失った機構は、そもそも破れない。相手が先へ行った分だけ、止めるべき違反のほうが来なくなるからだ。通すべきものは通り、止めるべきものは来ない。だから一度も赤くならないまま、何も守っていない。落ちないから気づかれず、書いてあるから忘れられもしない。壊れずに、課金し続ける。取り立てるのは、たとえばレイテンシ、承認の待ち時間、ゲート自身が食う説明の長さ、正当な操作を止める空振りといったものだ。
指示の側でも、値打ちが黙って抜けた例が測られている。ただしこちらは、相手が先へ行った場合ではない。先に引いた版ドリフトの測定16は、素数判定の同じ設問に同じ「順を追って考えよ」の指示を置いたまま、その指示がもたらす正答率の上積みが+24.4ポイントから+0.1ポイントへ落ちたことを記録している。原典はその理由を、6月版が指示に従わなくなったことに帰している。同じ設問での平均出力長は638字から3.9字へ縮んだ。指示は消えていない。エラーも出ない。仕掛けは書かれたまま、何も生まなくなる。SWE-agentの引退が人の判断による引退だとすれば、こちらは判断を挟まずに値打ちだけが抜けた例である。
では、いつ外すか。手順はSWE-agentのチームがすでに実演している。道具立てを一つずつ外して測るアブレーションだ。外した状態で測れるなら、測ってから決める。外しても成績が動かないゲートは、置いておく理由のほうを失っている。
ただしここでも、第一の問いが先に来る。外して測った差をそのまま読めるのは、機械が決定的に採点できる仕事だ。採点できないゲートには、別の数え方を当てる。直近に何回発火したか。発火のうち、何回が本物の違反だったか。発火ゼロのゲートは、守り切ったのかもしれないし、守るべきものがそもそも来なかっただけかもしれない。どちらなのかは、回数だけでは分からない。そのゲートが想定した違反を意図して一度通してみて、赤くなることを確かめるところまでやって、初めて数字になる。
そして引退は、片道ではない。モデルが良くなればゲートは要らなくなるが、版が替われば要り直すこともある。版のドリフトは、上にも下にも動く。同じ測定のなかで、GPT-3.5側の同じ指示は逆に-0.9ポイントから+15.8ポイントへ値上がりしている16。同じ指示の値打ちが、同じ期間に、相手によって上にも下にも動いた。だから引退は一度きりの決定ではなく、繰り返す判定になる。
ここで二つの問いに戻る。答えには日付が要る。「これは古い問題か」の答えは、いつのモデルに対する答えなのか。仕分けは、間違っていなかったのに古びる。だから仕分けた結果を書き留めるときは、判定した日と、判定の根拠になったモデルの版を、一緒に書いておく。
出典17件
-
P. Naur「Programming as Theory Building」Microprocessing and Microprogramming 15, 1985. https://doi.org/10.1016/0165-6074(85)90032-8 — 理論を持つチームの解散をプログラムの死と呼び、文書からの復活は不可能とする。変更ごとの対比は本稿のもの。 ↩ ↩2
-
F. P. Brooks「No Silver Bullet—Essence and Accidents of Software Engineering」Computer 20(4), 1987. https://doi.org/10.1109/MC.1987.1663532 — 初出は1986年。最難所は何を作るかを決めることで、当時のAI(言語モデルでない)に大改善を期待しない。 ↩ ↩2 ↩3
-
Aider 公式ドキュメント・ブログ・実装(2026年8月参照). https://aider.chat/docs/leaderboards/ — 編集ごとのコミット、地図の順位づけと既定1kの予算、投げ返し上限3回。旧ベンチは80%超で飽和し、225問の順位表の首位は88.0%で2025年10月以降は記録が無い。 https://github.com/Aider-AI/aider https://aider.chat/docs/git.html https://aider.chat/docs/repomap.html https://aider.chat/2024/12/21/polyglot.html ↩ ↩2 ↩3
-
J. Yang ほか「SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering」NeurIPS, 2024. https://arxiv.org/abs/2405.15793 — インターフェースだけで成績が動く。一致を一つずつ送る検索は12.0%で、検索コマンドなしの15.7%より低い。 https://swe-agent.com/latest/background/aci/ ↩ ↩2 ↩3 ↩4
-
obra/superpowers v6.3.0 の writing-skills と README, 2026. https://github.com/obra/superpowers/blob/v6.3.0/skills/writing-skills/SKILL.md — 聞き返し・仕様・計画・TDDの流れを掲げ、スキルの執筆を手順書へのTDDと定める。作者の経歴(Request Tracker・Perl 5のリリース管理)は英語版Wikipediaによる。 https://github.com/obra/superpowers/blob/v6.3.0/README.md https://en.wikipedia.org/wiki/Jesse_Vincent ↩
-
K. Greshake ほか「Not What You’ve Signed Up For」AISec, 2023. https://arxiv.org/abs/2302.12173 — データと命令の境界が曖昧だとし、Bing Chat などで間接注入を実証。間接に入れた指示はフィルタを通ると書く。Webページ経由の公開注入は実施していない。 ↩ ↩2
-
OpenAI Codex 公式のサンドボックス解説(2026年8月9日参照). https://learn.chatgpt.com/docs/sandboxing — 閲覧のみ・作業領域への書き込み・制限解除の段階をOS固有の機構で強制し、起動されたコマンドも同じ境界を継承する。囲いと承認は別の制御とする。 ↩
-
J. H. Saltzer, M. D. Schroeder「The Protection of Information in Computer Systems」Proc. IEEE 63(9), 1975. https://doi.org/10.1109/PROC.1975.9939 — 最小権限は主に事故や誤りの被害を限定し、共有系での完全な封じ込めはおそらく不可能とする。 ↩ ↩2
-
N. Hardy「The Confused Deputy」ACM SIGOPS Operating Systems Review 22(4), 1988. https://doi.org/10.1145/54289.871709 — 権限つきのコンパイラが利用者の指定で課金ファイルを上書きした事例。LLMへの当てはめは本稿のもの。 ↩
-
E. Debenedetti ほか「Defeating Prompt Injections by Design」SaTML, 2026. https://arxiv.org/abs/2503.18813 — 信頼できる問い合わせから制御とデータの流れを取り出し、取得データが流れを変えない層を置く。AgentDojo で防御なし84%に対し77%。 https://doi.org/10.1109/satml68715.2026.00040 ↩ ↩2
-
C. E. Jimenez ほか「SWE-bench: Can Language Models Resolve Real-World GitHub Issues?」ICLR, 2024. https://arxiv.org/abs/2310.06770 — 新旧のテスト(後者は中央値51本)が全部通れば解決。実行だけの採点では足りないと自ら書く。 ↩ ↩2
-
L. Zheng ほか「Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena」NeurIPS, 2023. https://arxiv.org/abs/2306.05685 — 引き分けを除く数え方で、GPT-4と人間の一致85%(人間同士81%)、単独採点で85%・84%。位置・冗長さの偏りは実測し、自己優遇は断定しない。 ↩
-
L. Bainbridge「Ironies of Automation」Automatica 19(6), 1983. https://doi.org/10.1016/0005-1098(83)90046-8 — 使わない技能は鈍り、何も起きない対象への注意は三十分ほどしか保てないとする(1950年の警戒研究を引く)。確かめる手間で支援が成績を下げた研究(Ephrath 1980)も引く。 ↩ ↩2
-
S. Lichtenstein ほか「Calibration of probabilities: The state of the art to 1980」Judgment under Uncertainty, 1982. https://doi.org/10.1017/CBO9780511809477.023 — 付けた確率と的中の割合の一致を較正と定義し、その測り方を置く。 ↩
-
OpenAI「GPT-4 Technical Report」, 2023. https://arxiv.org/abs/2303.08774 — 事前学習のみのモデルは較正されているが後工程で崩れる(選択肢のlogprob、§5)。自信を持って誤りうるとも書く。口調の強さの測定ではない。 ↩
-
L. Chen ほか「How Is ChatGPT’s Behavior Changing over Time?」HDSR 6(2), 2024. https://doi.org/10.1162/99608f92.5317da47 — 素数判定でGPT-4は84.0%→51.1%、CoTの上積みは+24.4→+0.1、GPT-3.5は-0.9→+15.8。更新は不透明とする。 https://arxiv.org/abs/2307.09009 ↩ ↩2 ↩3 ↩4 ↩5
-
SWE-agent/mini-swe-agent の README(2026年8月参照). https://github.com/SWE-agent/mini-swe-agent — 一年後にはツールの多くが不要と書く。SWE-agent は保守のみで後継は同等の性能と告知し、ツールや履歴処理を比べるならSWE-agentを勧める。 https://swe-agent.com/latest/background/aci/ ↩ ↩2
この記事はAIを使用して執筆されました。内容には誤りが含まれる可能性があります。事実や数字の出典は脚注から確かめられます。