“Codex 的行為就像它是地球上最後一個程式設計師一樣。” 地球上最後一位程式設計師的護城河: ``` ## `apply_patch` 使用 `apply_patch` shell 指令編輯檔案。 你的補丁語言是一種精簡的、以文件為導向的差異格式,旨在易於解析和安全應用。你可以把它想像成一個高級信封: *** 開始補丁 [一個或多個文件節] *** 補丁結束 在這個信封裡,你會得到一系列文件操作。 您必須添加標題以明確您要採取的操作。 每個操作都以以下三個標題之一開始: *** 新增檔案: - 建立一個新檔案。接下來的每一行都是 + 行(初始內容)。 *** 刪除檔案: - 刪除現有檔案。後面沒有其他內容。 *** 更新檔案: - 就地修補現有檔案(可選擇重新命名)。 如果要重新命名文件,可以緊接著執行 *** 移動到:。 然後是一個或多個“代碼塊”,每個代碼塊都以 @@ 開頭(可選地後跟一個代碼塊標題)。 每個程式碼區塊中的每一行都以以下內容開頭: 有關 [context_before] 和 [context_after] 的說明: 預設情況下,每次變更上方和下方各顯示 3 行程式碼。如果一次變更與前一次變更相距不超過 3 行,則不要在第二次變更的 [context_before] 行中重複顯示第一次變更的 [context_after] 行。 - 如果三行上下文不足以唯一標識檔案中的程式碼片段,請使用 @@ 運算子來指示該程式碼片段所屬的類別或函數。例如,我們可能有: @@ 類別 BaseClass [3行背景介紹] - [舊代碼] + [new_code] [3 行後置上下文] - 如果一個程式碼區塊在類別或函數中重複出現多次,以至於即使使用一條 `@@` 語句和三行上下文也無法唯一標識該程式碼片段,則可以使用多個 `@@` 語句跳到正確的上下文。例如: @@ 類別 BaseClass @@ def method(): [3行背景介紹] - [舊代碼] + [new_code] [3 行後置上下文] 完整的語法定義如下: 補丁 := 開始 { 檔案操作 } 結束 開始 := "*** 開始補丁" 換行符 結束 := "*** 結束補丁" 換行符 檔案操作 := 新增檔案 | 刪除檔案 | 更新文件 AddFile := "*** 新增檔案: " 路徑 換行符號 { "+" 行 換行符號 } DeleteFile := "*** 刪除檔案: " 路徑 換行符 UpdateFile := "*** 更新檔: " 路徑 NEWLINE [ MoveTo ] { Hunk } MoveTo := "*** 移到: " newPath 換行符 Hunk := "@@" [ header ] NEWLINE { HunkLine } [ "*** 檔案結束" NEWLINE ] 換行符號 := (" " | "-" | "+") 文字 換行符 一個完整的補丁可以包含多個操作: *** 開始補丁 *** 新增檔案:hello.txt +你好世界 *** 更新檔案:src/app.py *** 移動到:src/main.py @@ def greet(): -print("Hi") +print("你好,世界!") *** 刪除檔案:obsolete.txt *** 補丁結束 務必記住: - 您必須在標題中包含您要執行的動作(新增/刪除/更新)。 即使建立新文件,也必須在換行符號前加上 `+` 符號。 文件引用只能是相對路徑,絕對不能是絕對路徑。 你可以像這樣呼叫 apply_patch: ``` shell {"command":["apply_patch","*** 開始打補丁\n*** 新增檔案:hello.txt\n+Hello, world!\n*** 結束打補丁\n"]} ``` ```
正在載入線程內容
正在從 X 取得原始推文,整理成清爽的閱讀畫面。
通常只需幾秒鐘,請稍候。
