CLI-инструменты для кодинга
НовоеИспользуйте Shannon как модель для Claude Code, Codex CLI и других агентных CLI.
Чтобы инструмент для кодинга работал с Shannon, нужны три настройки: базовый URL API, ваш API-ключ и id модели Shannon. На этой странице приведены точные настройки для Claude Code и Codex CLI, объясняется, как считается модель для кодинга shannon-coder-1, и перечислены ошибки, с которыми сталкиваются эти инструменты.
Какой эндпоинт использует каждый инструмент
| Инструмент | Эндпоинт | Базовый URL | Примечание |
|---|---|---|---|
| Claude Code | POST /v1/messagesPOST /v1/messages/count_tokens | https://api.shannon-ai.com | Инструмент сам добавляет /v1/messages к базовому URL. |
| Codex CLI | POST /v1/responses | https://api.shannon-ai.com/v1 | Инструмент добавляет /responses к базовому URL. |
| Другие агентные инструменты, работающие с форматом чата OpenAI | POST /v1/chat/completions | https://api.shannon-ai.com/v1 | Задайте базовый URL, ключ и id модели Shannon в собственных настройках инструмента. |
Все три эндпоинта принимают один и тот же API-ключ, как Authorization: Bearer или как x-api-key. Заголовки anthropic-version, anthropic-beta и openai-beta, которые отправляют эти инструменты, принимаются.
Выбор модели Shannon
Каждый запрос должен указывать id модели, который публикует Shannon. Инструмент для кодинга отправляет имя своей модели по умолчанию, если вы не укажете иное, а на имя, которое Shannon не публикует, отвечают 400 и сообщением unknown model: <name>. Никакое другое имя не сопоставляется с моделью Shannon, поэтому задайте модель в инструменте до первого запроса.
GET /v1/models перечисляет все id с их контекстными окнами. Ключ не нужен. Модели и цены
| Модель | Считается как | Что дает |
|---|---|---|
shannon-coder-1 | Один вызов за запрос на /v1/messages и /v1/chat/completions. Токены на /v1/responses. | Модель для кодинга. Ввод текста, вызовы инструментов, контекстное окно 131,072 токенов. |
shannon-1.6-liteshannon-1.6-pro | Токены с вашего баланса. | Универсальные модели с вызовом инструментов. shannon-1.6-lite подходит для коротких фоновых запросов, которые делает инструмент. |
| Размещенные модели с открытыми весами | Токены с вашего баланса, кэшированный ввод — по 25% от цены ввода. | Вызовы инструментов, кэширование промптов для длинных сессий и точный подсчет через /v1/messages/count_tokens. |
Инструменты для кодинга направляют модель длинным системным промптом. Системный промпт применяют shannon-coder-1, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro и размещенные модели с открытыми весами, поэтому для инструмента кодинга выбирайте одну из них.
Claude Code
Claude Code читает подключение из переменных окружения. Задайте их в оболочке, которая его запускает, или в блоке env файла ~/.claude/settings.json, чтобы они действовали в каждой сессии.
# Install Claude Code
npm install -g @anthropic-ai/claude-code
# Where to send requests, and your Shannon API key
export ANTHROPIC_BASE_URL=https://api.shannon-ai.com
export ANTHROPIC_AUTH_TOKEN=YOUR_API_KEY
# Shannon model ids: the session model, and the model behind each built-in name
export ANTHROPIC_MODEL=shannon-coder-1
export ANTHROPIC_DEFAULT_OPUS_MODEL=shannon-coder-1
export ANTHROPIC_DEFAULT_SONNET_MODEL=shannon-coder-1
export ANTHROPIC_DEFAULT_HAIKU_MODEL=shannon-1.6-lite
# The context window of the session model
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=131072
claude {
"env": {
"ANTHROPIC_BASE_URL": "https://api.shannon-ai.com",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"ANTHROPIC_MODEL": "shannon-coder-1",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "shannon-coder-1",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "shannon-coder-1",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "shannon-1.6-lite",
"CLAUDE_CODE_MAX_CONTEXT_TOKENS": "131072"
}
} | Переменная | Описание |
|---|---|
ANTHROPIC_BASE_URL | Куда Claude Code отправляет свои запросы. Используйте адрес без /v1. |
ANTHROPIC_AUTH_TOKEN | Ваш API-ключ Shannon, отправляемый как Authorization: Bearer. ANTHROPIC_API_KEY тоже работает: он отправляет ключ как x-api-key, и Claude Code один раз просит подтвердить его. |
ANTHROPIC_MODEL | Модель сессии. claude --model <id> и /model <id> задают то же самое. |
ANTHROPIC_DEFAULT_HAIKU_MODEL | Модель для фоновых запросов, таких как заголовки сессий, и для всего, что запрашивает haiku. |
ANTHROPIC_DEFAULT_SONNET_MODEL | Модель, которая используется, когда субагент или команда запрашивает sonnet. |
ANTHROPIC_DEFAULT_OPUS_MODEL | Модель, которая используется, когда субагент или команда запрашивает opus. |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | Контекстное окно, которое Claude Code предполагает для модели. Используйте context_window, который GET /v1/models сообщает для выбранного id. |
- Задайте все три переменные
ANTHROPIC_DEFAULT_…_MODEL. Субагенты и некоторые команды запрашивают модель по ее встроенному имени, и каждое имя должно соответствовать id Shannon. - В примере фоновые запросы направлены на
shannon-1.6-lite, которая считается в токенах. Заголовки сессий и подобные запросы тогда не расходуют вызовы Coder. - Claude Code запрашивает у
POST /v1/messages/count_tokensразмер контекста. Эндпоинт считает для размещенных моделей с открытыми весами. С id Shannon он отвечает400; Claude Code считает подсчет токенов необязательным и оценивает размер сам. Подсчет токенов
Чтобы проверить адрес, ключ и id модели до запуска инструмента, отправьте один запрос вручную:
curl https://api.shannon-ai.com/v1/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-1.6-lite",
"max_tokens": 16,
"messages": [{"role": "user", "content": "Say OK."}]
}' Codex CLI
Codex CLI работает с Responses API. Опишите Shannon как провайдера моделей в ~/.codex/config.toml, выберите там id модели Shannon и поместите свой API-ключ в переменную окружения, которую называет провайдер.
model = "shannon-coder-1"
model_provider = "shannon"
model_context_window = 131072
[model_providers.shannon]
name = "Shannon"
base_url = "https://api.shannon-ai.com/v1"
env_key = "SHANNON_API_KEY"
wire_api = "responses" # Install Codex CLI
npm install -g @openai/codex
# Your Shannon API key, under the name given as env_key
export SHANNON_API_KEY=YOUR_API_KEY
# Start it; --model selects another Shannon id for one run
codex
codex --model shannon-1.6-pro | Ключ | Описание |
|---|---|
model | Id модели Shannon. codex --model <id> задает его для одного запуска. |
model_provider | Имя используемого блока провайдера, здесь shannon. |
base_url | Адрес API с /v1. |
env_key | Имя переменной окружения, в которой хранится ваш API-ключ Shannon. |
wire_api | responses: Codex обращается к POST /v1/responses. |
model_context_window | Контекстное окно модели, чтобы Codex вовремя сжимал длинную сессию. Используйте context_window, который сообщает GET /v1/models. |
/v1/responsesне хранит разговор на сервере: каждый запрос несет разговор вinput.previous_response_idпринимается для совместимости.- Инструменты-функции (
type: "function") предлагаются модели на/v1/responses. - На
/v1/responsesshannon-coder-1считается в токенах с вашего баланса, а не в вызовах Coder.
Та же проверка для эндпоинта Responses:
curl https://api.shannon-ai.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-1.6-lite",
"input": "Say OK."
}' Модель для кодинга и как она считается
shannon-coder-1 — модель Shannon для агентов программирования. GET /v1/models сообщает для нее контекстное окно в 131,072 токенов, вызовы инструментов, рассуждения и ввод текста. Она считается одним из двух способов, в зависимости от эндпоинта, который использует инструмент.
| Эндпоинт | Запрос стоит | Списывается с |
|---|---|---|
/v1/messages | 1 вызов за запрос | Лимит вызовов Coder по вашему плану. Токены с вашего баланса не списываются. |
/v1/chat/completions | 1 вызов за запрос | Лимит вызовов Coder по вашему плану. Токены с вашего баланса не списываются. |
/v1/responses | Токены, по $8.00 за 1M | Ваш баланс, как и для любой другой модели. Лимит вызовов не используется. |
Вызов — это один запрос, независимо от его размера. Он засчитывается, когда запрос принят, до ответа модели. Сессия агента отправляет по запросу на каждый шаг, поэтому долгая задача расходует много вызовов. Лимит зависит от вашего плана и обновляется каждые 4 часа, в 00:00, 04:00, 08:00, 12:00, 16:00 и 20:00 UTC.
| План | Вызовов за 4-часовое окно |
|---|---|
| Free | 3 |
| Plus | 20 |
| Standard | 40 |
| Pro | 60 |
Актуальные числа показывает страница планов. Планы
Когда вызовы окна исчерпаны, на запрос отвечают 429. На /v1/messages та же ошибка приходит в формате Anthropic.
{
"error": {
"type": "rate_limit_error",
"message": "Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan"
}
} {
"type": "error",
"error": {
"type": "rate_limit_error",
"message": "Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan"
}
} Переполнение контекста
Когда разговор больше контекстного окна модели, /v1/chat/completions и /v1/messages отвечают 400, типом invalid_request_error, кодом context_length_exceeded и сообщением, которое начинается с prompt is too long. Инструменты для кодинга читают эту ошибку, чтобы сжать сессию и отправить запрос снова. Ее возвращают shannon-coder-1, shannon-1.6-lite и shannon-1.6-pro.
{
"error": {
"type": "invalid_request_error",
"code": "context_length_exceeded",
"message": "prompt is too long: 140211 tokens > 131072 maximum",
"param": null
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"code": "context_length_exceeded",
"message": "prompt is too long: 140211 tokens > 131072 maximum",
"param": null
}
} Сообщение имеет вид prompt is too long: <sent> tokens > <limit> maximum. Когда оба числа неизвестны, оно имеет вид prompt is too long. Please compact the conversation and try again.
В потоке статус уже 200, поэтому ошибка приходит как событие, а затем поток закрывается обычным образом:
data: {"error":{"message":"prompt is too long: 140211 tokens > 131072 maximum","type":"invalid_request_error","code":"context_length_exceeded","param":null}}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","created":…,"model":"shannon-coder-1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{…}}
data: [DONE] event: error
data: {"type":"error","error":{"type":"invalid_request_error","message":"prompt is too long: 140211 tokens > 131072 maximum"}}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{…}}
event: message_stop
data: {"type":"message_stop"} На что может рассчитывать цикл агента
| Тема | Поведение |
|---|---|
| Схемы инструментов | Определения инструментов принимаются так, как их отправляет инструмент. На shannon-coder-1 и shannon-1.6-* ключевые слова JSON Schema, которые модель не использует, такие как $schema, $ref, additionalProperties, default и title, исключаются из того, что читает модель, а oneOf читается как anyOf. Ни один запрос из-за них не отклоняется. |
| Аргументы вызова инструмента | В потоке аргументы вызова инструмента приходят целиком в одной дельте: tool_calls[].function.arguments, input_json_delta.partial_json или response.function_call_arguments.delta. |
| Конец хода с инструментом | Значение finish_reason: "tool_calls" в Chat Completions и значение stop_reason: "tool_use" в Messages. |
| Keep-alive | Пока модель работает, /v1/messages каждые 15 секунд отправляет event: ping, а /v1/chat/completions — строку-комментарий : ping. |
| Остановка запроса | Закрытие соединения останавливает поток. Сам ход выполняется до конца и засчитывается. |
Устранение неполадок
| Симптом | Причина | Решение |
|---|---|---|
400 с unknown model: claude-… или unknown model: gpt-… | Инструмент отправил имя своей модели по умолчанию. Обслуживаются только опубликованные id Shannon, и никакое другое имя с ними не сопоставляется. | Выберите id Shannon: ANTHROPIC_MODEL и три переменные ANTHROPIC_DEFAULT_…_MODEL в Claude Code, model в конфигурации Codex. |
400 с unknown model: и без имени, от Codex CLI | В запросе не указана модель. /v1/responses требует ее. | Задайте model в ~/.codex/config.toml или передайте --model. |
401 с Missing authentication или Invalid API key | Ключ не дошел до API либо не является текущим ключом. Ключ Shannon начинается с sk-. | Проверьте, что переменная задана в оболочке, которая запускает инструмент. Скопируйте ключ заново из Keys & usage. |
404 на каждый запрос | В базовом URL на один /v1 больше или меньше, чем нужно инструменту. | Claude Code: адрес без /v1. Codex CLI: адрес с /v1. |
429 с Shannon Coder call quota reached | Вызовы Coder текущего 4-часового окна исчерпаны. | Дождитесь следующего окна, перейдите на план с большим числом вызовов или выберите модель, которая считается в токенах. |
429 с Quota exceeded | Вашего баланса не хватает на запрос. | Пополните кредит или дождитесь ежедневного лимита вашего плана в 00:00 UTC. |
400 с prompt is too long | Разговор больше контекстного окна модели. | Сожмите сессию (/compact в обоих инструментах). Сообщите инструменту контекстное окно модели, чтобы он сжимал раньше. |
| Claude Code показывает приблизительные значения контекста | /v1/messages/count_tokens считает для размещенных моделей с открытыми весами. С id Shannon он отвечает 400, а Claude Code оценивает размер сам. | Исправлять нечего. Выберите размещенную модель с открытыми весами, если нужен точный подсчет. |
| Вставленный скриншот не учитывается | shannon-coder-1 принимает ввод текста. | Выберите для этой сессии модель, которая принимает изображения. |
Ваш ключ и ваш баланс находятся на странице Keys & usage. Keys & usage