TL;DR

LLMエージェントがゼロからプログラムを再実装する際、既存手法はドキュメント読み・バイナリ探索・コード生成を混在させ、探索不足や仕様の喪失・誤りの伝播を招く。SpecFirstは専用のSpecエージェントが事前にバイナリを系統的に探索し、構造化された仕様書(SPEC.md)を生成。その後、コード合成エージェントがその仕様を基に実装する2段階パイプライン。ProgramBench全200問で評価し、テスト合格率を6.9%~21.3%向上、バイナリ探索カバレッジを9.4%~18.5%改善した。

解説

AMI HAPPY

ねえ智也くん、このSpecFirstって論文、面白そうだね!でも「仕様引き出し」って何?

TOMOYA NEUTRAL

ああ、簡単に言うと、AIにプログラムをゼロから作らせる時に、まず仕様をちゃんと調べて整理するフェーズを入れるって話だよ。

AMI SURPRISED

へー、今まではどうしてたの?

TOMOYA NEUTRAL

従来の手法は、ドキュメント読んだり、バイナリを探したり、コード生成を同時にやってたんだ。でもそれだと探索が足りなかったり、仕様を見落としたり、間違った情報がそのままコードに反映されちゃうんだよね。

AMI HAPPY

なるほど。で、SpecFirstはどう違うの?

TOMOYA NEUTRAL

SpecFirstは2段階パイプラインになってて、最初にSpecエージェントっていうのがバイナリを系統的に調べて、構造化された仕様書(SPEC.md)を作るんだ。その後で、コード合成エージェントがその仕様書だけを見て実装する。

AMI SURPRISED

あ、それって仕様と実装を分けることで、ミスが伝播しにくくなるってこと?

TOMOYA HAPPY

そう。評価もしてて、ProgramBenchっていう200問のベンチマークで、テスト合格率が6.9%から21.3%も上がったんだ。バイナリ探索のカバレッジも9.4%から18.5%改善した。

AMI HAPPY

すごいじゃん!でも、何か弱点とかあるの?

TOMOYA NEUTRAL

うーん、Specエージェントがバイナリを探索する時間がかかることと、仕様書の品質に依存するところかな。あと、複雑な依存関係があるプログラムだとまだ課題があるみたい。

AMI HAPPY

なるほどね。でも、これって人間のプログラマーにも応用できそうだね。私も卒論書く前に「仕様引き出し」やってみようかな?

TOMOYA ANGRY

お前の卒論、仕様を引き出す前に締切が来そうだな。