Инструмент Bash
Инструмент bash позволяет Claude выполнять команды оболочки в постоянной сессии bash, обеспечивая системные операции, выполнение скриптов и автоматизацию командной строки.
Обзор
Инструмент bash предоставляет Claude:
- Постоянную сессию bash, которая сохраняет состояние
- Возможность запускать любую команду оболочки
- Доступ к переменным окружения и рабочему каталогу
- Возможности цепочки команд и написания скриптов
Совместимость моделей
| Модель | Версия инструмента |
|---|---|
| Claude 4 модели и Sonnet 3.7 (устарело) | bash_20250124 |
Старые версии инструмента не гарантируют обратную совместимость с новыми моделями. Всегда используйте версию инструмента, которая соответствует версии вашей модели.
Варианты использования
- Рабочие процессы разработки: Запуск команд сборки, тестов и инструментов разработки
- Автоматизация системы: Выполнение скриптов, управление файлами, автоматизация задач
- Обработка данных: Обработка файлов, запуск скриптов анализа, управление наборами данных
- Настройка окружения: Установка пакетов, настройка окружения
Быстрый старт
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=[
{
"type": "bash_20250124",
"name": "bash"
}
],
messages=[
{"role": "user", "content": "List all Python files in the current directory."}
]
)curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"tools": [
{
"type": "bash_20250124",
"name": "bash"
}
],
"messages": [
{
"role": "user",
"content": "List all Python files in the current directory."
}
]
}'Как это работает
Инструмент bash поддерживает постоянную сессию:
- Claude определяет, какую команду запустить
- Вы выполняете команду в оболочке bash
- Возвращаете вывод (stdout и stderr) в Claude
- Состояние сессии сохраняется между командами (переменные окружения, рабочий каталог)
Параметры
| Параметр | Обязательный | Описание |
|---|---|---|
command | Да* | Команда bash для запуска |
restart | Нет | Установите значение true для перезагрузки сессии bash |
*Обязательный, если не используется restart
Пример: Многошаговая автоматизация
Claude может объединять команды для выполнения сложных задач:
# Запрос пользователя
"Install the requests library and create a simple Python script that fetches a joke from an API, then run it."
# Claude использует инструмент:
# 1. Установка пакета
{"command": "pip install requests"}
# 2. Создание скрипта
{"command": "cat > fetch_joke.py << 'EOF'\nimport requests\nresponse = requests.get('https://official-joke-api.appspot.com/random_joke')\njoke = response.json()\nprint(f\"Setup: {joke['setup']}\")\nprint(f\"Punchline: {joke['punchline']}\")\nEOF"}
# 3. Запуск скрипта
{"command": "python fetch_joke.py"}Сессия сохраняет состояние между командами, поэтому файлы, созданные на шаге 2, доступны на шаге 3.
Реализация инструмента bash
Инструмент bash реализован как инструмент без схемы. При использовании этого инструмента вам не нужно предоставлять входную схему, как с другими инструментами; схема встроена в модель Claude и не может быть изменена.
Настройка окружения bash
Создайте постоянную сессию bash, с которой Claude может взаимодействовать:
import subprocess import threading import queue class BashSession: def __init__(self): self.process = subprocess.Popen( ['/bin/bash'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, bufsize=0 ) self.output_queue = queue.Queue() self.error_queue = queue.Queue() self._start_readers()Обработка выполнения команд
Создайте функцию для выполнения команд и захвата вывода:
def execute_command(self, command): # Отправка команды в bash self.process.stdin.write(command + '\n') self.process.stdin.flush() # Захват вывода с тайм-аутом output = self._read_output(timeout=10) return outputОбработка вызовов инструментов Claude
Извлеките и выполните команды из ответов Claude:
for content in response.content: if content.type == "tool_use" and content.name == "bash": if content.input.get("restart"): bash_session.restart() result = "Bash session restarted" else: command = content.input.get("command") result = bash_session.execute_command(command) # Возврат результата в Claude tool_result = { "type": "tool_result", "tool_use_id": content.id, "content": result }Реализация мер безопасности
Добавьте валидацию и ограничения:
def validate_command(command): # Блокировка опасных команд dangerous_patterns = ['rm -rf /', 'format', ':(){:|:&};:'] for pattern in dangerous_patterns: if pattern in command: return False, f"Command contains dangerous pattern: {pattern}" # Добавьте дополнительную валидацию по мере необходимости return True, None
Обработка ошибок
При реализации инструмента bash обрабатывайте различные сценарии ошибок:
Следуйте лучшим практикам реализации
Безопасность
Инструмент bash предоставляет прямой доступ к системе. Реализуйте эти необходимые меры безопасности:
- Запуск в изолированных окружениях (Docker/VM)
- Реализация фильтрации команд и списков разрешений
- Установка лимитов ресурсов (CPU, память, диск)
- Логирование всех выполненных команд
Ключевые рекомендации
- Используйте
ulimitдля установки ограничений ресурсов - Фильтруйте опасные команды (
sudo,rm -rfи т.д.) - Запускайте с минимальными разрешениями пользователя
- Мониторьте и логируйте все выполнения команд
Цены
The bash tool adds 245 input tokens to your API calls.
Additional tokens are consumed by:
- Command outputs (stdout/stderr)
- Error messages
- Large file contents
Полные сведения о ценах см. в разделе цены на использование инструментов.
Распространенные шаблоны
Рабочие процессы разработки
- Запуск тестов:
pytest && coverage report - Сборка проектов:
npm install && npm run build - Операции Git:
git status && git add . && git commit -m "message"
Операции с файлами
- Обработка данных:
wc -l *.csv && ls -lh *.csv - Поиск в файлах:
find . -name "*.py" | xargs grep "pattern" - Создание резервных копий:
tar -czf backup.tar.gz ./data
Системные задачи
- Проверка ресурсов:
df -h && free -m - Управление процессами:
ps aux | grep python - Настройка окружения:
export PATH=$PATH:/new/path && echo $PATH
Ограничения
- Нет интерактивных команд: Не может обрабатывать
vim,lessили запросы пароля - Нет приложений GUI: Только командная строка
- Область сессии: Сохраняется в рамках разговора, теряется между вызовами API
- Лимиты вывода: Большие выводы могут быть усечены
- Нет потоковой передачи: Результаты возвращаются после завершения
Комбинирование с другими инструментами
Инструмент bash наиболее мощен при комбинировании с текстовым редактором и другими инструментами.