優柔不断なAIコーディングエージェントとの面白い体験
著者は、GoAWKのバグを素早く診断したものの、7つの異なる修正オプションを25回以上も行ったり来たりしたAIコーディングエージェント(Claude Opus 4.6とGitHub Copilot)の体験を語り、AIモデルの優柔不断さを浮き彫りにしている。
ベン・ホイト(Ben Hoyt)は自身のブログで、AIコーディングエージェントとの興味深い体験を綴っている。彼はGoLand IDEでOpus 4.6(Claudeのモデル)とGitHub Copilotプラグインを使用し、GoAWKインタプリタの厄介なバグを修正しようとしていた。問題はAwkプログラム「BEGIN { a["x"]=1; for (NR in a) print NR, a[NR] }」にあり、期待される出力は「x 1」だが、実際には「0\n0\n」と表示されていた。
AIは数段落で問題を診断し、人間よりも早く原因を突き止めた。特殊変数(NRなど)がネイティブのGoのint型として保存され、文字列表現が失われていることが原因だった。しかし、その後の修正案の検討でAIは優柔不断な様子を見せ始めた。数分の間に7つの異なる修正オプションを提案し、それらを少なくとも25回も行ったり来たりしたのだ。
オプションは以下の通り:A)特殊変数の文字列表現を保持;B)特殊変数を値型として保存;C)文字列代入時に文字列オーバーライドを保存;D)ForInオペコードのみを修正;E)サイドフィールドに元の値を保存;F)lineNumとfileLineNumのみを値型に変更;G)値型の特殊オーバーライドマップを追加。AIは「実は…」という言い回しを19回も使い、その都度意見を変えた。
最も頻繁に提案されたオプションB(11回)が正しい修正であり、ホイトは最終的にプルリクエストでそれを採用した。しかし、AIは決断を下せず、コードを編集した後にそれを忘れてしまうことさえあった。結局、ホイトはAIの応答をキャンセルした。
この体験は、現在のAIエージェントが意思決定を収束させる能力に限界があることを如実に示している。問題を診断し複数の解決策を提案できる一方で、最適な選択肢で停止するメカニズムが欠けているのだ。ホイトは「これらのマシンは素晴らしいが、こんなに優柔不断な友人は欲しくない」と締めくくっている。