DeepSeek Harness Web UI руководство начинается с одного важного отличия: DeepSeek Harness — это сторонний агент с открытым исходным кодом, а не продукт OdiRouter или встроенная интеграция. В официальном файле README указано, что это предварительная версия для разработчиков, и предупреждается о возможности внесения изменений, нарушающих совместимость. В этом руководстве текущая страница веб-интерфейса объединена с README и соседними руководствами по провайдерам и плагинам, чтобы можно было проверить настройку от начала до конца.
Перед установкой
В настоящее время пакет npm заявляет о поддержке Node.js ^22.19.0 || >=24.0.0; в руководстве по разработке в качестве поддерживаемых веток указаны Node.js+ и 22.19+, а также 24+. Для исходной копии также требуется Git 2.26 или более новая версия, а также Corepack с поддержкой pnpm. Корневой файл package.json фиксирует версию pnpm@11.7.0. Включите Corepack, если pnpm --version не определяется через него:
corepack enableДля отправки настоящего запроса к модели через веб-интерфейс нужен DeepSeek API key. Не сохраняйте его в истории оболочки и репозиториях. Необязательная настройка DEEPSEEK_BASE_URL изменяет базовый URL API; в официальном руководстве по разработке указано, что если её не задать, по умолчанию используется общедоступный API.
Установка и запуск веб-интерфейса
В поддерживаемом README описаны два варианта. Вариант с npm — самый быстрый способ протестировать предварительную версию:
npx @deepseek-ai/dsh webКоманда выводит URL веб-интерфейса и по умолчанию предоставляет http://127.0.0.1:3080. Откройте его на компьютере, на котором планируете использовать локальный сервер.
Если вы планируете изучать или расширять исходный код, используйте вариант с исходным кодом:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh webРуководство по разработке рекомендует pnpm run typecheck после создания новой копии репозитория. Это полезный этап проверки перед расследованием проблемы в веб-интерфейсе:
pnpm run typecheckЕсли сборка или проверка типов завершается ошибкой, сохраните первую ошибку, а также версии Node.js, pnpm и Git. Не пытайтесь «исправить» предварительную копию, копируя файлы из другой ветки.
DeepSeek Harness Web UI руководство: модель, рабочая область и первый запрос
В официальном руководстве по веб-интерфейсу предполагается, что сервер уже запущен. Выполните следующие действия по порядку:
Открыть Settings → Models.
На карточке DeepSeek введите
DeepSeek API keyи сохраните его.Нажмите кнопку Выбрать рабочую область, добавьте каталог проекта, из которого вы начали работу над
dsh, и выберите его.Начните сеанс и отправьте небольшой запрос, результаты которого можно проверить, например:
Кратко опишите содержимое этого репозитория и определите его основные пакеты.
Композитор остаётся недоступным до тех пор, пока не будет выбрано рабочее пространство. В руководстве провайдера указано, что изменения модели apply применяются к следующему запросу без перезапуска сервера. Поставщики Configured отображаются в средстве выбора модели; выбор одного из них также устанавливает значение по умолчанию для новых сессий. Сессия, которая уже отправила запрос, сохраняет модель, записанную в её журнале.
Добавление провайдера без догадок о работе интерфейса
Выберите Добавить провайдера для провайдера из установленного каталога. Каталог предоставляет его конечную точку, протокол и список моделей. Провайдерам с собственной системой аутентификации нужны собственные учётные данные, а не просто поле для API-ключа.
Выберите Добавить пользовательского провайдера для шлюза или самостоятельно размещённой конечной точки, отсутствующей в каталоге. В форме необходимо указать идентификатор провайдера в нижнем регистре, отображаемое имя, базовый URL, протокол API, учётные данные и как минимум одну модель. Идентификатор провайдера является постоянным для сохранённых сеансов и ссылок на учётные данные, поэтому, если вам нужен другой идентификатор, создайте нового провайдера, а не переименовывайте существующего.
Кнопка Получить доступные модели обращается к конечной точке OpenAI-compatible GET /models, используя базовый URL и учётные данные, указанные в форме в данный момент. Выбор результатов изменяет черновик; провайдер сохраняется только после нажатия кнопки сохранения. Если конечная точка не предоставляет функцию обнаружения моделей, введите идентификаторы моделей вручную.
Для модели с поддержкой изображений, введённой вручную, в официальном руководстве используется input: [text, image] в $DSH_HOME/settings.yaml. Это поле фиксирует заявление о возможностях конечной точки; оно не проверяет, действительно ли конечная точка принимает изображения. В руководстве также отмечается, что собственный маршрут DeepSeek для чат-завершений в этой configурации поддерживает только текст.
Configурировать и проверить локальный плагин
Для самого простого способа установки плагина требуется локальная копия исходного кода. В корневом каталоге создайте временный проект:
mkdir -p scratch-plugin/srcСоздайте scratch-plugin/src/my-plugin.ts:
import type { Context } from '@deepseek-ai/cordis'
export const name = 'hello-plugin'
export function apply(ctx: Context) {
console.log('[hello-plugin] plugin loaded!')
}Затем создайте scratch-plugin/cordis.yml. В руководстве требуется указать абсолютный путь во вставляемой строке:
- insert:
- id: hello
name: '/absolute/path/to/deepseek-harness/scratch-plugin/src/my-plugin.ts'Запустите веб-интерфейс с наложением:
pnpm dsh web --patch ./scratch-plugin/cordis.ymlОткройте http://127.0.0.1:3080 и найдите [hello-plugin] plugin loaded! в терминале. Это сообщение служит конкретной быстрой проверкой работоспособности. Если он отсутствует, проверьте абсолютный путь, отступы YAML и папку, из которой выполняется команда.
Для значений user-configurable экспортируйте схему с тем же именем Schemastery. Минимальная строка configурации выглядит так:
import type { Context } from '@deepseek-ai/cordis'
import Schema from '@deepseek-ai/schemastery'
export const name = 'validated-plugin'
export interface Config {
timeoutMs: number
}
export const Config: Schema<Config> = Schema.object({
timeoutMs: Schema.number().default(30000),
})
export function apply(ctx: Context, config: Config) {
console.log(config.timeoutMs)
}Схема заполняет значения по умолчанию и отклоняет недопустимое значение configuration во время загрузки плагина. Изменения Configурации автоматически заменяют плагин и удаляют регистрации, созданные через ctx. Произвольный внешний ресурс закрывается только тогда, когда плагин предоставляет средство освобождения ресурсов через ctx.effect().
Список проверок при устранении неполадок
Симптом | Проверка |
|---|---|
| Сохраните ключ провайдера через Settings → Models или укажите соответствующую переменную окружения. |
| Выберите configурированную модель или добавьте идентификатор модели в пользовательский провайдер. |
При обнаружении моделей возвращается 401 | Повторно проверьте ключ и базовый URL. |
Композитор заблокирован | Выберите рабочее пространство и модель. |
Изображение отклонено до отправки | Добавляйте |
Плагин не загружается | Повторно проверьте абсолютный путь к модулю, синтаксис |
Чего этот краткий старт не обещает
В репозитории указано, что это предварительная версия для разработчиков, а не стабильный выпуск. Текущий package.json сообщает о версии 0.1.0-rc.7, а в README содержится предупреждение об изменениях, нарушающих совместимость. В метаданных репозитория указана лицензия MIT, и репозиторий не архивирован; ни один из этих фактов не подразумевает поддержку в рабочей среде, определённую производительность, сертификацию безопасности или фиксированный каталог провайдеров и моделей. Перед повторным выполнением этих команд после обновления снова проверьте официальный README, руководства и метаданные пакетов.
DeepSeek Harness остаётся отдельным сторонним проектом. OdiRouter упоминается здесь как место назначения для отдельного решения по сервису, а не как владелец, партнёр или канал поддержки этого инструментария. Если вы отдельно оцениваете доступ к моделям или рабочий процесс с API, см. OdiRouter.