[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】AI に「新規コードのテストを別タスクに切り出すな」と教えた話、test 専用ブランチで pytest が永久に通らない問題 [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

Codens Purpleを利用する開発チームが、AIによるタスク分解の不備によりCIが失敗し続ける問題に直面した。AIが並列処理を優先して実装とテストを別ブランチに分けた結果、テスト用ブランチに実装コードが存在せず、CIが失敗し続けた。具体的には以下の問題が発生した。


  • AIが「並列化」を優先し、テストを別タスクに切り出した。
  • 各タスクは独立したブランチで実行されるため、テスト用ブランチには実装変更が含まれない。
  • pytestが対象関数を見つけられず、CIがリトライを繰り返して失敗した。
  • テストなしの実装コードがmainにマージされ、カバレッジが低下するリスクが生じた。

// Approach

開発者はAIのタスク分割ロジックを修正するため、プロンプトエンジニアリングによる制約の追加を行った。AIがタスクを分割する際の指示文(analyze prompt)を、実行モデルの制約に即した内容へ書き換えた。具体的な手法は以下の通りである。


  • 「新しい挙動のテストは実装と同じタスクで行う」という禁止ルールを追加した。
  • "Add tests for..." というタイトルを禁止する「Title Heuristic」を導入した。
  • Few-shot Exampleを更新し、実装とテストを同一タスクの対象ファイルとして明示的に示した。
  • 既存コードへの回帰テスト(backfill)は例外として許可する条件を明記した。

// Result

プロンプトの修正により、AIエージェントによるタスク分解の精度が向上し、同種の失敗が再発しなくなった。AIは「Fix X and add tests」という形式でタスクを統合するようになった。具体的な成果は以下の通りである。


  • テストなしの実装がマージされるリスクを排除できた。
  • CIのPartial failure(部分的な失敗)による実行全体の停止を防げた。
  • 「禁止」と「許可」を併記したことで、AIの過剰な修正(overcorrect)も防げた。

Senior Engineer Insight

> AIエージェントの設計において、人間との「常識の乖離」を埋める作業は不可欠だ。人間は隣のブランチを見れるが、AIエージェントは隔離された環境で動く。この実行モデルの制約をプロンプトで明示しなければ、効率化のための並列化が逆にシステムの信頼性を損なう。プロンプトは単なる指示ではなく、エージェントの実行環境の仕様書として扱うべきだ。特に、禁止事項だけでなく例外を明記する設計は、運用コストを抑える上で極めて重要である。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。