Проектная лаборатория
Собственный Claude Code
Этап 06 · Основные этапы
Реализация инструмента Bash
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы добавите поддержку инструмента Bash.
Инструмент Bash
Инструмент Bash позволяет LLM выполнять команды оболочки. Он даёт модели прямой доступ к командной строке для таких действий, как удаление файлов, создание каталогов и запуск скриптов.
Объявите инструмент Bash в запросе и выполняйте его по запросу модели.
Пример спецификации Bash:
{
"type": "function",
"function": {
"name": "Bash",
"description": "Execute a shell command",
"parameters": {
"type": "object",
"required": ["command"],
"properties": {
"command": {
"type": "string",
"description": "The command to execute"
}
}
}
}
}Выполнение инструмента Bash
Когда модель запрашивает вызов Bash:
- Разберите аргументы и извлеките
command. - Выполните команду средствами запуска оболочки вашего языка, например
subprocess.run()в Python илиchild_process.exec()в Node.js. - Перехватите оба потока команды: stdout и stderr.
- Верните вывод команды (или сообщение об ошибке при неудаче) модели как сообщение инструмента.
Например, получив команду rm README_old.md, выполните её и верните результат, который при успехе будет пустым.
Проверки
Тестирующая система создаст три файла:
app/main.js— основной файл проекта;README.md— актуальный файл readme;README_old.md— старый файл readme.
Затем она запустит программу так:
$ ./your_program.sh -p "Delete the old readme file."
Deleted README_old.mdОна проверит, что:
README_old.mdудалён и больше не существует.app/main.jsсохранён с исходным содержимым.README.mdсохранён с исходным содержимым.- Программа завершается с кодом
0.
Примечания
- Можно выбрать любое разумное имя инструмента оболочки, например
Bash,bash,RunBashCommandилиrun_bash_command. - Результат вызова
Bashнужно отправить обратно модели в рамках цикла агента. - Выполняйте команду в том же каталоге, что и вашу программу, а не во временном или другом рабочем каталоге.
Для проверки этого проекта нужен ключ OpenRouter в переменной CODECRAFTERS_SECRET_OPENROUTER_API_KEY. Запросы к модели могут быть платными. Ключ задаётся только в вашем терминале и не отправляется в GraphLMS.
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init claude-code ./my-claude-code --language go2. Откройте папку в IDE
cd ./my-claude-codeРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage oq5 --allow-paid-apiЗапускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.