跳到內容

使用 apply_patch tool 批次更新檔案

寫程式最煩的就是要同時改好幾個檔案。如果只靠單次的指令,有時候會因為程式碼太複雜而失敗,或者改完一個檔案卻漏掉另一個。

這種時候,與其一次次手動調整,不如用結構化的方式告訴系統你的修改邏輯。apply_patch 就是為了這種多檔案或跨區塊的編輯需求而設計的,能讓你避開單次編輯容易出錯的問題。

在使用這個工具之前,請確保你符合以下條件:

  • 使用 OpenAI 模型(包含 OpenAI Codex)
  • 已在設定中開啟 tools.exec.applyPatch.enabled

apply_patch 只需要一個 input 字串,你必須把所有的操作包在 *** Begin Patch 與 *** End Patch 之間。

你可以同時進行多種操作,例如:

*** Begin Patch
*** Add File: path/to/file.txt
+line 1
+line 2
*** Update File: src/app.ts
@@
-old line
+new line
*** Delete File: obsolete.txt
*** End Patch

你可以參考下方的 JSON 格式來呼叫 API:

{
"tool": "apply_patch",
"input": "*** Begin Patch\n*** Update File: src/index.ts\n@@\n-const foo = 1\n+const foo = 2\n*** End Patch"
}
  • 路徑處理:所有的檔案路徑都會以 workspace root 為基準。
  • 重新命名:在 *** Update File: 區塊中使用 *** Move to: 就能直接更改檔名。
  • 檔案末端插入:如果需要在檔案最後面插入內容,可以使用 *** End of File 標記。

如果你在使用時遇到問題,可以檢查以下幾點:

  • 工具未啟用:這個工具預設是關閉的,請確認 tools.exec.applyPatch.enabled 已設為 true。
  • 模型限制:目前僅支援 OpenAI 模型。你可以透過 tools.exec.applyPatch.allowModels 來指定哪些模型可以使用此工具。
  • 格式錯誤:請確保你的 input 完整包含了起始與結束標記。

如果你需要更進一步的協助,可以詢問我們的 AI Setup Assistant。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。