Инструмент bash позволяет Claude выполнять команды оболочки в постоянной сессии bash, обеспечивая системные операции, выполнение скриптов и автоматизацию командной строки.
Инструмент bash предоставляет Claude:
| Модель | Версия инструмента |
|---|---|
| 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."}
]
)Инструмент bash поддерживает постоянную сессию:
| Параметр | Обязательный | Описание |
|---|---|---|
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 реализован как инструмент без схемы. При использовании этого инструмента вам не нужно предоставлять входную схему, как с другими инструментами; схема встроена в модель 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 предоставляет прямой доступ к системе. Реализуйте эти необходимые меры безопасности:
ulimit для установки ограничений ресурсовsudo, rm -rf и т.д.)The bash tool adds 245 input tokens to your API calls.
Additional tokens are consumed by:
Полные сведения о ценах см. в разделе цены на использование инструментов.
pytest && coverage reportnpm install && npm run buildgit status && git add . && git commit -m "message"wc -l *.csv && ls -lh *.csvfind . -name "*.py" | xargs grep "pattern"tar -czf backup.tar.gz ./datadf -h && free -mps aux | grep pythonexport PATH=$PATH:/new/path && echo $PATHvim, less или запросы пароляИнструмент bash наиболее мощен при комбинировании с текстовым редактором и другими инструментами.