Claude 可以使用 Anthropic 定義的文字編輯器工具來查看和修改文字檔案,幫助您除錯、修復和改進程式碼或其他文字文件。這使 Claude 能夠直接與您的檔案互動,提供實際的協助而不僅僅是建議更改。

使用文字編輯器工具之前

使用相容的模型

Anthropic 的文字編輯器工具僅適用於 Claude 3.5 Sonnet 和 Claude 3.7 Sonnet:

  • Claude 3.7 Sonnet: text_editor_20250124
  • Claude 3.5 Sonnet: text_editor_20241022

兩個版本提供相同的功能 - 您使用的版本應該與您正在使用的模型相匹配。

評估您的使用案例適用性

以下是使用文字編輯器工具的一些範例:

  • 程式碼除錯:讓 Claude 識別並修復您程式碼中的錯誤,從語法錯誤到邏輯問題。
  • 程式碼重構:讓 Claude 通過有針對性的編輯來改進您的程式碼結構、可讀性和效能。
  • 文件生成:要求 Claude 為您的程式碼庫添加文件字串、註釋或 README 檔案。
  • 測試建立:讓 Claude 根據其對實作的理解為您的程式碼建立單元測試。

使用文字編輯器工具

使用 Messages API 向 Claude 提供文字編輯器工具(命名為 str_replace_editor):

文字編輯器工具可以按以下方式使用:

1

向 Claude 提供文字編輯器工具和使用者提示

  • 在您的 API 請求中包含文字編輯器工具
  • 提供可能需要檢查或修改檔案的使用者提示,例如「您能修復我程式碼中的語法錯誤嗎?」
2

Claude 使用工具檢查檔案或目錄

  • Claude 評估需要查看的內容並使用 view 命令檢查檔案內容或列出目錄內容
  • API 回應將包含帶有 view 命令的 tool_use 內容區塊
3

執行查看命令並返回結果

  • 從 Claude 的工具使用請求中提取檔案或目錄路徑
  • 讀取檔案內容或列出目錄內容並將其返回給 Claude
  • 通過繼續對話並添加包含 tool_result 內容區塊的新 user 訊息將結果返回給 Claude
4

Claude 使用工具修改檔案

  • 在檢查檔案或目錄後,Claude 可能會使用 str_replace 等命令進行更改或使用 insert 在特定行號添加文字
  • 如果 Claude 使用 str_replace 命令,Claude 會構建一個格式正確的工具使用請求,其中包含舊文字和要替換的新文字
5

執行編輯並返回結果

  • 從 Claude 的工具使用請求中提取檔案路徑、舊文字和新文字
  • 在檔案中執行文字替換
  • 將結果返回給 Claude
6

Claude 提供分析和解釋

  • 在檢查並可能編輯檔案後,Claude 提供對其發現和所做更改的完整解釋

文字編輯器工具命令

文字編輯器工具支援多個用於查看和修改檔案的命令:

view

view 命令允許 Claude 檢查檔案內容或列出目錄內容。它可以讀取整個檔案或特定範圍的行。

參數:

  • command:必須是 “view”
  • path:要查看的檔案或目錄的路徑
  • view_range(可選):指定要查看的起始和結束行號的兩個整數陣列。行號從 1 開始編號,結束行為 -1 表示讀取到檔案末尾。此參數僅適用於查看檔案,不適用於目錄。

str_replace

str_replace 命令允許 Claude 將檔案中的特定字串替換為新字串。這用於進行精確的編輯。

參數:

  • command:必須是 “str_replace”
  • path:要修改的檔案路徑
  • old_str:要替換的文字(必須完全匹配,包括空白和縮排)
  • new_str:用於替換舊文字的新文字

create

create 命令允許 Claude 建立具有指定內容的新檔案。

參數:

  • command:必須是 “create”
  • path:新檔案應該建立的路徑
  • file_text:要寫入新檔案的內容

insert

insert 命令允許 Claude 在檔案的特定位置插入文字。

參數:

  • command:必須是 “insert”
  • path:要修改的檔案路徑
  • insert_line:要在其後插入文字的行號(0 表示檔案開頭)
  • new_str:要插入的文字

undo_edit

undo_edit 命令允許 Claude 撤銷對檔案的最後一次編輯。

參數:

  • command:必須是 “undo_edit”
  • path:要撤銷最後一次編輯的檔案路徑

示例:使用文字編輯器工具修復語法錯誤

此示例演示了 Claude 如何使用文字編輯器工具修復 Python 檔案中的語法錯誤。

首先,您的應用程式向 Claude 提供文字編輯器工具和修復語法錯誤的提示:

Claude 將首先使用文字編輯器工具查看檔案:

{
  "id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
  "model": "claude-3-7-sonnet-20250219",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "我會幫您修復 primes.py 檔案中的語法錯誤。首先讓我看看檔案以識別問題。"
    },
    {
      "type": "tool_use",
      "id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
      "name": "str_replace_editor",
      "input": {
        "command": "view",
        "path": "primes.py"
      }
    }
  ]
}

您的應用程式應該讀取檔案並將其內容返回給 Claude:

行號

在上面的示例中,view 工具結果包含了帶有行號前綴的檔案內容(例如,“1: def is_prime(n):”)。行號不是必需的,但對於成功使用 view_range 參數檢查檔案的特定部分和使用 insert_line 參數在精確位置添加內容來說是必不可少的。

Claude 將識別語法錯誤並使用 str_replace 命令進行修復:

