Подключение Moyi API к DeepSeek Harness

DeepSeek Harness (команда dsh) поддерживает OpenAI-совместимых провайдеров моделей. Выполнив это руководство, вы сможете использовать через Moyi API модели deepseek-flash, deepseek-v4-pro, deepseek-v4-flash, gpt-6-astra, gpt-5.6-sol и другие, сохранив веб-интерфейс, сессии и агентные возможности Harness.

Поддерживаемые модели

  • DeepSeek: deepseek-flash (DeepSeek V4.1 Flash), deepseek-v4-pro (официальный релиз 13 августа), deepseek-v4-flash (официальный релиз 31 июля)
  • GPT: gpt-6-astra, gpt-5.6-sol, gpt-5.6-luna, gpt-5.6-terra, gpt-5.5

1. Подготовка

Прежде чем начать, установите Node.js 24 и подготовьте действующий API-ключ Moyi API.

1.1 Установите Node.js 24

DeepSeek Harness требует Node.js 24. npm входит в состав Node.js. Скачайте установщик для своей ОС и архитектуры процессора:

При использовании китайского зеркала выберите каталог v24.x.x и скачайте установщик для своей системы. После установки заново откройте терминал и проверьте версии:

bash
node --version
npm --version

Вывод node --version должен начинаться с v24..

API-ключи Moyi API начинаются с sk-moyiapi-. Создать ключ можно в консоли Moyi API.

Создать API-ключ Moyi API

2. Настройка и запуск одной командой

Открывать и вручную править файлы конфигурации не нужно. Замените sk-moyiapi-replace-with-your-api-key в блоке кода на свой API-ключ Moyi API, затем скопируйте и выполните всю команду в терминале. Она автоматически установит, настроит и запустит DeepSeek Harness.

macOS / Linux

bash
bash <<'MOYIAPI_SETUP'
set -e

npm install -g @deepseek-ai/dsh
MOYIAPI_API_KEY="sk-moyiapi-replace-with-your-api-key"
export MOYIAPI_API_KEY

NODE_PATH="$(npm root -g)/@deepseek-ai/dsh/node_modules" node <<'NODE'
const fs = require('fs');
const os = require('os');
const path = require('path');
const yaml = require('js-yaml');

const home = process.env.DSH_HOME || path.join(os.homedir(), '.dsh');
const settingsPath = path.join(home, 'settings.yaml');
fs.mkdirSync(home, { recursive: true });

const current = fs.existsSync(settingsPath)
  ? (yaml.load(fs.readFileSync(settingsPath, 'utf8')) || {})
  : {};

if (fs.existsSync(settingsPath)) {
  fs.copyFileSync(settingsPath, settingsPath + '.bak.' + Date.now());
}

current['llm-pi-ai'] ??= {};
current['llm-pi-ai'].providers ??= {};
current['llm-pi-ai'].providers.moyiapi = {
  displayName: 'Moyi API',
  apiKeyEnv: 'MOYIAPI_API_KEY',
  api: 'openai-completions',
  baseURL: 'https://api.moyiapi.com/v1',
  models: [
    { id: 'deepseek-flash', name: 'DeepSeek V4.1 Flash' },
    { id: 'deepseek-v4-pro', name: 'DeepSeek V4 Pro' },
    { id: 'deepseek-v4-flash', name: 'DeepSeek V4 Flash' },
    { id: 'gpt-6-astra', name: 'GPT 6 Astra' },
    { id: 'gpt-5.6-sol', name: 'GPT 5.6 Sol' },
    { id: 'gpt-5.6-luna', name: 'GPT 5.6 Luna' },
    { id: 'gpt-5.6-terra', name: 'GPT 5.6 Terra' },
    { id: 'gpt-5.5', name: 'GPT 5.5' },
  ],
};
current['agent-default-model'] = {
  provider: 'moyiapi',
  model: 'deepseek-flash',
};

fs.writeFileSync(
  settingsPath,
  yaml.dump(current, { lineWidth: -1, noRefs: true }),
  { mode: 0o600 },
);

const envPath = path.join(home, '.env');
const oldLines = fs.existsSync(envPath)
  ? fs.readFileSync(envPath, 'utf8').split(/\r?\n/)
  : [];
const lines = oldLines.filter(
  (line) => line && !line.startsWith('MOYIAPI_API_KEY='),
);
lines.push('MOYIAPI_API_KEY=' + process.env.MOYIAPI_API_KEY);
fs.writeFileSync(envPath, lines.join('\n') + '\n', { mode: 0o600 });

console.log('Moyi API configured. Default model: deepseek-flash');
NODE

dsh web
MOYIAPI_SETUP

Windows PowerShell

powershell
npm install -g @deepseek-ai/dsh

$env:MOYIAPI_API_KEY = 'sk-moyiapi-replace-with-your-api-key'
$env:NODE_PATH = "$(npm root -g)\@deepseek-ai\dsh\node_modules"

@'
const fs = require('fs');
const os = require('os');
const path = require('path');
const yaml = require('js-yaml');

const home = process.env.DSH_HOME || path.join(os.homedir(), '.dsh');
const settingsPath = path.join(home, 'settings.yaml');
fs.mkdirSync(home, { recursive: true });

