• Сообщения
  • Управляемые агенты
  • Администрирование

Search...
⌘K
Первые шаги
Знакомство с ClaudeБыстрый старт
Разработка с Claude
Обзор возможностейИспользование Messages APIПричины остановки и резервный вариантОтказы и резервный вариантРезервный кредит
Возможности модели
Расширенное мышлениеАдаптивное мышлениеУсилиеБюджеты задач (бета)Быстрый режим (исследовательская предварительная версия)Структурированные выходные данныеЦитированиеПотоковая передача сообщенийПакетная обработкаРезультаты поискаПотоковая передача отказовМногоязычная поддержкаЭмбеддинги
Инструменты
ОбзорКак работает использование инструментовРуководство: создание агента с использованием инструментовОпределение инструментовОбработка вызовов инструментовПараллельное использование инструментовTool Runner (SDK)Строгое использование инструментовИспользование инструментов с кэшированием подсказокСерверные инструментыУстранение неполадокИнструмент веб-поискаИнструмент загрузки веб-страницИнструмент выполнения кодаИнструмент советникаИнструмент памятиИнструмент BashИнструмент использования компьютераИнструмент текстового редактора
Инфраструктура инструментов
Справочник по инструментамУправление контекстом инструментовКомбинации инструментовПоиск инструментовПрограммный вызов инструментовДетальная потоковая передача инструментов
Управление контекстом
Контекстные окнаСжатиеРедактирование контекстаКэширование подсказокСистемные сообщения в середине разговораСоздание режима оркестрацииДиагностика кэша (бета)Подсчёт токенов
Работа с файлами
Files APIПоддержка PDFИзображения и компьютерное зрение
Навыки
ОбзорБыстрый стартРекомендацииНавыки для предприятийНавыки в API
MCP
Удалённые серверы MCPКоннектор MCP
Claude на облачных платформах
Amazon BedrockAmazon Bedrock (устаревшая версия)Claude Platform на AWSMicrosoft FoundryVertex AI

Log in
Инструмент Bash
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Сообщения/Инструменты

Инструмент Bash



Эта функция соответствует требованиям Zero Data Retention (ZDR) (нулевого хранения данных). Если у вашей организации действует соглашение ZDR, данные, отправленные через эту функцию, не сохраняются после возврата ответа API.

Инструмент bash позволяет Claude выполнять команды оболочки в постоянной bash-сессии, обеспечивая системные операции, выполнение скриптов и автоматизацию командной строки. Доступ к оболочке — это базовая возможность агента. В Terminal-Bench 2.0, бенчмарке, который оценивает реальные задачи в терминале с использованием валидации только через оболочку, Claude демонстрирует значительный прирост производительности при наличии доступа к постоянной bash-сессии.

Обзор

Инструмент bash предоставляет Claude:

  • Постоянную bash-сессию, сохраняющую состояние
  • Возможность выполнять любые команды оболочки
  • Доступ к переменным окружения и рабочему каталогу
  • Возможности объединения команд в цепочки и написания скриптов

Информацию о поддержке моделей см. в Справочнике по инструментам.

Сценарии использования

  • Рабочие процессы разработки: запуск команд сборки, тестов и инструментов разработки
  • Системная автоматизация: выполнение скриптов, управление файлами, автоматизация задач
  • Обработка данных: обработка файлов, запуск аналитических скриптов, управление наборами данных
  • Настройка окружения: установка пакетов, конфигурирование окружений

Быстрый старт

Как это работает

Инструмент bash поддерживает постоянную сессию:

  1. Claude определяет, какую команду выполнить
  2. Вы выполняете команду в оболочке bash
  3. Возвращаете вывод (stdout и stderr) в Claude
  4. Состояние сессии сохраняется между командами (переменные окружения, рабочий каталог)

Параметры

ПараметрОбязательныйОписание
commandДа*Команда bash для выполнения
restartНетУстановите значение true, чтобы перезапустить bash-сессию

*Обязателен, если не используется restart

Пример: многошаговая автоматизация

Claude может объединять команды в цепочки для выполнения сложных задач:

User request:
"Install the requests library and create a simple Python script that
fetches a joke from an API, then run it."

Claude's tool uses:
1. Install package
   {"command": "pip install requests"}

