deskless / документация

Документация

Установка, настройка редакторов, личный сервер, лимиты и решения частых проблем.

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

  1. После оплаты приходит ключ вида sk-dl-… и ссылка на кабинет.
  2. Команда установки ставит Claude Code и прописывает ключ — раздел Установка.
  3. В папке проекта — команда claude. Первый запрос уходит сразу, входить в аккаунт Anthropic не нужно.
Ключ — как пароль. Не стоит публиковать его в репозитории или чатах. Если ключ утёк — написать в Telegram, выдадим новый, старый отключим.

Установка

Установщик проверяет Node.js LTS (ставит, если нет), ставит Claude Code через npm, спрашивает ключ, пишет настройки и проверяет связь со шлюзом. Займёт пару минут.

Терминал:

Terminal
curl -fsSL https://deskless.ru/install.sh | sh

Проверка: новый терминал, затем

claude --version
claude -p "ответь одним словом: работает"

В кабинете есть персональная команда с уже вписанным ключом — её можно скопировать целиком.

Ручная настройка

Если Claude Code уже стоит или установщик не подходит — достаточно файла настроек:

ОСФайл
macOS, Linux~/.claude/settings.json
Windows%USERPROFILE%\.claude\settings.json
settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://gw.deskless.ru",
    "ANTHROPIC_AUTH_TOKEN": "sk-dl-КЛЮЧ",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5.5",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-sonnet-5",
    "DISABLE_AUTOUPDATER": "1",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  },
  "skipWebFetchPreflight": true
}

Вместо sk-dl-КЛЮЧ — свой ключ. Готовый файл с ключом скачивается в кабинете.

  • Haiku недоступен, поэтому фоновые задачи Claude Code идут на Sonnet 5.
  • Автообновление выключено: версию Claude Code проверяем на совместимость со шлюзом и обновляем установщиком.
  • skipWebFetchPreflight отключает проверку домена перед WebFetch — она ходит мимо шлюза и из России может не открываться.

Редакторы

VS Code и Cursor

Расширение «Claude Code» из маркетплейса берёт тот же settings.json — отдельно настраивать ничего не нужно. Либо просто запуск claude во встроенном терминале.

JetBrains

Плагин «Claude Code» для IntelliJ IDEA, PyCharm, WebStorm и других. Использует установленный Claude Code и его настройки.

Терминал

Любой: Terminal, iTerm2, Windows Terminal, Ghostty. В строке статуса внизу виден остаток лимита.

Модели

МодельИмяРасход лимитаТарифы
Sonnet 5claude-sonnet-5×1все
Opus 5.5claude-opus-5.5≈ ×2все
Fable 5.1claude-fable-5.1≈ ×55x, 20x

Переключение — команда /model внутри Claude Code. Имена пишутся с точкой, как в таблице.

Контекст 1M

По умолчанию контекст — 200K токенов: Claude Code сжимает историю раньше, и лимит тратится медленнее. Для больших кодовых баз доступен 1M — суффикс [1m]:

/model claude-opus-5.5[1m]

Цена за токен та же, но каждый шаг с большим контекстом стоит дороже. Если история разрослась — команда /compact сжимает её вручную.

Возможности

Всё ниже проверено через шлюз на настоящих запросах.

ЧтоКак пользоватьсяРасход лимита
Уровни мышления/effort в Claude Code (от low до max) или слово ultrathink в запросе. На сложных задачах модель думает дольше и ошибается реже.Чем выше уровень, тем больше. На max трудная задача стоит в 3–4 раза дороже, чем на low; на простых разницы почти нет.
Поиск в интернетеИнструмент WebSearch: Claude Code ищет сам, когда нужно.Каждый поиск — как ~5 000 входных токенов Sonnet, плюс найденный текст.
Открытие страницWebFetch — по ссылке из запроса.Как обычный текст страницы.
PDF и картинкиУказать путь к файлу или перетащить его в терминал. PDF читается целиком, включая сканы без текстового слоя; скриншоты — тоже.Страница-картинка — около 1 300 токенов, текстовая — меньше.
Длинный контекстМодель с суффиксом [1m] (раздел выше). Проверено на запросах больше 200K токенов.Каждый шаг с большим контекстом заметно дороже.
КэшВключается сам: повторяющееся начало диалога читается из кэша.Чтение из кэша — в 10 раз дешевле обычного входа.

Что не работает

  • Цитаты (citations) — ссылки на точное место в документе. Ответ приходит верный, но без привязки к странице и фрагменту. Ошибки нет, параметр просто не действует.
  • Пакетная обработка (Batch API) и загрузка файлов отдельным запросом (Files API). Файлы передаются прямо в запросе — так делает и Claude Code.
  • Haiku — фоновые задачи идут на Sonnet 5 (раздел Ручная настройка).
  • Функции, привязанные к аккаунту claude.ai, — раздел Скиллы, плагины, MCP.

