Настройка DeepSeek Harness

В этом руководстве показано, как запустить DeepSeek Harness (dsh) с Aiberm как пользовательским OpenAI-совместимым провайдером. После настройки один API-ключ Aiberm открывает доступ к Claude, GPT, Gemini, DeepSeek, Kimi, MiniMax, GLM, Grok и остальным моделям Aiberm.

Info

DeepSeek Harness находится в developer preview и быстро меняется. Эта страница следует официальным README и руководству Configure models, а затем переносит эти шаги на Aiberm.

Что такое DeepSeek Harness?

DeepSeek Harness — открытый каркас агентов от DeepSeek AI. Всё устроено как плагины, которые собирает Cordis. Обычная точка входа — браузерный интерфейс (dsh web); тот же домашний каталог обслуживает и одноразовые headless-задачи.

Официальный проект:

Предварительные требования

Установка и запуск

Официальный способ установки — одноразовый запуск через npx. Из каталога проекта, в котором должен работать агент:

npx @deepseek-ai/dsh web

Веб-интерфейс по умолчанию слушает http://127.0.0.1:3080. Текущий рабочий каталог становится корнем рабочей области.

Полезные варианты:

# Another port
npx @deepseek-ai/dsh web --port 8080

# One-shot headless job (same models and credentials as the Web UI)
npx @deepseek-ai/dsh --profile headless "summarize the README"

Если CLI уже установлен:

dsh web
dsh --help
dsh web --help
Tip

Профили web и headless создаются при первом использовании в $DSH_HOME (по умолчанию ~/.dsh). Клонировать репозиторий только ради Aiberm не нужно.

Настройка Aiberm (веб-интерфейс, рекомендуется)

Aiberm — это не встроенная карточка DeepSeek и не каталожный провайдер OpenAI / Anthropic. У этих записей остаются официальные эндпоинты. Aiberm — OpenAI-совместимый шлюз, поэтому его добавляют как пользовательского провайдера.

Официальная справка: Configure models.

Шаг 1: откройте Settings → Models

В веб-интерфейсе откройте Settings → Models.

Шаг 2: добавьте пользовательского провайдера

Выберите Add a custom provider и заполните:

ПолеЗначение
Provider IDaiberm (строчными, постоянный — используется сеансами, значениями по умолчанию и именем учётных данных)
Display nameAiberm
Base URLhttps://aiberm.com/v1
API protocolopenai-completions
API keyваш ключ Aiberm из Консоль → API Tokens

Add a custom provider form

Warning

Provider ID позже переименовать нельзя. Его используют запросы, сохранённые сеансы, модель по умолчанию и сохранённые учётные данные. Чтобы сменить ID, добавьте нового провайдера и удалите старого.

Шаг 3: загрузите или введите модели

В разделе Model catalog выберите Fetch available models. Harness вызовет OpenAI-совместимый GET /v1/models Aiberm с только что введённым ключом. Выберите нужные модели и сохраните.

Fetch available models from Aiberm

Если обнаружение не сработало, введите ID моделей вручную. Берите их со страницы Список моделей или Aiberm Pricing. Примеры:

  • claude-sonnet-4-6
  • claude-opus-4-6
  • gpt-5.4
  • google/gemini-3-flash
  • deepseek/deepseek-v4-pro
  • grok-4.6
Info

Страница никогда не записывает API-ключ в settings.yaml. Ключ хранится только для записи в $DSH_HOME/.credentials.yaml. В настройках остаётся лишь ссылка вроде AIBERM_API_KEY.

Шаг 4: выберите модель

После сохранения Aiberm появится в селекторе моделей внизу композера. Выберите модель — этот выбор также станет значением по умолчанию для новых сеансов. Сеанс, который уже отправил запрос, сохраняет модель в своём журнале.

Селектор группирует встроенные модели DeepSeek отдельно от пользовательского провайдера Aiberm. Группу Aiberm используйте для Claude, GPT, Gemini и остального каталога.

Настройка Aiberm (settings.yaml)

Того же провайдера можно объявить, отредактировав $DSH_HOME/settings.yaml (обычно ~/.dsh/settings.yaml). Не помещайте API-ключ в этот файл.

llm-pi-ai:
  providers:
    aiberm:
      displayName: Aiberm
      apiKeyEnv: AIBERM_API_KEY
      api: openai-completions
      baseURL: https://aiberm.com/v1
      models:
        - id: claude-sonnet-4-6
        - id: claude-opus-4-6
        - id: claude-opus-4-6-thinking
        - id: gpt-5.4
        - id: google/gemini-3-flash
        - id: deepseek/deepseek-v4-pro
        - id: grok-4.6
        - id: kimi-k2.6
        - id: minimax-m2.7

agent-default-model:
  provider: aiberm
  model: claude-sonnet-4-6

