コンテンツにスキップ

apply_patch ツールで効率的にファイルを編集する

複数のファイルを一度に修正したり、一箇所だけでなく広範囲にわたる変更を加えたりするのは、開発者にとって骨の折れる作業です。一つの edit API を何度も呼び出すと、途中でエラーが起きたり、コードの状態が不安定になったりすることがあります。

このような複雑な変更を、より確実に、そしてスマートに処理したいときにおすすめなのが apply_patch ツールです。

このツールを使用するには、以下の条件を満たしている必要があります。

  • OpenAI のモデル(OpenAI Codex を含む)を使用していること
  • 設定で tools.exec.applyPatch.enabled が有効になっていること

apply_patch は、構造化されたパッチ形式を使ってファイル操作をまとめて実行します。5分で始められる基本的な手順は以下の通りです。

  1. 設定を有効にする: このツールは試験的な機能のため、デフォルトでは無効です。tools.exec 配下にある tools.exec.applyPatch.enabled を true に設定してください。
  2. パッチを作成する: *** Begin Patch で始まり *** End Patch で終わる形式で、変更内容を記述します。
  3. ツールを実行する: 作成したパッチを input パラメータに渡して実行します。

以下は、src/index.ts の内容を書き換える際のコード例です。

{
"tool": "apply_patch",
"input": "*** Begin Patch\n*** Update File: src/index.ts\n@@\n-const foo = 1\n+const foo = 2\n*** End Patch"
}

パッチ内では、以下の 4 つの操作を組み合わせて利用できます。

  • *** Add File: path/to/file.txt: 新しいファイルを作成します。
  • *** Update File: path/to/file.txt: 既存のファイルを修正します。
  • *** Delete File: path/to/file.txt: 不要なファイルを削除します。
  • *** Move to:: *** Update File: 内で使用して、ファイルをリネームします。

ファイルパスはすべてワークスペースのルートからの相対パスとして処理されます。また、ファイルの末尾に追記したい場合は *** End of File を使用してください。

ツールがうまく動作しない場合は、以下の項目を確認してください。

  • ツールが認識されない: apply_patch はデフォルトで無効化されています。tools.exec.applyPatch.enabled 設定が正しいか確認してください。
  • モデルによる制限: このツールは OpenAI モデル専用です。必要に応じて tools.exec.applyPatch.allowModels 設定で、使用しているモデルが許可されているか確認してください。

セットアップや設定で不明な点がある場合は、AI Setup Assistant がサポートします。

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。