Обзор

Режим без интерфейса позволяет запускать Claude Code программно из скриптов командной строки и инструментов автоматизации без какого-либо интерактивного пользовательского интерфейса.

Базовое использование

Основным интерфейсом командной строки для Claude Code является команда claude. Используйте флаг --print (или -p) для запуска в неинтерактивном режиме и вывода окончательного результата:
claude -p "Подготовить мои изменения и написать набор коммитов для них" \
  --allowedTools "Bash,Read" \
  --permission-mode acceptEdits

Параметры конфигурации

Режим без интерфейса использует все опции CLI, доступные в Claude Code. Вот ключевые из них для автоматизации и создания скриптов:
ФлагОписаниеПример
--print, -pЗапуск в неинтерактивном режимеclaude -p "запрос"
--output-formatУказать формат вывода (text, json, stream-json)claude -p --output-format json
--resume, -rВозобновить разговор по ID сессииclaude --resume abc123
--continue, -cПродолжить самый последний разговорclaude --continue
--verboseВключить подробное логированиеclaude --verbose
--append-system-promptДобавить к системному промпту (только с --print)claude --append-system-prompt "Пользовательская инструкция"
--allowedToolsРазделенный пробелами список разрешенных инструментов, или

строка со списком разрешенных инструментов, разделенных запятыми
claude --allowedTools mcp__slack mcp__filesystem

claude --allowedTools "Bash(npm install),mcp__filesystem"
--disallowedToolsРазделенный пробелами список запрещенных инструментов, или

строка со списком запрещенных инструментов, разделенных запятыми
claude --disallowedTools mcp__splunk mcp__github

claude --disallowedTools "Bash(git commit),mcp__github"
--mcp-configЗагрузить MCP серверы из JSON файлаclaude --mcp-config servers.json
--permission-prompt-toolMCP инструмент для обработки запросов разрешений (только с --print)claude --permission-prompt-tool mcp__auth__prompt
Для полного списка опций CLI и функций смотрите документацию справочника CLI.

Многоходовые разговоры

Для многоходовых разговоров вы можете возобновлять разговоры или продолжать с самой последней сессии:
# Продолжить самый последний разговор
claude --continue "Теперь рефакторить это для лучшей производительности"

# Возобновить конкретный разговор по ID сессии
claude --resume 550e8400-e29b-41d4-a716-446655440000 "Обновить тесты"

# Возобновить в неинтерактивном режиме
claude --resume 550e8400-e29b-41d4-a716-446655440000 "Исправить все ошибки линтинга" --no-interactive

Форматы вывода

Текстовый вывод (по умолчанию)

claude -p "Объяснить файл src/components/Header.tsx"
# Вывод: Это React компонент, показывающий...

JSON вывод

Возвращает структурированные данные, включая метаданные:
claude -p "Как работает слой данных?" --output-format json
Формат ответа:
{
  "type": "result",
  "subtype": "success",
  "total_cost_usd": 0.003,
  "is_error": false,
  "duration_ms": 1234,
  "duration_api_ms": 800,
  "num_turns": 6,
  "result": "Текст ответа здесь...",
  "session_id": "abc123"
}

Потоковый JSON вывод

Передает каждое сообщение по мере его получения:
claude -p "Создать приложение" --output-format stream-json
Каждый разговор начинается с начального системного сообщения init, за которым следует список сообщений пользователя и ассистента, за которым следует финальное системное сообщение result со статистикой. Каждое сообщение выводится как отдельный JSON объект.

Форматы ввода

Текстовый ввод (по умолчанию)

# Прямой аргумент
claude -p "Объяснить этот код"

# Из stdin
echo "Объяснить этот код" | claude -p

Потоковый JSON ввод

Поток сообщений, предоставляемый через stdin, где каждое сообщение представляет ход пользователя. Это позволяет несколько ходов разговора без перезапуска бинарного файла claude и позволяет предоставлять руководство модели во время обработки запроса. Каждое сообщение является JSON объектом ‘Сообщение пользователя’, следующим тому же формату, что и схема выходного сообщения. Сообщения форматируются с использованием формата jsonl, где каждая строка ввода является полным JSON объектом. Потоковый JSON ввод требует -p и --output-format stream-json.
echo '{"type":"user","message":{"role":"user","content":[{"type":"text","text":"Объяснить этот код"}]}}' | claude -p --output-format=stream-json --input-format=stream-json --verbose

Примеры интеграции агентов

SRE бот реагирования на инциденты

#!/bin/bash

# Автоматизированный агент реагирования на инциденты
investigate_incident() {
    local incident_description="$1"
    local severity="${2:-medium}"

    claude -p "Инцидент: $incident_description (Серьезность: $severity)" \
      --append-system-prompt "Вы эксперт SRE. Диагностируйте проблему, оцените воздействие и предоставьте немедленные действия." \
      --output-format json \
      --allowedTools "Bash,Read,WebSearch,mcp__datadog" \
      --mcp-config monitoring-tools.json
}

# Использование
investigate_incident "Payment API возвращает ошибки 500" "high"

Автоматизированный обзор безопасности

# Агент аудита безопасности для pull request'ов
audit_pr() {
    local pr_number="$1"

    gh pr diff "$pr_number" | claude -p \
      --append-system-prompt "Вы инженер по безопасности. Проверьте этот PR на уязвимости, небезопасные паттерны и проблемы соответствия." \
      --output-format json \
      --allowedTools "Read,Grep,WebSearch"
}

# Использование и сохранение в файл
audit_pr 123 > security-report.json

Многоходовый юридический ассистент

# Обзор юридических документов с сохранением сессии
session_id=$(claude -p "Начать сессию юридического обзора" --output-format json | jq -r '.session_id')

# Обзор контракта в несколько этапов
claude -p --resume "$session_id" "Проверить contract.pdf на пункты об ответственности"
claude -p --resume "$session_id" "Проверить соответствие требованиям GDPR"
claude -p --resume "$session_id" "Создать исполнительное резюме рисков"

Лучшие практики

  • Используйте формат JSON вывода для программного разбора ответов:
    # Разбор JSON ответа с jq
    result=$(claude -p "Сгенерировать код" --output-format json)
    code=$(echo "$result" | jq -r '.result')
    cost=$(echo "$result" | jq -r '.cost_usd')
    
  • Обрабатывайте ошибки корректно - проверяйте коды выхода и stderr:
    if ! claude -p "$prompt" 2>error.log; then
        echo "Произошла ошибка:" >&2
        cat error.log >&2
        exit 1
    fi
    
  • Используйте управление сессиями для поддержания контекста в многоходовых разговорах
  • Учитывайте таймауты для долго выполняющихся операций:
    timeout 300 claude -p "$complex_prompt" || echo "Таймаут через 5 минут"
    
  • Соблюдайте ограничения скорости при выполнении множественных запросов, добавляя задержки между вызовами

Связанные ресурсы