Затем сохраните ключ в одном из этих мест (при запросе побеждает первое совпадение):

  1. Окружение запуска: AIBERM_API_KEY=sk-... npx @deepseek-ai/dsh web
  2. $DSH_HOME/.credentials.yaml (туда пишет страница Models):
AIBERM_API_KEY: sk-your-aiberm-api-key
  1. Проектный .env в каталоге запуска или $DSH_HOME/.env

Официальный порядок учётных данных: окружение процесса → $DSH_HOME/.credentials.yaml → проектный .env$DSH_HOME/.env. Значение, записанное на странице Models, перекрывает более старые ключи в .env.

На POSIX держите .credentials.yaml с режимом 600.

Пользовательский маршрут, которого нет в поставляемом каталоге Harness, обязан задать api, baseURL и непустой список models. models заменяет каталог для этого маршрута — в селекторе появятся только модели из этого списка. Достаточно записи только с id.

Модели с изображением (vision)

Модель, введённая вручную, считается только текстовой, пока вы не укажете иное. Если прикрепить изображение к такой модели, Harness отклонит запрос ещё до отправки.

Для vision-моделей Aiberm добавьте input в settings.yaml:

llm-pi-ai:
  providers:
    aiberm:
      apiKeyEnv: AIBERM_API_KEY
      api: openai-completions
      baseURL: https://aiberm.com/v1
      models:
        - id: claude-sonnet-4-6
        - id: gemini-3-pro-image-preview
          input: [text, image]
        - id: gpt-image-2
          input: [text, image]

Если все перечисленные модели принимают изображения, задайте запасной вариант маршрута один раз:

defaultInput: [text, image]

defaultInput — запасной вариант, а не переопределение. По умолчанию это [text].

Проверка настройки

  1. Откройте http://127.0.0.1:3080.
  2. Убедитесь, что селектор моделей показывает Aiberm и ваши модели.

Model picker showing the Aiberm group

  1. Отправьте короткий промпт, например Hi.
  2. Необязательно: запросите модели напрямую через Aiberm:
curl -H "Authorization: Bearer sk-your-aiberm-api-key" \
     https://aiberm.com/v1/models

Добавьте недостающие ID в список models провайдера (или снова выполните Fetch available models), если их нет в селекторе.

Замечания по headless и CLI

Веб-интерфейс и dsh --profile headless используют один $DSH_HOME. Настройте Aiberm один раз, затем запускайте:

npx @deepseek-ai/dsh --profile headless "list the files in this directory"

Флаги лаунчера идут первыми; всё после них относится к профилю:

dsh --profile web --port 8080
dsh --profile web --help
dsh --help

Устранение неполадок

MISSING_CREDENTIAL

Маршрут ссылается на AIBERM_API_KEY (или другой apiKeyEnv), но значение не сохранено. Сохраните ключ в Settings → Models или экспортируйте ту же переменную в оболочке, из которой запускаете dsh.

UNKNOWN_MODEL

Выбранная модель отсутствует в списке models этого провайдера. Снова загрузите модели или добавьте ID вручную. ID Aiberm со временем меняются — сверяйте их со Списком моделей.

401 при загрузке моделей или в чате

  • Проверьте ключ в Консоли Aiberm.
  • Base URL должен быть https://aiberm.com/v1 (включая /v1).
  • Не вставляйте ключ в settings.yaml; поместите его в credentials или окружение.

Запросы всё ещё идут в DeepSeek или OpenAI

Вы настроили встроенную карточку DeepSeek или каталожного провайдера openai / anthropic. У них остаются официальные эндпоинты. Удалите эту ошибочную запись и добавьте пользовательского провайдера с ID aiberm и base URL https://aiberm.com/v1.

Изображение отклонено до отправки

У модели нет модальности изображения. Добавьте input: [text, image] для этой модели (см. Модели с изображением (vision)), затем начните новый сеанс. Прикреплённое изображение остаётся в журнале старого сеанса.

Правки конфигурации не применяются

Изменения провайдера и ключа вступают в силу на следующем запросе; сервер перезапускать не нужно. Существующий сеанс сохраняет модель, уже записанную в его журнале. После смены значения по умолчанию начните новый чат.

Где лежат файлы

ПутьНазначение
$DSH_HOME/settings.yamlПровайдеры, списки моделей, модель по умолчанию (~/.dsh/settings.yaml)
$DSH_HOME/.credentials.yamlТолько API-ключи
$DSH_HOME/profiles/web/Автоматически созданный веб-профиль

Замечания

  • Для ключей лучше использовать страницу Models. В settings.yaml должна оставаться только ссылка apiKeyEnv.
  • Не запускайте агента в каталоге, где уже лежат секреты, которые вы не хотите ему показывать.
  • Поля за пределами этого руководства (таймауты, повторы, совместимость reasoning) см. в официальном dsh-llm-pi-ai README.

Ссылки