{
  "id": "msg_01VwXyZAbCdEfGhIjKlMnO",
  "model": "claude-3-7-sonnet-20250219",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "我在您的 primes.py 檔案中找到了語法錯誤。在 `get_primes` 函數中,for 迴圈行末尾缺少冒號(:)。讓我為您修復。"
    },
    {
      "type": "tool_use",
      "id": "toolu_01PqRsTuVwXyZAbCdEfGh",
      "name": "str_replace_editor",
      "input": {
        "command": "str_replace",
        "path": "primes.py",
        "old_str": "    for num in range(2, limit + 1)",
        "new_str": "    for num in range(2, limit + 1):"
      }
    }
  ]
}

您的應用程式應該進行編輯並返回結果:

最後,Claude 將提供完整的修復說明:

{
  "id": "msg_01IjKlMnOpQrStUvWxYzAb",
  "model": "claude-3-7-sonnet-20250219",
  "stop_reason": "end_turn",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "我已經修復了您 primes.py 檔案中的語法錯誤。問題出在 `get_primes` 函數的第 19 行。for 迴圈行末尾缺少冒號(:)。\n\n以下是我所做的更改:\n\n從:\n```python\nfor num in range(2, limit + 1)\n```\n\n改為:\n```python\nfor num in range(2, limit + 1):\n```\n\n在 Python 中,開始新程式碼區塊的語句末尾需要冒號,例如 for 迴圈、if 語句、函數定義等。沒有冒號,Python 會引發語法錯誤,因為它不知道程式碼區塊從何處開始。\n\n您的程式碼現在應該可以正確執行了。該函數將正確生成指定限制內的質數列表。"
    }
  ]
}

實作文字編輯器工具

文字編輯器工具作為無架構工具實作,由 type: "text_editor_20250124" 識別。使用此工具時,您不需要像其他工具那樣提供輸入架構;架構已內建於 Claude 的模型中,無法修改。

1

初始化您的編輯器實作

建立輔助函數來處理檔案操作,如讀取、寫入和修改檔案。考慮實作備份功能以從錯誤中恢復。

2

處理編輯器工具呼叫

建立一個根據命令類型處理來自 Claude 的工具呼叫的函數:

def handle_editor_tool(tool_call):
    input_params = tool_call.input
    command = input_params.get('command', '')
    file_path = input_params.get('path', '')
    
    if command == 'view':
        # 讀取並返回檔案內容
        pass
    elif command == 'str_replace':
        # 替換檔案中的文字
        pass
    elif command == 'create':
        # 建立新檔案
        pass
    elif command == 'insert':
        # 在指定位置插入文字
        pass
    elif command == 'undo_edit':
        # 從備份還原
        pass
3

實作安全措施

添加驗證和安全檢查:

  • 驗證檔案路徑以防止目錄遍歷
  • 在進行更改前建立備份
  • 優雅地處理錯誤
  • 實作權限檢查
4

處理 Claude 的回應

從 Claude 的回應中提取並處理工具呼叫:

# 處理 Claude 回應中的工具使用
for content in response.content:
    if content.type == "tool_use":
        # 根據命令執行工具
        result = handle_editor_tool(content)
        
        # 將結果返回給 Claude
        tool_result = {
            "type": "tool_result",
            "tool_use_id": content.id,
            "content": result
        }

實作文字編輯器工具時,請記住:

  1. 安全性:該工具可以訪問您的本地檔案系統,因此要實作適當的安全措施。
  2. 備份:在允許編輯重要檔案之前,始終建立備份。
  3. 驗證:驗證所有輸入以防止意外更改。
  4. 唯一匹配:確保替換恰好匹配一個位置以避免意外編輯。

處理錯誤

使用文字編輯器工具時可能會發生各種錯誤。以下是處理這些錯誤的指導:

遵循實作最佳實踐


定價和代幣使用

文字編輯器工具使用與其他 Claude 工具相同的定價結構。它遵循基於您使用的 Claude 模型的標準輸入和輸出代幣定價。

除了基本代幣外,文字編輯器工具還需要以下額外的輸入代幣:

工具額外輸入代幣
text_editor_20241022 (Claude 3.5 Sonnet)700 代幣
text_editor_20250124 (Claude 3.7 Sonnet)700 代幣

有關工具定價的更詳細資訊,請參見工具使用定價

將文字編輯器工具與電腦使用整合

文字編輯器工具可以與電腦使用工具和其他 Anthropic 定義的工具一起使用。當組合這些工具時,您需要:

  1. 包含適當的測試版標頭(如果與電腦使用一起使用)
  2. 將工具版本與您使用的模型匹配
  3. 考慮請求中包含的所有工具的額外代幣使用

有關在電腦使用上下文中使用文字編輯器工具的更多資訊,請參見電腦使用

更新日誌

日期版本更改
2025 年 3 月 13 日text_editor_20250124獨立文字編輯器工具文件的引入。此版本針對 Claude 3.7 Sonnet 進行了優化,但具有與前一版本相同的功能。
2024 年 10 月 22 日text_editor_20241022文字編輯器工具與 Claude 3.5 Sonnet 一起首次發布。提供通過 viewcreatestr_replaceinsertundo_edit 命令查看、建立和編輯檔案的功能。

後續步驟

以下是一些如何以更方便和強大的方式使用文字編輯器工具的想法:

  • 整合到您的開發工作流程中:將文字編輯器工具整合到您的開發工具或 IDE 中
  • 建立程式碼審查系統:讓 Claude 審查您的程式碼並進行改進
  • 建立除錯助手:建立一個系統,讓 Claude 幫助您診斷和修復程式碼中的問題
  • 實作檔案格式轉換:讓 Claude 幫助您將檔案從一種格式轉換為另一種格式
  • 自動化文件:設置工作流程,讓 Claude 自動為您的程式碼生成文件

當您使用文字編輯器工具構建應用程式時,我們很期待看到您如何利用 Claude 的功能來提升您的開發工作流程和生產力。