Свои скрипты через API

Ключ работает не только в Claude Code: шлюз принимает запросы в формате Anthropic Messages API. Подойдут официальные библиотеки Anthropic — достаточно указать адрес шлюза и свой ключ.

pip install anthropic
from anthropic import Anthropic

client = Anthropic(base_url="https://gw.deskless.ru", api_key="sk-dl-КЛЮЧ")
msg = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Привет! Ответь одним предложением."}],
)
print(next(b.text for b in msg.content if b.type == "text"))

Работают: PDF и картинки в запросе, JSON строго по схеме (output_config.format), инструменты, в том числе строгие (strict: true), уровни мышления (output_config.effort), веб-поиск, кэш, стрим. Модели — те же, что в таблице выше, лимиты общие с Claude Code.

Особенности

  • Стрим ("stream": true) работает, но текст приходит целиком в конце, а до этого — служебные ping. Для чатов, где важно печатать по словам, это заметно.
  • max_tokens соблюдается не строго: ответ может оказаться длиннее. Если длина важна, лучше ограничить её в самом запросе.
  • Подсчёт токенов (/v1/messages/count_tokens) приблизительный: реальный вход Opus бывает примерно на 40% больше. Расход лимита считается по фактическим токенам из ответа.
  • Цитаты, Batch API и Files API не работают (раздел Возможности).
Скрипты и автоматизации — для своей работы. Встраивать ключ в продукт, бота или сервис для других людей нельзя (правила).

Лимиты

  • Окно 5 часов — основной лимит. Отсчёт идёт от первого запроса в окне, после сброса — снова 100%.
  • Неделя — общий потолок на 7 дней, чтобы одно окно за другим не выбирало месяц за неделю.
  • Одновременные запросы — 3 / 6 / 12 по тарифам. Важно для субагентов и нескольких терминалов.

Остаток — в строке статуса Claude Code (5ч: 62% · неделя: 31% · сброс в 14:20) и в кабинете. Когда лимит кончился, Claude Code показывает сообщение со временем сброса. Можно подождать, переключиться на Sonnet или перейти на тариф выше.

Что тратит лимит быстрее всего: Opus и Fable вместо Sonnet, высокий уровень мышления (/effort max, ultrathink), очень длинный контекст, много поисков в интернете, много параллельных субагентов.

Облачный Claude

Личный сервер с готовым Claude Code. После подключения приходят: адрес u<N>.deskless.ru, личный порт SSH, ссылка и пароль веб-терминала. SSH-конфиг можно скачать в кабинете.

SSH

~/.ssh/config
Host deskless
  HostName u42.deskless.ru
  Port 22042
  User dev
  ServerAliveInterval 30
ssh deskless

Вход только по SSH-ключу. После оплаты попросим публичный ключ (~/.ssh/id_ed25519.pub); если его нет — пришлём готовую пару.

Задача, которая идёт без ноутбука

Claude Code запускается внутри tmux — тогда он продолжает работу после отключения:

tmux new -s work      # новая сессия
claude                 # дать задачу
# Ctrl+B, затем D — отключиться, агент работает дальше
tmux attach -t work   # вернуться позже, хоть с телефона

С телефона

Веб-терминал открывается в браузере по ссылке из письма. Там же tmux attach -t work — и видно, что сделал агент.

VS Code и JetBrains по SSH

VS Code: расширение Remote — SSH → хост deskless. JetBrains: Remote Development → SSH. Проект и Claude Code — на сервере.

Что ещё

  • Ubuntu, Docker, Node.js LTS, Python и uv, git, gh, tmux уже установлены.
  • Домашняя папка /home/dev копируется раз в сутки в хранилище у другого провайдера, кроме папки ~/media.
  • Место под фото, видео и другие большие файлы можно докупить: +100 ГБ — 490 ₽ в месяц, папка ~/media. Её содержимое в ежедневную копию не входит. Заказать — в Telegram.
  • Пользователь dev с sudo; пароль root — по запросу.
  • Через 24 часа после окончания срока сервер удаляется. Последняя копия /home/dev хранится ещё 30 дней — при продлении её можно восстановить на новом сервере. Всё, что лежит вне /home/dev, не сохраняется, поэтому нужные файлы стоит забрать заранее.

Скиллы, плагины, MCP

Работают как обычно: скиллы в ~/.claude/skills/, плагины из маркетплейсов, хуки, субагенты, свои команды, CLAUDE.md, MCP-серверы:

claude mcp add имя -- npx -y пакет-mcp-сервера

