Инструменты для написания кода (чтение, редактирование, Bash)
Минимальный набор инструментов для агента-программиста: прочитать файл, отредактировать файл, запустить оболочку и запустить тесты
«Инструменты для написания кода (чтение, редактирование, Bash)» — бесплатный урок AI Agents на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Какие инструменты нужны агенту для работы с кодом?
Минимальный набор:
- read_file — просматривать код
- edit_file / write_file — изменять код
- bash — выполнять команды оболочки (тесты, сборки)
- search / grep — находить код по строке или символу
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)
Чтение диапазонов строк экономит токены
Для больших файлов читайте только нужный диапазон. Это значительно экономит токены по сравнению с чтением всего файла при каждом вызове.
edit_file (замена строки)
Шаблон str_replace от Anthropic: найдите уникальную строку в файле и замените её:
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)Почему замена строк лучше DIFFS
- Для модели это проще, чем создавать корректный синтаксис DIFFS
- Заставляет модель изучить REAL код и помогает обнаружить галлюцинации
- Выдаёт ошибку при неоднозначности
Это формат, который использует Claude Code.
write_file
Для создания новых файлов:
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
Команды оболочки — для тестов, сборок и установки пакетов:
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}")
Изолируйте инструмент bash
NEVER запускайте bash на основном хосте. Используйте Docker / Firecracker / E2B. (См. предыдущий курс о песочницах.)
Обрезайте длинный вывод
Ошибки тестов могут выводить мегабайты текста. Обрезайте вывод до последних нескольких KB — там обычно содержится настоящая ошибка:
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]Дополнительно: инструменты AST
Для более глубокого понимания кода:
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)Здесь описания инструментов важнее всего
Агенты для работы с кодом выбирают неправильный инструмент чаще, чем чат-агенты. Уделите описаниям дополнительное время:
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.'Это весь набор инструментов
Чтение, редактирование, запись, выполнение команд, поиск и просмотр списка. С этими шестью инструментами агент может выполнить почти любую задачу программной инженерии. Добавляйте специализированные инструменты только при наличии измеримой пользы.
Шаблон редактирования
Почему редактирование с заменой строки безопаснее, чем редактирование с отправкой всего файла?
Повторение
Чтение, редактирование (замена строки), запись, выполнение команд, поиск и просмотр списка. Шести правильно описанных и изолированных инструментов достаточно почти для любого агента программирования.
Часто задаваемые вопросы
Урок «Инструменты для написания кода (чтение, редактирование, Bash)» бесплатный?
Да — полный текст урока «Инструменты для написания кода (чтение, редактирование, Bash)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.
Чему я научусь в уроке «Инструменты для написания кода (чтение, редактирование, Bash)»?
Минимальный набор инструментов для агента-программиста: прочитать файл, отредактировать файл, запустить оболочку и запустить тесты Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Agents?
Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Инструменты для написания кода (чтение, редактирование, Bash)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Agents?
Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Шаблоны работы агентов: планирование — выполнение — проверка
- Инструменты для написания кода (чтение, редактирование, Bash)
- Циклы итеративного самокорректирования
- Архитектуры SWE-Agent и OpenDevin