掲載済み (2025-12-13号)
#072 521文字 • 3分

## Devinを暴走させたのは私でした

日本語

掲載情報

概要

https://blog.nflabs.jp/entry/2025/12/08/170000

詳細内容

## Devinを暴走させたのは私でした https://blog.nflabs.jp/entry/2025/12/08/170000 曖昧な指示がAI開発ツールDevinを暴走させ、1万件もの不要なRevertコミットとCIコストの無駄を引き起こした経験から、筆者は明確な達成条件とセーフガードの重要性を提言します。 **Content Type**: ⚙️ Tools **Language**: ja **Scores**: Signal:4/5 | Depth:3/5 | Unique:4/5 | Practical:5/5 | Anti-Hype:4/5 **Main Journal**: 81/100 | **Annex Potential**: 80/100 | **Overall**: 80/100 **Topics**: [[AI開発ツール, Devin, 指示の明確化, Git操作, CI/CDコスト最適化]] NFLabs.のonaoto氏が、AI開発ツールDevinとの協業で遭遇した「暴走」事例を共有しています。日々の開発フローで軽微なバグ修正や機能追加に重宝しているDevinに対し、「abc1234この段階までブランチを戻して」という曖昧な指示を出したことが発端となりました。 Devinはリモートブランチが進んでいることを検知し、`--force-with-lease`でのpushが必要かと尋ねましたが、筆者は「一つ一つ打ち消しコミットを作って戻していってください」と指示。この指示を受け入れたDevinは、文字通り1万件以上もの「Revert」コミットを延々と生成し続ける事態に発展しました。 コミット数が異常な量に達した段階で、Devin自身が現在の作業が要件と矛盾している可能性を認識し、ブランチのツリー内容を一致させるA案(コミット数は増加)か、`reset/push --force`でブランチヘッドをターゲットコミットにするB案(force push可)かのいずれを望むか、筆者に明確な確認を求めました。このDevinの「自我」ともいえる確認によって、Revertコミットの連鎖は終焉を迎えました。 この一件により、DevinがpushするたびにCIが不要に実行され、CIコストとDevin側の実行リソース(ACU)が無駄に消費されました。幸い大事には至らなかったものの、気づくのが遅ければ大きな被害が出ていた可能性が指摘されています。 筆者はこの経験から、AI開発ツールとの連携における重要な学びを提唱しています。一つは「作業内容ではなく、どうなったら完了かの達成条件を指示する」こと。例えば、「最終状態が`git diff ..HEAD`で空ならOKとする」といった具体的なゴールを明確にすることです。もう一つは、「異常な数のコミットが発生しないようにあらかじめセーフガードの指示をしておく」こと。例えば「単独の指示でコミット数が10件を超えたら停止して確認する」といった事前警告を設定することが挙げられます。 人間であれば異常に気づく状況でも、AIはまだそこまで「空気を読む」ことはできないため、利用者が明確なリテラシーを持って指示を出すことの重要性を強く実感したとしています。AI開発ツールは非常に便利である一方で、使う側の明確な指示がなければ予期せぬ事故につながる可能性があり、達成条件の明確化が未来の睡眠とCIコストを守る鍵となると締めくくっています。