Interfejs narzędzi agenta kodującego (Read, Edit, Bash)
Minimalny zestaw narzędzi potrzebny agentowi kodującemu: odczyt pliku, edycja pliku, uruchamianie powłoki i testów.
Interfejs narzędzi agenta kodującego (Read, Edit, Bash) to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Jakich narzędzi potrzebuje agent kodujący?
Minimum:
- read_file — wyświetlanie kodu
- edit_file / write_file — zmienianie kodu
- bash — uruchamianie poleceń powłoki (testy, kompilowanie)
- search / grep — wyszukiwanie kodu według ciągu znaków lub symbolu
read_file
def read_file(path: str, start_line: int = 0, end_line: int | None = None) -> str:
with open(path) as f:
lines = f.readlines()
return ''.join(lines[start_line:end_line])
# --- demo ---
with open('demo_source.py', 'w', encoding='utf-8') as f:
f.write('line0\nline1\nline2\nline3\nline4\n')
snippet = read_file('demo_source.py', start_line=1, end_line=3)
print('Lines 1-2 of demo_source.py:')
print(snippet)
Odczytywanie zakresów wierszy oszczędza tokeny
W przypadku dużych plików należy odczytywać tylko odpowiedni zakres. W porównaniu z odczytywaniem całego pliku przy każdym wywołaniu pozwala to znacznie ograniczyć liczbę tokenów.
edit_file (Podmiana ciągu znaków)
Wzorzec str_replace firmy Anthropic: należy znaleźć w pliku unikalny ciąg znaków i zastąpić go innym:
def edit_file(path: str, old_string: str, new_string: str):
contents = read_file(path)
occurrences = contents.count(old_string)
if occurrences == 0:
raise ValueError('old_string not found')
if occurrences > 1:
raise ValueError('old_string is not unique')
contents = contents.replace(old_string, new_string)
with open(path, 'w') as f:
f.write(contents)Dlaczego podmiana ciągu zamiast różnic
- Jest prostsza dla modelu niż tworzenie poprawnej składni różnic
- Zmusza model do analizowania PRAWDZIWEGO kodu (co pomaga wykrywać halucynacje)
- Generuje błąd w przypadku niejednoznaczności
To format używany przez Claude Code.
write_file
Do tworzenia nowych plików:
def write_file(path: str, content: str):
os.makedirs(os.path.dirname(path), exist_ok=True)
with open(path, 'w') as f:
f.write(content)bash
Polecenia powłoki — do testów, kompilowania i instalowania pakietów:
def bash(command: str, timeout: int = 60) -> dict:
import subprocess
try:
result = subprocess.run(command, shell=True, capture_output=True, text=True, timeout=timeout)
return {'stdout': result.stdout[-5000:], 'stderr': result.stderr[-5000:], 'exit_code': result.returncode}
except subprocess.TimeoutExpired:
return {'error': 'timeout', 'exit_code': -1}
# --- demo ---
result = bash("echo hello from the sandboxed shell")
print(f"exit_code={result['exit_code']}")
print(f"stdout={result['stdout'].strip()!r}")
Uruchamiaj narzędzie Bash w piaskownicy
NIGDY nie należy uruchamiać bash na komputerze hosta. Należy używać Dockera / Firecracker / E2B. (Zobacz poprzedni kurs o piaskownicach).
Skracaj długie dane wyjściowe
Nieudane testy mogą generować megabajty danych. Należy ograniczyć wynik do kilku ostatnich KB — zwykle zawierają one właściwy błąd:
stderr = 'error line\n' * 1000
if len(stderr) > 5000:
stderr = '...[truncated]...' + stderr[-5000:]
print(f'Truncated stderr length: {len(stderr)}')search / grep
def grep(pattern: str, path: str = '.', file_glob: str = '**/*') -> list[str]:
matches = []
for f in glob(file_glob, recursive=True):
for i, line in enumerate(open(f)):
if re.search(pattern, line):
matches.append(f'{f}:{i+1}: {line.rstrip()}')
return matches[:50]list_files
def list_files(path: str = '.') -> list[str]:
return [p for p in glob(f'{path}/**', recursive=True) if os.path.isfile(p)][:200]Opcjonalne narzędzia AST
Do głębszego zrozumienia kodu:
def find_function(name: str, path: str):
tree = ast.parse(open(path).read())
for node in ast.walk(tree):
if isinstance(node, ast.FunctionDef) and node.name == name:
return ast.unparse(node)Tutaj najważniejsze są opisy narzędzi
Agenci kodujący wybierają nieprawidłowe narzędzie częściej niż agenci konwersacyjni. Należy poświęcić dodatkowy czas na opisy:
description='Edit a file by replacing a unique string. The old_string MUST appear exactly once in the file. Reads the file first to validate. Use this for any code change in an existing file.'To cały zestaw narzędzi
Odczyt, edycja, zapis, bash, grep, wyświetlanie listy. Dzięki tym sześciu narzędziom agent może wykonać niemal każde zadanie z zakresu inżynierii oprogramowania. Narzędzia specjalistyczne należy dodawać tylko wtedy, gdy ich korzyść została zmierzona.
Wzorzec edycji
Dlaczego edycja typu „string-replace” jest bezpieczniejsza niż edycja typu „send full file”?
Podsumowanie
Odczyt, edycja (str_replace), zapis, bash, grep, wyświetlanie listy. Sześć odpowiednio opisanych i zabezpieczonych narzędzi wystarcza niemal każdemu agentowi programistycznemu.
Często zadawane pytania
Czy lekcja „Interfejs narzędzi agenta kodującego (Read, Edit, Bash)” jest bezpłatna?
Tak — pełny tekst „Interfejs narzędzi agenta kodującego (Read, Edit, Bash)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Interfejs narzędzi agenta kodującego (Read, Edit, Bash)”?
Minimalny zestaw narzędzi potrzebny agentowi kodującemu: odczyt pliku, edycja pliku, uruchamianie powłoki i testów. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Interfejs narzędzi agenta kodującego (Read, Edit, Bash)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wzorce agentowe: planowanie–wykonanie–weryfikacja
- Interfejs narzędzi agenta kodującego (Read, Edit, Bash)
- Iteracyjne pętle samokorekty
- Architektury SWE-Agent i OpenDevin