書き直しではなく差分で反復する
コードが存在したら、また全体を求めたくなる衝動を抑えよ。「もっと良くして」のような曖昧なフォローアップは、動いているコードを捨て、すでに直したバグを再導入する。求める具体的な変更を指し示せ。
それは違う、全部書き直して。
関数は動くけど、二つ問題がある:
1. `throw new Error` の行のエラーは、throw する代わりに
Result 型を返すべき — 上の validateUser 関数の
パターンに合わせて。
2. ループが毎回 `items.length` を読み直している。巻き上げて。
その二つの変更の diff だけ見せて。
健全なサイクルは緊密なループだ。モデルにプロンプトし、出力を読み、小さく的を絞った差分で——決して全体の書き直しではなく——正しくなるまで磨く:
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 指示 │ ──▶ │ モデル │ ──▶ │ 出力 │
└─────────┘ └─────────┘ └────┬────┘
▲ │
│ ▼
│ ┌─────────┐
│ 良い? │ レビュ │
│ はい ◀─────────────────┤ diff │
│ └────┬────┘
│ │ いいえ
│ 修正 (小さなdiff) │
└───────────────────────────────┘
ドリフト? ▶ 最後の良い版に戻す
(全体の書き直しではなく)差分を求めることは、変更をレビュー可能に保ち、すでに動いている部分を保存する。AIの出力を同僚のプルリクエストのように扱おう。具体的な行にコメントし、的を絞った編集を要求する。変更が横道に逸れ、返答のたびにコードが望んだものから遠ざかっていくなら、パッチを当て続けるな——信頼できた最後のバージョンに戻し、より鋭い記述でそこからプロンプトし直せ。壊れた土台の上で前へ反復し続けるのは、混乱を積み増すだけだ。