> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# ds4

[ds4](https://github.com/antirez/ds4) предоставляет DeepSeek V4 Flash через локальный
бэкенд Metal с совместимым с OpenAI API `/v1`. OpenClaw подключается к ds4
через универсальное семейство провайдеров `openai-completions`.

ds4 не является встроенным плагином провайдера OpenClaw. Настройте его в разделе
`models.providers.ds4`, затем выберите `ds4/deepseek-v4-flash`.

| Свойство | Значение |
| - | - |
| ID провайдера | `ds4` |
| Плагин | отсутствует (только конфигурация) |
| API | совместимый с OpenAI Chat Completions (`openai-completions`) |
| Базовый URL | `http://127.0.0.1:18000/v1` (рекомендуется) |
| ID модели | `deepseek-v4-flash` |
| Вызовы инструментов | в стиле OpenAI: `tools` / `tool_calls` |
| Рассуждение | в стиле DeepSeek: `thinking` и `reasoning_effort` |

## Требования

* macOS с поддержкой Metal.
* Рабочая копия репозитория ds4 с `ds4-server` и файлом GGUF DeepSeek V4 Flash.
* Достаточный объём памяти для выбранного контекста; большие значения `--ctx` выделяют больше
  памяти KV при запуске сервера.

> [!WARNING]
>
> Запросы агентов OpenClaw включают схемы инструментов и контекст рабочего пространства. Малый контекст,
> например `--ctx 4096`, может успешно пройти прямые проверки через curl, но привести к сбою полных запусков агента с
> `500 prompt exceeds context`. Для быстрых проверок агента и инструментов используйте как минимум `--ctx 32768`.
> Используйте `--ctx 393216` только при наличии достаточного объёма памяти и для включения
> Think Max в ds4.

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

**1. Запустите ds4-server**

Замените `<DS4_DIR>` путём к вашей рабочей копии ds4.

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
<DS4_DIR>/ds4-server \
  --model <DS4_DIR>/ds4flash.gguf \
  --host 127.0.0.1 \
  --port 18000 \
  --ctx 32768 \
  --tokens 128
```

**2. Проверьте совместимую с OpenAI конечную точку**

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
curl http://127.0.0.1:18000/v1/models
```

Ответ должен содержать `deepseek-v4-flash`.

**3. Добавьте конфигурацию провайдера OpenClaw**

Добавьте конфигурацию из раздела [Полная конфигурация](#full-config), затем выполните однократную
проверку модели:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw infer model run \
  --local \
  --model ds4/deepseek-v4-flash \
  --thinking off \
  --prompt "Reply with exactly: openclaw-ds4-ok" \
  --json
```

## Полная конфигурация

Используйте эту конфигурацию, если ds4 уже запущен по адресу `127.0.0.1:18000`.

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  agents: {
    defaults: {
      model: { primary: "ds4/deepseek-v4-flash" },
      models: {
        "ds4/deepseek-v4-flash": {
          alias: "DS4 local",
        },
      },
    },
  },
  models: {
    mode: "merge",
    providers: {
      ds4: {
        baseUrl: "http://127.0.0.1:18000/v1",
        apiKey: "ds4-local",
        api: "openai-completions",
        timeoutSeconds: 300,
        models: [
          {
            id: "deepseek-v4-flash",
            name: "DeepSeek V4 Flash (ds4)",
            reasoning: true,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 32768,
            maxTokens: 128,
            compat: {
              supportsUsageInStreaming: true,
              supportsReasoningEffort: true,
              maxTokensField: "max_tokens",
              supportsStrictMode: false,
              thinkingFormat: "deepseek",
              supportedReasoningEfforts: ["low", "medium", "high", "xhigh"],
            },
          },
        ],
      },
    },
  },
}
```

Согласуйте `contextWindow` с `ds4-server --ctx`. Согласуйте `maxTokens`
с `--tokens`, если только вы намеренно не хотите, чтобы OpenClaw запрашивал меньший объём вывода,
чем задано на сервере по умолчанию.

## Запуск по требованию

OpenClaw может запускать ds4 только при выборе модели `ds4/...`. Добавьте
`localService` в ту же запись провайдера:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  models: {
    providers: {
      ds4: {
        baseUrl: "http://127.0.0.1:18000/v1",
        apiKey: "ds4-local",
        api: "openai-completions",
        timeoutSeconds: 300,
        localService: {
          command: "<DS4_DIR>/ds4-server",
          args: [
            "--model",
            "<DS4_DIR>/ds4flash.gguf",
            "--host",
            "127.0.0.1",
            "--port",
            "18000",
            "--ctx",
            "32768",
            "--tokens",
            "128",
          ],
          cwd: "<DS4_DIR>",
          healthUrl: "http://127.0.0.1:18000/v1/models",
          readyTimeoutMs: 300000,
          idleStopMs: 0,
        },
        models: [
          {
            id: "deepseek-v4-flash",
            name: "DeepSeek V4 Flash (ds4)",
            reasoning: true,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 32768,
            maxTokens: 128,
            compat: {
              supportsUsageInStreaming: true,
              supportsReasoningEffort: true,
              maxTokensField: "max_tokens",
              supportsStrictMode: false,
              thinkingFormat: "deepseek",
              supportedReasoningEfforts: ["low", "medium", "high", "xhigh"],
            },
          },
        ],
      },
    },
  },
}
```

`command` должен быть абсолютным путём к исполняемому файлу. Поиск через оболочку и раскрытие `~`
не используются. Описание всех полей `localService` см. в разделе [Локальные сервисы моделей](https://docs2.openclaw.ai/ru/gateway/local-model-services.md).

## Think Max

ds4 применяет Think Max, только когда выполняются оба условия:

* `ds4-server` начинается с `--ctx 393216` или более высокого значения.
* В запросе используется `reasoning_effort: "max"` (или эквивалентное поле уровня рассуждений ds4).

При использовании такого большого контекста обновите как флаги сервера, так и метаданные
модели OpenClaw:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  contextWindow: 393216,
  maxTokens: 384000,
  compat: {
    supportsUsageInStreaming: true,
    supportsReasoningEffort: true,
    maxTokensField: "max_tokens",
    supportsStrictMode: false,
    thinkingFormat: "deepseek",
    supportedReasoningEfforts: ["low", "medium", "high", "xhigh", "max"],
  },
}
```

## Проверка

Прямая проверка HTTP в обход OpenClaw:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
curl http://127.0.0.1:18000/v1/chat/completions \
  -H 'content-type: application/json' \
  -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"Reply with exactly: ds4-ok"}],"max_tokens":16,"stream":false,"thinking":{"type":"disabled"}}'