const current = fs.existsSync(settingsPath)
  ? (yaml.load(fs.readFileSync(settingsPath, 'utf8')) || {})
  : {};

if (fs.existsSync(settingsPath)) {
  fs.copyFileSync(settingsPath, settingsPath + '.bak.' + Date.now());
}

current['llm-pi-ai'] ??= {};
current['llm-pi-ai'].providers ??= {};
current['llm-pi-ai'].providers.moyiapi = {
  displayName: 'Moyi API',
  apiKeyEnv: 'MOYIAPI_API_KEY',
  api: 'openai-completions',
  baseURL: 'https://api.moyiapi.com/v1',
  models: [
    { id: 'deepseek-flash', name: 'DeepSeek V4.1 Flash' },
    { id: 'deepseek-v4-pro', name: 'DeepSeek V4 Pro' },
    { id: 'deepseek-v4-flash', name: 'DeepSeek V4 Flash' },
    { id: 'gpt-6-astra', name: 'GPT 6 Astra' },
    { id: 'gpt-5.6-sol', name: 'GPT 5.6 Sol' },
    { id: 'gpt-5.6-luna', name: 'GPT 5.6 Luna' },
    { id: 'gpt-5.6-terra', name: 'GPT 5.6 Terra' },
    { id: 'gpt-5.5', name: 'GPT 5.5' }
  ]
};

current['agent-default-model'] = {
  provider: 'moyiapi',
  model: 'deepseek-flash'
};

fs.writeFileSync(
  settingsPath,
  yaml.dump(current, { lineWidth: -1, noRefs: true }),
  { mode: 0o600 }
);

const envPath = path.join(home, '.env');
const oldLines = fs.existsSync(envPath)
  ? fs.readFileSync(envPath, 'utf8').split(/\r?\n/)
  : [];
const lines = oldLines.filter(
  (line) => line && !line.startsWith('MOYIAPI_API_KEY=')
);
lines.push('MOYIAPI_API_KEY=' + process.env.MOYIAPI_API_KEY);
fs.writeFileSync(envPath, lines.join('\n') + '\n', { mode: 0o600 });

console.log('Moyi API configured. Default model: deepseek-flash');
'@ | node

if ($LASTEXITCODE -eq 0) {
  dsh web
}

Команда устанавливает DeepSeek Harness, делает резервную копию и объединяет существующую конфигурацию, сохраняет ключ, настраивает модели Moyi API и запускает Harness. Ваша тема и другие настройки не удаляются.

После запуска терминал покажет локальный URL, обычно http://127.0.0.1:3080. Откройте его в браузере и создайте новую сессию. Чтобы позже снова запустить Harness, выполните из каталога проекта:

bash
dsh web

Чтобы использовать Harness в конкретном проекте, перед dsh web перейдите в реальный каталог проекта. Не копируйте /path/to/my-project буквально — это лишь заполнитель.

3. Проверьте подключение

Отправьте минимальный запрос без графического интерфейса (headless), чтобы проверить конфигурацию, API-ключ и модель:

bash
export MOYIAPI_API_KEY="sk-moyiapi-xxxxxx"
dsh --profile headless "Reply with OK only"

Если терминал вернул OK, DeepSeek Harness успешно вызвал модель через Moyi API. Выполните dsh web, чтобы открыть веб-интерфейс.

4. Добавление и смена моделей

Чтобы выбирать в Harness из нескольких моделей Moyi API, добавьте их в тот же список models. В примере — DeepSeek V4.1 Flash, модели DeepSeek V4 и несколько моделей GPT:

yaml
llm-pi-ai:
  providers:
    moyiapi:
      displayName: Moyi API
      apiKeyEnv: MOYIAPI_API_KEY
      api: openai-completions
      baseURL: https://api.moyiapi.com/v1
      models:
        - id: deepseek-flash
          name: DeepSeek V4.1 Flash
        - id: deepseek-v4-pro
          name: DeepSeek V4 Pro
        - id: deepseek-v4-flash
          name: DeepSeek V4 Flash
        - id: gpt-6-astra
          name: GPT 6 Astra
        - id: gpt-5.6-sol
          name: GPT 5.6 Sol
        - id: gpt-5.6-luna
          name: GPT 5.6 Luna
        - id: gpt-5.5
          name: GPT 5.5
        - id: gpt-5.4
          name: GPT 5.4

agent-default-model:
  provider: moyiapi
  model: deepseek-flash

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

Каталог моделей Moyi API постоянно обновляется. Чтобы уточнить актуальные ID моделей, выполните:

bash
curl https://api.moyiapi.com/v1/models \
  -H "Authorization: Bearer sk-moyiapi-xxxxxx"

5. Решение проблем

API возвращает 401 или invalid_bearer_token. Убедитесь, что API-ключ полный, без лишних пробелов, не удалён и начинается с sk-moyiapi-. Если ошибка повторяется, создайте новый ключ в консоли Moyi API и попробуйте снова.

Готовы? Три шага, чтобы начатьВойдите в консоль · пополните баланс · создайте API Key
DiscordПомощь сообщества
Подключение Moyi API к DeepSeek Harness · Документация