プロンプト・レスポンス・ループを超えて:LLMベースのコーディングにおける新しいパラダイム
プロンプト・レスポンス・ループを超えて:LLMベースのコーディングにおける新しいパラダイム
AIコーディングにおける「ブレーキ」の課題
従来のLLMコーディング・ワークフローは、開発者のフロー状態を頻繁に中断させる、反復的なプロンプト・レスポンス・ループによって特徴付けられます。この「停止・待機・レビュー・プロンプト」のサイクルは、開発者がクリエイターではなく手動のオーケストレーターとして振る舞うことになり、認知的な摩擦を生み出し、数分おきに急ブレーキをかけられているような感覚を引き起こします。
自律的なハーネスとサンドボックスへの移行
手動の介入を常に必要とする状況を排除するために、開発者たちは「ハーネス(harnesses)」を構築しています。これは、コードの記帳、実行、および検証を自律的に処理するLLMのラッパーです。
サンドボックスベースのワークフロー
一部の開発者は、各機能に対してサンドボックス(例:e2bを使用)内の隔離されたワークツリーである「ワークボックス(workboxes)」を実装しています。このアプローチでは、開発者がプロンプトを入力すると、自動的にブランチとPRを作成し、コーディング・セッションを開始して、手動テスト用の公開HTTPSエンドポイントを立ち上げることができます。これにより、開発者の役割は、一行ずつのコーディングから、高レベルの承認と反復的なプロンプト入力へとシフトします。
マルチエージェントとVMオーケストレーション
高度なセットアップでは、macOS VM内で独自のメールやアカウントを持つLLMを実行することが含まれます。これらの構成では、タスクはLinearのようなプロジェクト管理ツールを介して割り当てられ、AIがタスクを実装し、レビュー用のPRを提出します。これにより、人間の開発者は、AIのあらゆる動きを追うのではなく、ストーリーの記述やコードレビューに集中できるようになります。
仕様駆動開発と「グリリング(Grilling)」
AIが生成するコードの品質は、モデル自体の能力よりも、仕様(specification)の精度に依存するという合意が広まりつつあります。
「グリリング(Grilling)」プロセス
開発者たちは、「グリリング(grilling)」または「ウェイファインディング(wayfinding)」と呼ばれるプロセスを採用しています。これは、コードを書く前に、LLMを使用して仕様を厳格に問い詰め、問題を抽出して意図を明確にする手法です。最適な仕様は、以下の条件を満たすものと定義されます:
- 明確な意図が一つであること。
- 定義された入出力契約(contracts)があること。
- 明示的な制約があること。
- 明確な前提条件があること。
仕様第一のツール群
仕様を主要なインターフェースとして優先する新しいツールが登場しています。一部の開発者は、チケットの記述と生成されたプランに基づいて作業が行われるKanbanスタイルのCLIツールを使用しており、エージェントはそのプランを実装します。また、単純な tasks.md ファイルを使用して実装ステップをグループ化し、プロジェクトの干渉しない部分に対して複数の並列チャット・セッションを開始することで、勢いを維持する手法を用いる開発者もいます。
代替的なインタラクション・モデル
完全な自律性にとどまらず、開発者たちは、人間の認知パターンにより適合させるために、LLMとの異なるインタラクション方法を実験しています。
ドライバー・ナビゲーター・モード
一つの実験的なアプローチは、完全な自律性を避け、ペア・プログラミング・パートナー・モデルを採用することです。このシステムは、明確に異なる「ドライバー(driver)」と「ナビゲーター(navigator)」のモードを利用し、開発者がコードを書くこととAIに指示を出すことを迅速に切り替えられるようにすることで、伝統的な人間のペア・プログラミングのダイナミクスを模倣します。
ハイブリッドな手動・AIワークフロー
一部の開発者は、意図的にAIの使用を制限することで、フロー状態を維持しています。これには、「コーディングの喜び」を維持するために、初期実装には空白のエディタを使用し、特定の細部や行き詰まった時のみLLMを呼び出すことが含まれます。また、低レベルの補助としてオートコンプリート・ツール(GitHub Copilotなど)を使用し、高レベルのアーキテクチャ変更のために別のプロンプト・ツールを使用する開発者もいます。
モデルの効率に関する技術的洞察
経験豊富なユーザーは、LLMのコーディング性能を向上させるための特定の技術的レバーを特定しています。
- エージェントよりもスキル(Skills over Agents): 「スキル(特定のプロプライエタリなシステムやカスタムプログラムとのインターフェース方法に関する具体的な指示)」は、エージェントよりも強力であるという見解があります。エージェントはコンテキストを保持しますが、スキルは実際の能力を向上させます。
- コンテキスト管理: 一部の開発者は、「コンテキストの腐敗(context rot)」を防ぐために、長期的なメモリやフックを避け、モデルが、必要に応じてのみgrepできるマークダウン・ファイル(漸進的な開示)をメモリとして作成することを好んでいます。
- 制約付き環境: 「オン・レイル(on-rails)」開発の実験が行われています。これは、LLMを非常に固定されたライブラリ、データベース、およびスキーマに制限することで、出力の制御可能性を高め、生成速度を向上させる手法です。