CLI

Все флаги командной строки cusp, слеш-команды, форматы вывода в неинтерактивном режиме и коды завершения.

cusp [options] [prompt]

cusp запускает интерактивную сессию в текущей папке. Если передать запрос, сессия начнётся с этого сообщения. С -p запрос выполняется без интерфейса: результат печатается, и команда завершается.

Примеры

cusp                                     # interactive session in this folder
cusp "explain the build pipeline"        # start with a prompt
cusp -c                                  # continue the most recent session here
cusp -r                                  # pick a session to resume
cusp -m openai:gpt-6.1-sol --effort high # choose model and effort
cusp -p "list TODO comments in src/"     # headless: print the answer and exit
cat error.log | cusp -p "what failed?"   # headless with piped input

Параметры

Сессия

ФлагНазначение
-c, --continueПродолжить последнюю сессию в этой папке
-r, --resume [ses_…]Возобновить сессию по id или, если id не указан, выбрать её интерактивно
--fork-sessionВместе с --continue или --resume: продолжить в копии, не трогая оригинал
-n, --name <title>Задать название сессии
--cwd <dir>Папка рабочей области. По умолчанию — текущая папка

--continue и --resume нельзя использовать вместе. --fork-session требует одного из них.

Модель и разрешения

ФлагНазначение
-m, --model <provider:model>Модель для этой сессии или просто id модели у текущего провайдера
--effort <level>none, minimal, low, medium, high, xhigh или max
--permission-mode <mode>default, acceptEdits, plan, auto, bypassPermissions или dontAsk
--dangerously-skip-permissionsТо же, что --permission-mode bypassPermissions
--allowedTools <rules…>Заранее разрешить инструменты для этой сессии, например "Bash(git log *)" Edit
--disallowedTools <rules…>Всегда запрещать эти инструменты в этой сессии
--append-system-prompt <text>Дополнительные инструкции в конце системного промпта
--system-prompt <text>Заменить системный промпт. В 0.1 флаг принимается, но пока не поддерживается: Cusp игнорирует его и выводит предупреждение. Используйте --append-system-prompt

--allowedTools и --disallowedTools также принимают написание в kebab-case: --allowed-tools и --disallowed-tools. Элементы списка можно разделять запятыми или пробелами; внутри скобок Cusp список никогда не делит, поэтому "Bash(git log *),Edit" — это два правила. Имя режима manual принимается как синоним default.

Неинтерактивный режим

ФлагНазначение
-p, --printВыполнить запрос (или stdin) неинтерактивно, напечатать результат и завершиться
--output-format <f>text (по умолчанию), json или stream-json
--input-format <f>text (по умолчанию) или stream-json
--include-partial-messagesПри выводе stream-json: также выдавать потоковые дельты
--max-turns <n>Остановиться после n ходов модели

--output-format и --input-format требуют -p. С -p нельзя открыть выбор сессии, поэтому в неинтерактивном режиме --resume требует явного id.

Демон

ФлагПеременная окруженияНазначение
--daemon <mode>—Как подключаться к демону (daemon): auto (по умолчанию), connect, spawn или embedded
--daemon-url <url>CUSP_DAEMON_URLПодключиться к этому демону
--daemon-token <token>CUSP_DAEMON_TOKENЕго bearer-токен
--data-dir <dir>CUSP_DATA_DIRПапка данных демона. По умолчанию ~/.cusp
РежимПоведение
autoИспользовать --daemon-url, если он указан; иначе найти работающий демон для папки данных; иначе запустить новый
connectТолько подключаться к --daemon-url. Завершиться с ошибкой, если он недоступен
spawnВсегда запускать новый процесс демона для этого запуска
embeddedЗапустить демон внутри процесса CLI. Удобно в контейнерах и CI

Прочее

ФлагНазначение
--verboseДиагностика в stderr, включая отказы в разрешениях в неинтерактивном режиме
-v, --versionПоказать версию
-h, --helpПоказать справку

Коды завершения

КодЗначение
0Успех
1Запуск завершился ошибкой
2Неверная командная строка
130Прервано

Работа в неинтерактивном режиме

cusp -p выполняет один запрос и завершается. Запрос берётся из аргументов, из stdin или из обоих источников: входные данные из конвейера читаются, когда stdin не является терминалом.

В неинтерактивном режиме отвечать на вопросы некому, поэтому:

  • Запросы разрешений решаются через --allowedTools и --disallowedTools. Всё, что не разрешено заранее, запрещается, и агенту сообщается, как действовать дальше. Каждый отказ попадает в permission_denials в JSON-результате.
  • На вопросы агента (AskUserQuestion) приходит ответ «No answer: running non-interactively. Use your best judgment and state the assumption.»
  • Запросы на доверие к рабочей области не показываются.
