Блог

Подключаем DeepSeek Harness (dsh) к TeamoRouter: settings.yaml и DEEPSEEK_BASE_URL в dsh 0.2.x

Короткий ответ

DeepSeek Harness (dsh) по умолчанию отправляет запросы в официальный API DeepSeek. Перенаправить их в TeamoRouter можно двумя способами; оба мы проверили на dsh 0.2.1-rc.3 2 ноября 2026 года:

  1. Добавить TeamoRouter как провайдера (рекомендуем). OpenAI-совместимый провайдер прописывается в ~/.dsh/settings.yaml, ключ — в ~/.dsh/.env. Вы сами выбираете, какие модели показывает dsh и какая из них по умолчанию.
  2. Две переменные окружения (быстро). DEEPSEEK_API_KEY и DEEPSEEK_BASE_URL перенаправляют встроенного провайдера DeepSeek на TeamoRouter. Доступны только два официальных имени моделей DeepSeek, по умолчанию deepseek-flash. DEEPSEEK_DEFAULT_MODEL в dsh 0.2.x не действует.

У нового аккаунта баланс $0 — пополните его до первого запроса. Пополнить можно от $5. Если запрос возвращает 402 (в формате OpenAI — 400) с текстом «wallet balance is insufficient», значит, баланс пуст, а base URL и ключ настроены правильно. Пополните баланс и повторите запрос.

Способ 1: TeamoRouter как провайдер

1. Получите ключ. Создайте API-ключ (sk-teamo-...) в консоли TeamoRouter.

2. Сохраните провайдера в ~/.dsh/settings.yaml:

yaml
llm-pi-ai:
  providers:
    teamorouter:
      displayName: TeamoRouter
      apiKeyEnv: TEAMOROUTER_API_KEY
      api: openai-completions
      baseURL: https://api.teamorouter.com/v1
      models:
        - id: deepseek-v4-pro
          name: DeepSeek V4 Pro
        - id: deepseek-flash
          name: DeepSeek V4.1 Flash
        - id: deepseek-flash-free
          name: DeepSeek V4.1 Flash Free
agent-default-model:
  provider: teamorouter
  model: deepseek-v4-pro

Любой другой ID модели со страницы цен можно добавить в models и вызывать тем же ключом.

3. Запишите ключ в ~/.dsh/.env:

bash
echo 'TEAMOROUTER_API_KEY=ваш-ключ-sk-teamo' >> ~/.dsh/.env
chmod 600 ~/.dsh/.env

4. Запустите dsh:

bash
npx @deepseek-ai/dsh web

При первом запуске dsh 0.2.x переносит settings.yaml в запускаемый профиль (здесь ~/.dsh/profiles/web/cordis.patch.yml) и переименовывает файл в settings.yaml.imported. Откройте http://127.0.0.1:3080, создайте сессию и выберите модель TeamoRouter.

Перенос происходит один раз и только в следующий запущенный профиль; другой профиль, например dsh headless, его не видит. Либо передайте ему файл профиля web:

bash
dsh headless --patch ~/.dsh/profiles/web/cordis.patch.yml "Reply with one word: pong"

либо заново создайте settings.yaml перед запуском этого профиля. В инструкции по подключению DeepSeek Harness есть скрипт, который создаёт оба файла одной командой.

Способ 2: две переменные окружения

bash
export DEEPSEEK_API_KEY="ваш-ключ-sk-teamo"
export DEEPSEEK_BASE_URL="https://api.teamorouter.com/v1"
npx @deepseek-ai/dsh web

Что при этом происходит в dsh 0.2.1-rc.3, по нашей проверке:

  • dsh остаётся на встроенном провайдере deepseek-official и отправляет запросы в формате Anthropic на $DEEPSEEK_BASE_URL/messages, то есть на https://api.teamorouter.com/v1/messages. TeamoRouter их принимает.
  • Имя модели — официальное имя DeepSeek: по умолчанию deepseek-flash, а если выбрать в веб-интерфейсе — deepseek-v4-pro. Других моделей TeamoRouter в списке нет.
  • DEEPSEEK_DEFAULT_MODEL игнорируется: с этой переменной, равной deepseek-v4-pro, запрос всё равно шёл к deepseek-flash. Чтобы сменить модель по умолчанию, используйте способ 1.

Зачем направлять dsh на TeamoRouter

  1. Без аккаунта DeepSeek. Ключ и баланс — в TeamoRouter, регистрироваться и пополнять platform.deepseek.com не нужно. Как платит сама DeepSeek — в статье «Как оплатить DeepSeek API из России».
  2. Один ключ — много моделей. Со способом 1 модели DeepSeek, GPT, Gemini, Kimi и GLM можно держать в одном списке и переключать прямо в dsh.
  3. Оплата по токенам в рублях. Подписки нет. В окне пополнения нажмите «Оплатить» и выберите СБП, Т-Банк, ЮMoney или SberPay; минимум — $5. Можно оплатить и USDT, USDC или ETH (пошагово). Актуальные цены — на странице цен.

Типичные ошибки

MISSING_CREDENTIAL ... deepseek-official?

dsh всё ещё на встроенном провайдере и не находит ключ. Со способом 1 запущенный профиль не перенёс settings.yaml (см. выше про перенос) или в ~/.dsh/.env нет TEAMOROUTER_API_KEY. Со способом 2 переменная DEEPSEEK_API_KEY не экспортирована в той оболочке, из которой запущен dsh.

404 или ошибка соединения?

В обоих способах base URL должен заканчиваться на /v1. Способ 1 добавляет /chat/completions, способ 2 — /messages; полный путь в обоих случаях начинается с https://api.teamorouter.com/v1/.

Ошибка авторизации 401?

Ключ неверный, скопирован не полностью или удалён в консоли. Проверьте, что он начинается с sk-teamo- и без лишних пробелов: в ~/.dsh/.env для способа 1 или командой echo $DEEPSEEK_API_KEY для способа 2.

Можно ли менять модель в отдельной сессии?

Да. В веб-интерфейсе модель меняется для каждой сессии среди тех, что показывает провайдер: ваши models в способе 1 или deepseek-flash и deepseek-v4-pro в способе 2.

Можно ли хранить ключ в .env репозитория?

Не стоит. Держите его в ~/.dsh/.env или в профиле оболочки, вне репозитория, чтобы он не попал в коммит.

Дальше: установка DeepSeek Harness или DeepSeek Super-agent на том же провайдере.

Готовы подключиться?Войдите в консоль, пополните баланс и создайте API-ключ.