```

Маршрутизация модели OpenClaw (аналогично проверке из раздела быстрого старта):

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw infer model run \
  --local \
  --model ds4/deepseek-v4-flash \
  --thinking off \
  --prompt "Reply with exactly: openclaw-ds4-ok" \
  --json
```

Быстрая проверка полного запуска агента и вызова инструментов с контекстом не менее 32768:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw agent \
  --local \
  --session-id ds4-tool-smoke \
  --model ds4/deepseek-v4-flash \
  --thinking off \
  --message "Use the shell command pwd once, then reply exactly: tool-ok <output>" \
  --json \
  --timeout 240
```

Ожидаемый результат:

* `executionTrace.winnerProvider` имеет значение `ds4`
* `executionTrace.winnerModel` имеет значение `deepseek-v4-flash`
* `toolSummary.calls` составляет не менее `1`
* `finalAssistantVisibleText` начинается с `tool-ok`

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

> [accordion] curl не удаётся подключиться к /v1/models
>
> ds4 не запущен или не привязан к хосту/порту, указанному в `baseUrl`. Запустите
> `ds4-server`, затем повторите попытку:
>
> ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
> curl http://127.0.0.1:18000/v1/models
> ```

> [accordion] 500: запрос превышает размер контекста
>
> Настроенное значение `--ctx` слишком мало для запроса OpenClaw. Увеличьте
> `ds4-server --ctx`, затем соответствующим образом обновите `models.providers.ds4.models[].contextWindow`.
> Полным запросам агента с инструментами требуется значительно больше контекста, чем
> прямому curl-запросу с одним сообщением.

> [accordion] Think Max не активируется
>
> ds4 использует Think Max, только когда `--ctx` составляет не менее `393216`, а запрос
> запрашивает `reasoning_effort: "max"`. При меньшем контексте используется высокий
> уровень рассуждений.

> [accordion] Первый запрос выполняется медленно
>
> ds4 требуется время для первоначального размещения в Metal и прогрева модели. Задайте
> `localService.readyTimeoutMs: 300000`, когда OpenClaw запускает сервер
> по требованию.

## Связанные материалы

> [card] [Локальные сервисы моделей](https://docs2.openclaw.ai/ru/gateway/local-model-services.md)
>
> Запускайте локальные серверы моделей по требованию перед запросами к моделям.

> [card] [Локальные модели](https://docs2.openclaw.ai/ru/gateway/local-models.md)
>
> Выбирайте и используйте локальные бэкенды моделей.

> [card] [Провайдеры моделей](https://docs2.openclaw.ai/ru/concepts/model-providers.md)
>
> Настраивайте ссылки на провайдеров, аутентификацию и аварийное переключение.

> [card] [DeepSeek](https://docs2.openclaw.ai/ru/providers/deepseek.md)
>
> Нативное поведение провайдера DeepSeek и управление рассуждениями.