# Allow tests and edits, nothing else
cusp -p "make the failing test in auth.test.ts pass" \
  --allowedTools "Bash(bun test *)" Edit Write \
  --max-turns 25 \
  --output-format json

Вывод text

Последнее сообщение ассистента обычным текстом. Ошибки выводятся в stderr.

Вывод json

Один JSON-объект по завершении запуска. Имена полей следуют распространённому формату результата неинтерактивного режима (type, subtype, result, session_id, total_cost_usd, …), поэтому существующие скрипты, которые его разбирают, продолжат работать.

{
  "type": "result",
  "subtype": "success",
  "is_error": false,
  "result": "Fixed the token expiry check in src/auth/session.ts. All 48 tests pass.",
  "session_id": "ses_01JCQ8Z4X9T5V2M3N7K1P6R0WA",
  "num_turns": 7,
  "duration_ms": 41873,
  "total_cost_usd": 0.0871,
  "usage": {
    "input_tokens": 182340,
    "output_tokens": 2911,
    "reasoning_tokens": 1404,
    "cache_read_input_tokens": 151200,
    "cache_creation_input_tokens": 18420
  },
  "permission_denials": []
}
ПолеЗначение
subtypesuccess, error_max_turns, error_during_execution или error_interrupted
is_errortrue для любого подтипа, кроме success
resultИтоговый текст ассистента
session_idПередайте в --resume, чтобы продолжить сессию
num_turnsЧисло ходов модели в этом запуске
duration_msРеальное затраченное время
total_cost_usdСтоимость этого запуска или null, если цены неизвестны
usageЧисло токенов в этом запуске. input_tokens включает чтение из кеша и запись в него
permission_denialsКаждый запрещённый вызов: tool, title и call_id
errorОписание ошибки, если запуск не удался

Вывод stream-json

Пока запуск идёт — по одному JSON-объекту на строку, а в последней строке — тот же объект результата, что и в json.

Первая строка описывает запуск:

{"type":"system","subtype":"init","session_id":"ses_01JC…","cwd":"/Users/me/code/app","model":{"providerId":"anthropic","modelId":"claude-opus-5-5"},"permission_mode":"default","cusp_version":"0.1.0","daemon":"spawned"}

Каждая следующая строка содержит одно событие сессии:

{"type":"event","session_id":"ses_01JC…","event":{"seq":12,"body":{"type":"tool.start", …}}}

Потоковые дельты (assistant.delta, tool.progress) включаются только с --include-partial-messages.

Ввод stream-json

С --input-format stream-json каждая строка в stdin — это сообщение пользователя:

{"type":"user","message":{"role":"user","content":"Now add tests for it."}}

content может быть строкой или массивом блоков содержимого ({"type":"text","text":"…"}, изображения и так далее). Так другая программа может вести с Cusp многоходовой диалог через конвейер.

Интерактивный режим

Слеш-команды

КомандаНазначение
/help, /?Команды и горячие клавиши
/clear (/new, /reset)Начать новую сессию. Текущую можно будет возобновить
/resume [session]Возобновить предыдущую сессию в этой папке
/rename <title>Переименовать эту сессию
/rewindОткатить переписку и файлы к одному из прошлых запросов
/forkПродолжить в копии этой сессии
/model [provider:model]Сменить модель
/effort [low|medium|high|xhigh|max]Задать уровень рассуждений
/mode [default|acceptEdits|plan|auto]Задать режим разрешений
/planПерейти в режим планирования
/todosПоказать или скрыть список задач
/cost (/usage)Токены и стоимость этой сессии
/statusСведения о демоне, сессии, модели и рабочей области
/diffСводка незакоммиченных изменений в рабочей области
/export [file]Записать переписку в текстовый файл
/initПопросить Cusp написать руководство CUSP.md для этого проекта
/reviewПопросить Cusp провести ревью незакоммиченных изменений. Сначала он сообщает об ошибках с указанием файла и строки и не изменяет файлы
/compact [instructions]Сжать переписку в сводку, чтобы освободить контекст
/exit (/quit)Выйти

Навыки, которые можно вызвать, появляются в том же меню /.

Префиксы в запросе

ПрефиксНазначение
/Слеш-команда или навык
@pathУпомянуть файл. По мере ввода предлагаются варианты путей
!commandСамостоятельно выполнить команду оболочки и поделиться её выводом с агентом

Горячие клавиши перечислены в разделе Горячие клавиши.

Переменные окружения

ПеременнаяНазначение
CUSP_DAEMON_URLДемон, к которому нужно подключиться
CUSP_DAEMON_TOKENBearer-токен этого демона
CUSP_DATA_DIRПапка данных. По умолчанию ~/.cusp
CUSP_THEMEdark (по умолчанию) или light — цвета терминального интерфейса
NO_COLORОтключить цвет. Интерфейс сохраняет контраст по яркости, но убирает оттенки
Ключи провайдеровСм. Провайдеры и шлюзы

На этой странице