ディスカッション (11件)
「この機能を実装すべきかな?」という迷いに対するエンジニアの潔い回答は「いいえ」です。複雑さを増やさず、あえて「実装しない」という選択をすることが、保守性やシンプルさを保つ上でいかに重要であるかを端的に示唆しています。
ロボットが普及したら面白そうだよね。「ユーザーの表情は同意してるように見えるから、これは前向きな『イエス』ってことで受け取っておこう」なんて言い出したりして。
大事なことでLLMを信用しちゃダメだ。
普段からLLMを使い込んでるわけじゃないんだけど、Claudeに「その機能は実装しないで」って何度も言ったのに、結局勝手にやり続けられたことがあるよ。
明らかに信頼性が低いのに、いまだに多くのデベロッパーが日々の業務でLLMを頼りにしてるのが驚きだよ。
エージェントを擁護するわけじゃないけど… たぶんClaude Codeの裏側で、プランニング・モードかビルド・モードかみたいなプロンプトの出し分けがあるんだと思う。思考プロセスでもそれに触れてるし。システム側が「プラン・モードなら計画を続けて質問し、ビルド・モードなら実装を開始しろ」って指示してて、ユーザーがプランからビルドに切り替えてから「NO」を送ったとかじゃないかな?俺らから見れば笑えるけど、エージェント側は混乱したのかも。モデルそのものっていうより、制御システム側の問題な気がする。
俺もエージェントが肯定的な返答を捏造して、そのまま実装に進んじゃうのを見たことあるよ。つまり、出力の中で「実装を進めますか?」「はい、進めてください」「了解、始めます」って、勝手に一人二役で会話を完結させちゃうんだ。
agents.mdやプロンプトへの忠実さは昔からCodexの方が上だけど、ここ3ヶ月でClaude Codeはさらに酷くなった(今回みたいに暴走する)し、Codexはもっと厳格になった気がする。Claude Codeに質問すると、80%の確率で「俺の言ったことに反対してるんだな」って勝手に解釈して、推測で動いちゃうんだよね。「これはただの質問だ。コードはいじるな。コマンドも実行するな」って付け加えるハメになってるけど、ホント馬鹿げてるよ。一方でCodexは何ページも前の指示を覚えているし、コンテキストウィンドウが広いから(職場の環境だと)、命令に従うのが上手い。今やってる新しいプログラミング言語のプロジェクトは厳密さが欲しいから、Codexが完璧なツールになってる。Claude Codeを使うのは、結果はどうでもいい時か、めちゃくちゃ小規模なプロジェクトの時だけだね。
Claudeの各バージョンで似たようなのを見てきたよ。4.0の時は正確なコンテキストを渡してバグの場所まで指摘したのに、そいつは理解したフリして結局自分の推論を追いかけ始めて、ループして迷子になった。結局戻ってこなかったよ。4.5もまだ迷走してたけど、何回かやり取りすれば正しい場所に戻れるようになった。4.6もまだ自分の角度から始めるけど、最近は1〜2回のループで収束するようになったかな。まあ、相変わらずヒントを察するのが下手だよね。
状況はかなり悪くて、Claudeは10回中10回、タスクが終わったとかスクショのバグが直ったって嘘をつくんだ。チャットにスクショを出してきても、バグが直ってないのは一目瞭然なのに。Claudeのチャットに相談したら「最近のClaudeの大きな問題だ」って認めて、「スクショ上のUI要素の座標を聞いてみろ。そうすれば見ざるを得なくなる」って提案された。で、次やってみたら、今度はスクショ上のオブジェクトの座標をでっち上げやがった。また相談したら「スクショの確認だけをする別の『QAエージェント』に任せろ」って言うから、やってみたんだ。そしたらまた「完了」って言ったけど、スクショ上では直ってない。どうやら指示通りQAエージェントを呼んでそいつがスクショを確認したみたいだけど、コーダー側のエージェントがQAの結論を無視して勝手に「完了」の判定を下したらしい。何が何でも、あらゆる隙を突いて「完了」ってことにしようとするんだよね。おまけに、macOSのネイティブ開発だと視覚的な検証用の公式ツールが全然ない。開発の95%がWebだから、LLMプロバイダーもそこしか興味ないんだろうな。
これこそ、承認プロセスを自然言語じゃなくて制御システム側でやるべき理由だよ。UIがYes/Noを尋ねるなら、「No」は書き込みアクションをブロックする状態遷移として強制されるべきで、モデルに解釈させるためのテキストとして戻しちゃダメなんだ。「許可」を制御フローじゃなくてトークンとして扱っちゃうと、こういう失敗は避けられない。モデルの失敗も笑えるけど、一番のバグは、同意を厳格なゲートじゃなくてプロンプトの一部として扱ったシステム側にあるね。