Не работает то, что требует входа в аккаунт claude.ai: коннекторы claude.ai, Remote Control, облачные сессии. Вместо коннекторов — MCP-серверы тех же сервисов (GitHub, Notion, Linear и другие).

MCP с входом через браузер на сервере

На сервере нет браузера, поэтому ссылку входа открывают на своём компьютере, а обратный адрес localhost пробрасывают через SSH. Порт виден в ссылке, которую печатает Claude Code:

ssh -L 8765:localhost:8765 deskless

Google Диск

Коннектор Google Drive из claude.ai здесь не работает. Проще всего подключить Диск через rclone: папка Диска появляется на сервере как обычная папка, и Claude работает с ней как с локальными файлами. Google Cloud Console для этого не нужна.

1. Поставить rclone

На сервере:

bash
sudo apt install -y rclone fuse3

И на своём компьютере — он понадобится один раз, чтобы войти в Google через браузер:

Terminal
brew install rclone

2. Войти в Google

На сервере запустить rclone config и ответить на вопросы. В разных версиях они немного отличаются; на всё, чего нет в таблице, — Enter.

ВопросОтвет
New remoten
namegdrive
Storagedrive
client_id, client_secretпусто
scope1 — полный доступ, 2 — только чтение
Use web browser to automatically authenticaten
Configure this as a Shared Driven, для общего диска команды — y
Keep this remotey, затем q

После ответа «n» про браузер rclone напечатает команду вида rclone authorize "drive" "…". Её нужно скопировать целиком и выполнить на своём компьютере: откроется браузер, после входа в Google в терминале появится токен. Токен вставить на сервере в ответ на config_token.

Проверка — список папок Диска:

rclone lsd gdrive:

С Claude API, где Claude Code стоит на своём компьютере, шаг с rclone authorize не нужен: на вопрос про браузер ответить y.

3. Работать с файлами

Весь Диск как папка — правки сразу уходят на Диск:

mkdir -p ~/gdrive
rclone mount gdrive: ~/gdrive --vfs-cache-mode writes --daemon

После перезагрузки сервера команду нужно повторить. Отключить — fusermount3 -u ~/gdrive.

Или копировать одну папку туда и обратно. copy ничего не удаляет на стороне получателя:

rclone copy "gdrive:Отчёты" ~/work/reports   # с Диска на сервер
rclone copy ~/work/reports "gdrive:Отчёты"   # обратно

Claude может вызывать rclone сам: достаточно попросить «забери с Диска папку Отчёты и…».

Google Документы и Таблицы скачиваются как .docx и .xlsx. Если отправить их обратно, на Диске появится отдельный файл, а исходный документ не изменится. Поиска по содержимому Диска и комментариев через rclone тоже нет — для этого нужен MCP-сервер (ниже).
Токен лежит в ~/.config/rclone/rclone.conf и даёт доступ к Диску. Отозвать его можно в аккаунте Google: «Безопасность» → подключения к сторонним приложениям → rclone.

MCP-сервер Google Drive

Если нужны поиск по Диску и правка Google Документов прямо из Claude, подойдёт MCP-сервер Google Drive. Ему нужен свой OAuth-клиент: в Google Cloud Console создать проект, включить Google Drive API, создать OAuth client ID с типом «Desktop app» и передать его MCP-серверу по инструкции сервера. Вход — через SSH-проброс, как в разделе выше.

Пока на экране согласия OAuth стоит статус «Testing», Google сбрасывает вход раз в 7 дней. Чтобы не входить заново, статус меняют на «In production». При входе Google покажет предупреждение «Приложение не проверено» — для своего аккаунта это нормально: «Дополнительно» → «Перейти».

Частые ошибки

Что видноЧто делать
401, «invalid api key»Ключ введён с ошибкой или срок закончился. Проверить в кабинете, при необходимости продлить.
«Budget exceeded» / сообщение о лимитеКончилось окно 5 часов или неделя. В сообщении — время сброса.
429, «parallel request limit»Слишком много одновременных запросов для тарифа: меньше субагентов или терминалов.
503, «overloaded»Короткий сбой у поставщика. Claude Code сам повторит запрос. Если дольше 10 минут — написать в Telegram.
Долго нет ответаДлинный ответ идёт до пары минут, текст шага появляется целиком в конце. Это нормально.
«unsupported input format»Чаще всего история не помещается в контекст: /compact или новая сессия.
Claude Code просит войти в аккаунтНе найден settings.json или в нём нет ключа — раздел Ручная настройка.
WebFetch не открывает сайтыВ settings.json должно быть "skipWebFetchPreflight": true.

Не помогло — Telegram или почта. Пригодится текст ошибки и вывод claude --version.

Удаление

npm uninstall -g @anthropic-ai/claude-code

Затем удалить строки ANTHROPIC_* из ~/.claude/settings.json или весь файл.