Alat editor teks
Berikan Claude alat editor teks yang didefinisikan Anthropic untuk melihat, membuat, dan mengedit file, serta menangani perintah view, str_replace, create, dan insert miliknya.
Claude dapat menggunakan alat editor teks berskema Anthropic untuk melihat dan memodifikasi file teks, membantu Anda melakukan debug, memperbaiki, dan meningkatkan kode atau dokumen teks lainnya. Hal ini memungkinkan Claude berinteraksi langsung dengan file Anda, memberikan bantuan praktis alih-alih hanya menyarankan perubahan.
Untuk dukungan model, lihat Referensi alat.
Kapan menggunakan alat editor teks
Beberapa contoh kapan menggunakan alat editor teks adalah:
- Debugging kode: Minta Claude mengidentifikasi dan memperbaiki bug dalam kode Anda, mulai dari kesalahan sintaks hingga masalah logika.
- Refactoring kode: Biarkan Claude meningkatkan struktur, keterbacaan, dan performa kode Anda melalui pengeditan yang terarah.
- Pembuatan dokumentasi: Minta Claude menambahkan docstring, komentar, atau file README ke basis kode Anda.
- Pembuatan tes: Minta Claude membuat unit test untuk kode Anda berdasarkan analisisnya terhadap implementasi.
Menggunakan alat editor teks
Sediakan alat editor teks (bernama str_replace_based_edit_tool) kepada Claude menggunakan Messages API.
Anda dapat secara opsional menentukan parameter max_characters untuk mengontrol pemotongan saat melihat file berukuran besar.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
tools=[
{
"type": "text_editor_20250728",
"name": "str_replace_based_edit_tool",
"max_characters": 10000,
}
],
messages=[
{
"role": "user",
"content": "There's a syntax error in my primes.py file. Can you help me fix it?",
}
],
)
print(response)Gunakan alat editor teks dengan cara berikut:
Berikan Claude alat editor teks dan prompt pengguna
- Sertakan alat editor teks dalam permintaan API Anda
- Berikan prompt pengguna yang mungkin memerlukan pemeriksaan atau modifikasi file, seperti "Bisakah Anda memperbaiki kesalahan sintaks dalam kode saya?"
Claude menggunakan alat untuk memeriksa file atau direktori
- Claude menilai apa yang perlu dilihatnya dan menggunakan perintah
viewuntuk memeriksa isi file atau mendaftar isi direktori - Respons API akan berisi blok konten
tool_usedengan perintahview
- Claude menilai apa yang perlu dilihatnya dan menggunakan perintah
Jalankan perintah view dan kembalikan hasilnya
- Ekstrak path file atau direktori dari permintaan penggunaan alat Claude
- Baca isi file atau daftar isi direktori
- Jika parameter
max_charactersditentukan dalam konfigurasi alat, potong isi file hingga panjang tersebut - Kembalikan hasilnya ke Claude dengan melanjutkan percakapan menggunakan pesan
userbaru yang berisi blok kontentool_result
Claude menggunakan alat untuk memodifikasi file
- Setelah memeriksa file atau direktori, Claude dapat menggunakan perintah seperti
str_replaceuntuk membuat perubahan atauinsertuntuk menambahkan teks pada nomor baris tertentu. - Jika Claude menggunakan perintah
str_replace, Claude menyusun permintaan penggunaan alat yang diformat dengan benar berisi teks lama dan teks baru sebagai penggantinya
- Setelah memeriksa file atau direktori, Claude dapat menggunakan perintah seperti
Jalankan pengeditan dan kembalikan hasilnya
- Ekstrak path file, teks lama, dan teks baru dari permintaan penggunaan alat Claude
- Lakukan penggantian teks dalam file
- Kembalikan hasilnya ke Claude
Claude memberikan analisis dan penjelasannya
- Setelah memeriksa dan mungkin mengedit file, Claude memberikan penjelasan lengkap tentang apa yang ditemukannya dan perubahan apa yang dibuatnya
Perintah alat editor teks
Alat editor teks mendukung beberapa perintah untuk melihat dan memodifikasi file:
view
Perintah view memungkinkan Claude memeriksa isi file atau mendaftar isi direktori. Perintah ini dapat membaca seluruh file atau rentang baris tertentu.
Parameter:
command: Harus "view"path: Path ke file atau direktori yang akan dilihatview_range(opsional): Array berisi dua bilangan bulat yang menentukan nomor baris awal dan akhir yang akan dilihat. Nomor baris dimulai dari 1, dan -1 untuk baris akhir berarti membaca hingga akhir file. Parameter ini hanya berlaku saat melihat file, bukan direktori.
Contoh untuk melihat file:
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "str_replace_based_edit_tool",
"input": {
"command": "view",
"path": "primes.py"
}
}Contoh untuk melihat direktori:
{
"type": "tool_use",
"id": "toolu_02B19r91rw91mr917835mr9",
"name": "str_replace_based_edit_tool",
"input": {
"command": "view",
"path": "src/"
}
}str_replace
Perintah str_replace memungkinkan Claude mengganti string tertentu dalam file dengan string baru. Perintah ini digunakan untuk melakukan pengeditan yang presisi.
Parameter:
command: Harus "str_replace"path: Path ke file yang akan dimodifikasiold_str: Teks yang akan diganti (harus cocok persis, termasuk whitespace dan indentasi)new_str: Teks baru yang akan disisipkan menggantikan teks lama
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "str_replace_based_edit_tool",
"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):"
}
}create
Perintah create memungkinkan Claude membuat file baru dengan konten yang ditentukan.
Parameter:
command: Harus "create"path: Path tempat file baru akan dibuatfile_text: Konten yang akan ditulis ke file baru
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "str_replace_based_edit_tool",
"input": {
"command": "create",
"path": "test_primes.py",
"file_text": "import unittest\nimport primes\n\nclass TestPrimes(unittest.TestCase):\n def test_is_prime(self):\n self.assertTrue(primes.is_prime(2))\n self.assertTrue(primes.is_prime(3))\n self.assertFalse(primes.is_prime(4))\n\nif __name__ == '__main__':\n unittest.main()"
}
}insert
Perintah insert memungkinkan Claude menyisipkan teks pada lokasi tertentu dalam file.
Parameter:
command: Harus "insert"path: Path ke file yang akan dimodifikasiinsert_line: Nomor baris yang setelahnya teks akan disisipkan (0 untuk awal file)insert_text: Teks yang akan disisipkan
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "str_replace_based_edit_tool",
"input": {
"command": "insert",
"path": "primes.py",
"insert_line": 0,
"insert_text": "\"\"\"Module for working with prime numbers.\n\nThis module provides functions to check if a number is prime\nand to generate a list of prime numbers up to a given limit.\n\"\"\"\n"
}
}Contoh: Memperbaiki kesalahan sintaks dengan alat editor teks
Contoh ini menunjukkan bagaimana Claude menggunakan alat editor teks untuk memperbaiki kesalahan sintaks dalam file Python.
Pertama, aplikasi Anda memberikan Claude alat editor teks dan prompt untuk memperbaiki kesalahan sintaks:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
tools=[{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"}],
messages=[
{
"role": "user",
"content": "There's a syntax error in my primes.py file. Can you help me fix it?",
}
],
)
print(response)Claude menggunakan alat editor teks terlebih dahulu untuk melihat file:
{
"id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
"model": "claude-opus-5-5",
"stop_reason": "tool_use",
"role": "assistant",
"content": [
{
"type": "text",
"text": "I'll help you fix the syntax error in your primes.py file. First, let me take a look at the file to identify the issue."
},
{
"type": "tool_use",
"id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
"name": "str_replace_based_edit_tool",
"input": {
"command": "view",
"path": "primes.py"
}
}
]
}Aplikasi Anda kemudian harus membaca file dan mengembalikan isinya ke Claude:
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
tools=[{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"}],
messages=[
{
"role": "user",
"content": "There's a syntax error in my primes.py file. Can you help me fix it?",
},
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "I'll help you fix the syntax error in your primes.py file. First, let me take a look at the file to identify the issue.",
},
{
"type": "tool_use",
"id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
"name": "str_replace_based_edit_tool",
"input": {"command": "view", "path": "primes.py"},
},
],
},
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
"content": '1: def is_prime(n):\n2: """Check if a number is prime."""\n3: if n <= 1:\n4: return False\n5: if n <= 3:\n6: return True\n7: if n % 2 == 0 or n % 3 == 0:\n8: return False\n9: i = 5\n10: while i * i <= n:\n11: if n % i == 0 or n % (i + 2) == 0:\n12: return False\n13: i += 6\n14: return True\n15: \n16: def get_primes(limit):\n17: """Generate a list of prime numbers up to the given limit."""\n18: primes = []\n19: for num in range(2, limit + 1)\n20: if is_prime(num):\n21: primes.append(num)\n22: return primes\n23: \n24: def main():\n25: """Main function to demonstrate prime number generation."""\n26: limit = 100\n27: prime_list = get_primes(limit)\n28: print(f"Prime numbers up to {limit}:")\n29: print(prime_list)\n30: print(f"Found {len(prime_list)} prime numbers.")\n31: \n32: if __name__ == "__main__":\n33: main()',
}
],
},
],
)
print(response)Claude mengidentifikasi kesalahan sintaks dan menggunakan perintah str_replace untuk memperbaikinya:
{
"id": "msg_01VwXyZAbCdEfGhIjKlMnO",
"model": "claude-opus-5-5",
"stop_reason": "tool_use",
"role": "assistant",
"content": [
{
"type": "text",
"text": "I found the syntax error in your primes.py file. In the `get_primes` function, there is a missing colon (:) at the end of the for loop line. Let me fix that for you."
},
{
"type": "tool_use",
"id": "toolu_01PqRsTuVwXyZAbCdEfGh",
"name": "str_replace_based_edit_tool",
"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):"
}
}
]
}Aplikasi Anda kemudian harus melakukan pengeditan dan mengembalikan hasilnya:
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
tools=[{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"}],
messages=[
# Pesan-pesan sebelumnya...
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "I found the syntax error in your primes.py file. In the `get_primes` function, there is a missing colon (:) at the end of the for loop line. Let me fix that for you.",
},
{
"type": "tool_use",
"id": "toolu_01PqRsTuVwXyZAbCdEfGh",
"name": "str_replace_based_edit_tool",
"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):",
},
},
],
},
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01PqRsTuVwXyZAbCdEfGh",
"content": "Successfully replaced text at exactly one location.",
}
],
},
],
)
print(response)Terakhir, Claude memberikan penjelasan lengkap tentang perbaikannya:
{
"id": "msg_01IjKlMnOpQrStUvWxYzAb",
"model": "claude-opus-5-5",
"stop_reason": "end_turn",
"role": "assistant",
"content": [
{
"type": "text",
"text": "I've fixed the syntax error in your primes.py file. The issue was in the `get_primes` function at line 19. There was a missing colon (:) at the end of the for loop line.\n\nHere's what I changed:\n\nFrom:\n```python\nfor num in range(2, limit + 1)\n```\n\nTo:\n```python\nfor num in range(2, limit + 1):\n```\n\nIn Python, a colon is required at the end of statements that start a new code block, such as for loops, if statements, function definitions, etc. Without the colon, Python raises a syntax error because it doesn't know where the code block begins.\n\nYour code should now run correctly. The function will properly generate a list of prime numbers up to the specified limit."
}
]
}Mengimplementasikan alat editor teks
Alat editor teks diimplementasikan sebagai alat tanpa skema. Saat menggunakan alat ini, Anda tidak perlu menyediakan skema input seperti pada alat lainnya; skemanya sudah tertanam dalam model Claude dan tidak dapat dimodifikasi.
Tipe alatnya adalah type: "text_editor_20250728" untuk model Claude 4 dan yang lebih baru.
Inisialisasi implementasi editor Anda
Buat fungsi pembantu untuk menangani operasi file seperti membaca, menulis, dan memodifikasi file. Pertimbangkan untuk mengimplementasikan fungsionalitas backup agar dapat memulihkan dari kesalahan.
Tangani panggilan alat editor
Buat fungsi yang memproses panggilan alat dari Claude berdasarkan jenis perintah:
def handle_editor_tool(tool_call): input_params = tool_call.input command = input_params.get("command", "") file_path = input_params.get("path", "") match command: case "view": # Baca dan kembalikan isi file pass case "str_replace": # Ganti teks dalam file pass case "create": # Buat file baru pass case "insert": # Sisipkan teks di lokasi tertentu passImplementasikan langkah-langkah keamanan
Tambahkan validasi dan pemeriksaan keamanan:
- Validasi path file untuk mencegah directory traversal
- Buat backup sebelum melakukan perubahan
- Tangani error dengan baik
- Implementasikan pemeriksaan izin
Proses respons Claude
Ekstrak dan tangani panggilan alat dari respons Claude:
# Proses penggunaan alat dalam respons Claude for content in response.content: if content.type == "tool_use": # Jalankan alat berdasarkan perintah result = handle_editor_tool(content) # Kembalikan hasil ke Claude tool_result = { "type": "tool_result", "tool_use_id": content.id, "content": result, }
Menangani error
Saat menggunakan alat editor teks, berbagai error dapat terjadi. Berikut panduan cara menanganinya:
Jika Claude mencoba melihat atau memodifikasi file yang tidak ada, kembalikan pesan error yang sesuai dalam tool_result:
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": "Error: File not found",
"is_error": true
}
]
}Jika perintah str_replace Claude cocok dengan beberapa lokasi dalam file, kembalikan pesan error yang sesuai:
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": "Error: Found 3 matches for replacement text. Please provide more context to make a unique match.",
"is_error": true
}
]
}Jika perintah str_replace Claude tidak cocok dengan teks apa pun dalam file, kembalikan pesan error yang sesuai:
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": "Error: No match found for replacement. Please check your text and try again.",
"is_error": true
}
]
}Jika ada masalah izin saat membuat, membaca, atau memodifikasi file, kembalikan pesan error yang sesuai:
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": "Error: Permission denied. Cannot write to file.",
"is_error": true
}
]
}Ikuti praktik terbaik implementasi
Saat meminta Claude memperbaiki atau memodifikasi kode, jelaskan secara spesifik file apa yang perlu diperiksa atau masalah apa yang perlu ditangani. Konteks yang jelas membantu Claude mengidentifikasi file yang tepat dan membuat perubahan yang sesuai.
Prompt yang kurang membantu: "Bisakah Anda memperbaiki kode saya?"
Prompt yang lebih baik: "Ada kesalahan sintaks di file primes.py saya yang membuatnya tidak bisa dijalankan. Bisakah Anda memperbaikinya?"
Tentukan path file dengan jelas bila diperlukan, terutama jika Anda bekerja dengan beberapa file atau file di direktori yang berbeda.
Prompt yang kurang membantu: "Tinjau file helper saya"
Prompt yang lebih baik: "Bisakah Anda memeriksa file utils/helpers.py saya untuk masalah performa?"
Implementasikan sistem backup dalam aplikasi Anda yang membuat salinan file sebelum mengizinkan Claude mengeditnya, terutama untuk kode penting atau kode produksi.
def backup_file(file_path):
"""Create a backup of a file before editing."""
backup_path = f"{file_path}.backup"
if os.path.exists(file_path):
with open(file_path, "r") as src, open(backup_path, "w") as dst:
dst.write(src.read())Perintah str_replace memerlukan kecocokan persis untuk teks yang akan diganti. Aplikasi Anda harus memastikan bahwa terdapat tepat satu kecocokan untuk teks lama atau memberikan pesan error yang sesuai.
def safe_replace(file_path, old_text, new_text):
"""Replace text only if there's exactly one match."""
with open(file_path, "r") as f:
content = f.read()
count = content.count(old_text)
if count == 0:
return "Error: No match found"
elif count > 1:
return f"Error: Found {count} matches"
else:
new_content = content.replace(old_text, new_text)
with open(file_path, "w") as f:
f.write(new_content)
return "Successfully replaced text"Setelah Claude membuat perubahan pada file, verifikasi perubahan tersebut dengan menjalankan tes atau memeriksa bahwa kode masih berfungsi seperti yang diharapkan.
def verify_changes(file_path):
"""Run tests or checks after making changes."""
try:
# Untuk file Python, periksa kesalahan sintaks
if file_path.endswith(".py"):
import ast
with open(file_path, "r") as f:
ast.parse(f.read())
return "Syntax check passed"
except Exception as e:
return f"Verification failed: {str(e)}"Harga dan penggunaan token
Alat editor teks menggunakan struktur harga yang sama dengan alat lain yang digunakan bersama Claude. Alat ini mengikuti harga token input dan output standar berdasarkan model Claude yang Anda gunakan.
Selain token dasar, token input tambahan berikut diperlukan untuk alat editor teks:
| Alat | Token input tambahan |
|---|---|
text_editor_20250429 (Claude 4.x) | 700 token |
Untuk informasi lebih rinci tentang harga alat, lihat Harga penggunaan alat.
Mengintegrasikan alat editor teks dengan alat lain
Anda dapat menggunakan alat editor teks bersama alat Claude lainnya. Saat menggabungkan alat, pastikan Anda:
- Mencocokkan versi alat dengan model yang Anda gunakan
- Memperhitungkan penggunaan token tambahan untuk semua alat yang disertakan dalam permintaan Anda
Log perubahan
| Tanggal | Versi | Perubahan |
|---|---|---|
| 28 Juli 2025 | text_editor_20250728 | Rilis alat editor teks yang diperbarui yang memperbaiki beberapa masalah dan menambahkan parameter opsional max_characters. Selain itu, alat ini identik dengan text_editor_20250429. |
| 29 April 2025 | text_editor_20250429 | Rilis alat editor teks untuk Claude 4. Versi ini menghapus perintah undo_edit tetapi mempertahankan semua kemampuan lainnya. Nama alat telah diperbarui untuk mencerminkan arsitekturnya yang berbasis str_replace. |
| 13 Maret 2025 | text_editor_20250124 | Pengenalan dokumentasi alat editor teks mandiri. Versi ini dioptimalkan untuk Claude Sonnet 3.7 tetapi memiliki kemampuan yang identik dengan versi sebelumnya. |
| 22 Oktober 2024 | text_editor_20241022 | Rilis awal alat editor teks dengan Claude Sonnet 3.5 (sudah dipensiunkan; lihat Penghentian model). Menyediakan kemampuan untuk melihat, membuat, dan mengedit file melalui perintah view, create, str_replace, insert, dan undo_edit. |
Langkah selanjutnya
Berikut beberapa ide tentang cara menggunakan alat editor teks dengan cara yang lebih praktis dan andal:
- Integrasikan dengan alur kerja pengembangan Anda: Bangun alat editor teks ke dalam alat pengembangan atau IDE Anda
- Buat sistem tinjauan kode: Minta Claude meninjau kode Anda dan melakukan perbaikan
- Bangun asisten debugging: Buat sistem di mana Claude dapat membantu Anda mendiagnosis dan memperbaiki masalah dalam kode Anda
- Implementasikan konversi format file: Biarkan Claude membantu Anda mengonversi file dari satu format ke format lain
- Otomatiskan dokumentasi: Siapkan alur kerja agar Claude mendokumentasikan kode Anda secara otomatis
Alat editor teks memungkinkan Claude bekerja langsung dengan basis kode Anda, mendukung alur kerja mulai dari debugging hingga dokumentasi otomatis.
Pelajari cara mengimplementasikan alur kerja alat untuk digunakan dengan Claude.
Jalankan perintah shell dengan Claude.
Was this page helpful?