2. Create script
   {"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. Run script
   {"command": "python fetch_joke.py"}

Сессия сохраняет состояние между командами, поэтому файлы, созданные на шаге 2, доступны на шаге 3.

Реализация инструмента bash

Инструмент bash реализован как инструмент без схемы. При использовании этого инструмента вам не нужно предоставлять входную схему, как для других инструментов; схема встроена в модель Claude и не может быть изменена.

Обработка ошибок

При реализации инструмента bash обрабатывайте различные сценарии ошибок:

Следуйте лучшим практикам реализации

Безопасность



Инструмент bash предоставляет прямой доступ к системе. Реализуйте следующие основные меры безопасности:

  • Запуск в изолированных окружениях (Docker/ВМ)
  • Реализация фильтрации команд и списков разрешённых команд
  • Установка ограничений ресурсов (ЦП, память, диск)
  • Логирование всех выполненных команд

Ключевые рекомендации

  • Используйте ulimit для установки ограничений ресурсов
  • Фильтруйте опасные команды (sudo, rm -rf и т. д.)
  • Запускайте с минимальными правами пользователя
  • Отслеживайте и логируйте выполнение всех команд

Стоимость

Инструмент bash добавляет 245 входных токенов к вашим вызовам API.

Дополнительные токены расходуются на:

  • Вывод команд (stdout/stderr)
  • Сообщения об ошибках
  • Содержимое больших файлов

Полную информацию о стоимости см. в разделе стоимость использования инструментов.

Распространённые шаблоны

Рабочие процессы разработки

  • Запуск тестов: pytest && coverage report
  • Сборка проектов: npm install && npm run build
  • Операции с Git: git status && git add . && git commit -m "message"

Создание контрольных точек на основе Git

Git служит структурированным механизмом восстановления в длительных агентных рабочих процессах, а не просто способом сохранения изменений:

  • Зафиксируйте базовое состояние: перед началом любой работы агента закоммитьте текущее состояние. Это заведомо рабочая отправная точка.
  • Коммит на каждую функцию: каждая завершённая функция получает собственный коммит. Они служат точками отката, если что-то пойдёт не так позже.
  • Восстанавливайте состояние в начале сессии: читайте git log вместе с файлом прогресса, чтобы понять, что уже сделано и что предстоит дальше.
  • Откатывайтесь при сбое: если работа пошла не так, git checkout возвращает к последнему рабочему коммиту вместо попыток отладить сломанное состояние.

Операции с файлами

  • Обработка данных: 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-приложений: только командная строка
  • Область действия сессии: состояние bash-сессии хранится на стороне клиента. API не сохраняет состояние. Ваше приложение отвечает за поддержание сессии оболочки между ходами.
  • Ограничения вывода: большие выводы могут быть усечены
  • Нет потоковой передачи: результаты возвращаются после завершения

Комбинирование с другими инструментами

Инструмент bash наиболее эффективен в сочетании с текстовым редактором и другими инструментами.



Если вы также используете инструмент выполнения кода, у Claude есть доступ к двум отдельным средам выполнения: вашей локальной bash-сессии и изолированному контейнеру Anthropic. Состояние между ними не разделяется. См. раздел Использование выполнения кода с другими инструментами выполнения для рекомендаций по составлению подсказок, помогающих Claude различать окружения.

Дальнейшие шаги


Обзор использования инструментов

Узнайте об использовании инструментов с Claude


Инструмент текстового редактора

Просматривайте и редактируйте текстовые файлы с помощью Claude

Was this page helpful?

  • Обзор
  • Сценарии использования
  • Быстрый старт
  • Как это работает
  • Параметры
  • Пример: многошаговая автоматизация
  • Реализация инструмента bash
  • Обработка ошибок
  • Следуйте лучшим практикам реализации
  • Безопасность
  • Ключевые рекомендации
  • Стоимость
  • Распространённые шаблоны
  • Рабочие процессы разработки
  • Операции с файлами
  • Системные задачи
  • Ограничения
  • Комбинирование с другими инструментами
  • Дальнейшие шаги
import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    tools=[{"type": "bash_20250124", "name": "bash"}],
    messages=[
        {"role": "user", "content": "List all Python files in the current directory."}
    ],
)

print(response)
  1. 1

    Настройте окружение 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()
  2. 2

    Обработайте выполнение команд

    Создайте функцию для выполнения команд и захвата вывода:

    def execute_command(self, command):
        # Отправить команду в bash
        self.process.stdin.write(command + "\n")
        self.process.stdin.flush()
    
        # Захватить вывод с тайм-аутом
        output = self._read_output(timeout=10)
        return output
    
  3. 3

    Обработайте вызовы инструментов от 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,
            }
  4. 4

    Реализуйте меры безопасности

    Добавьте валидацию и ограничения. Используйте список разрешённых команд (allowlist), а не список запрещённых (blocklist), поскольку списки запрещённых легко обойти. Отклоняйте операторы оболочки, чтобы цепочки команд не могли проскочить мимо списка разрешённых:

    import shlex
    
    ALLOWED_COMMANDS = {"ls", "cat", "echo", "pwd", "grep", "find", "wc", "head", "tail"}
    SHELL_OPERATORS = {"&&", "||", "|", ";", "&", ">", "<", ">>"}
    
    
    def validate_command(command):
        # Разрешать только команды из явного списка разрешённых
        try:
            tokens = shlex.split(command)
        except ValueError:
            return False, "Could not parse command"
    
        if not tokens:
            return False, "Empty command"
    
        executable = tokens[0]
        if executable not in ALLOWED_COMMANDS:
            return False, f"Command '{executable}' is not in the allowlist"
    
        # Отклонять операторы оболочки, которые позволили бы выполнить дополнительные команды
        for token in tokens[1:]:
            if token in SHELL_OPERATORS or token.startswith(("$", "`")):
                return False, f"Shell operator '{token}' is not allowed"
    
        return True, None

    Эта проверка — первая линия защиты. Для более надёжной изоляции запускайте проверенные команды с shell=False и передавайте shlex.split(command) в качестве списка аргументов, чтобы оболочка никогда не интерпретировала строку.