Плагин DeepSeek Harness
Плагин DeepSeek Harness (dsh) подключается к работающему развёртыванию aihelpme.ru через REST API и поддерживает извлечение исходного текста, чтение полного документа и генерацию ответов со ссылками. Исходный код плагина находится в packages/dsh-weknora.
Установка и подключение
dsh plugin --profile web add @wxg-prc-cpg/dsh-weknora
export WEKNORA_BASE_URL=https://weknora.example.com
export WEKNORA_API_KEY='<api-key>'
export WEKNORA_KNOWLEDGE_BASE_IDS=kb-123,kb-456
export WEKNORA_RESOURCE_URLS=public
dsh webТакже можно из корня репозитория выполнить dsh plugin --profile web add ./packages/dsh-weknora. Сам плагин требует Node ≥20.11; проверенное в репозитории окружение dsh требует Node с zstd (≥22.15 или ≥24) и pnpm ≥10. Проверенные версии — dsh 0.1.0-rc.8 / aihelpme.ru 0.8.0; совместимость других версий нужно проверять по их интерфейсу плагинов.
Адрес сервиса может содержать /api/v1; если его нет, он добавляется автоматически. API Key отправляется через X-API-Key и требует возможности retrieve; для вызова ask также нужна chat. При использовании платформенного Key нужно задать tenantId; запрос отправит его как X-Tenant-ID.
Четыре инструмента
| Инструмент | Назначение |
|---|---|
weknora_list_knowledge_bases | Список видимых баз знаний с ID |
weknora_search | Гибридный поиск фрагментов с одновременным сопоставлением заголовков документов; возвращает ID знания, номер блока и оценку |
weknora_read_document | Чтение упорядоченного текста по документу: на первом экране заголовок/аннотация, длинный текст можно листать |
weknora_ask | Создание или продолжение сессии в aihelpme.ru, возвращает ответ, ссылки и процесс работы серверных инструментов |
search возвращает доказательства для поиска, по которым dsh генерирует ответ; ask вызывает модель на сервере aihelpme.ru и создаёт сессию и сообщения, подходит для обобщения нескольких материалов. Оба не изменяют содержимое базы знаний.
Когда область баз знаний не указана, плагин определяет все базы знаний, видимые для этих учётных данных, кэширует их в процессе и использует совместно для search/ask. После настройки agentId запрос ask идёт по процессу Agent, а область знаний определяется этим Agent на сервере.
Конфигурация Profile
Задаётся в $DSH_HOME/profiles/<name>/cordis.patch.yml:
- id: weknora
config:
baseUrl: https://weknora.example.com
apiKey: !!js process.env.WEKNORA_API_KEY
knowledgeBaseIds: [kb-product-docs]
agentId: ''
maxResults: 8
maxChunkChars: 1200
requestTimeoutMs: 30000
chatTimeoutMs: 300000
resourceUrls: public
toolPrefix: weknora
tools:
listKnowledgeBases: true
search: true
readDocument: true
ask: trueОбновление конфигурации полностью заменяет config этой строки, поэтому следует включать все поля, которые нужно сохранить. tools.* по умолчанию включены все. При подключении нескольких развёртываний задайте разные toolPrefix; имена должны начинаться со строчной буквы и содержать только строчные буквы, цифры и подчёркивания.
Ссылки на изображения и диагностика
resourceUrls по умолчанию равно public: запрос просит сервер преобразовать дескрипторы ресурсов в загружаемые ссылки. Если API Key, ограниченный базой знаний, получает 403, плагин автоматически переключается на handle и сохраняет этот режим в последующих вызовах. Дескрипторы resource:// нельзя загрузить напрямую в браузере; требования к внешним ссылкам при развёртывании см. в Доступ к файлам.
| Симптом | Проверка |
|---|---|
| Ошибка конфигурации на этапе загрузки | Исправьте baseUrl, диапазоны параметров, toolPrefix по ошибкам для каждого поля |
| Ошибка 401/403 при поиске | Действителен ли Key, есть ли возможность retrieve и авторизация для целевого пространства/базы знаний |
| ask отклонён | Есть ли у Key также chat, предоставляет ли платформенный Key tenantId |
| Нет прямых ссылок на изображения | Это Key, ограниченный базой знаний, или в развёртывании не настроены доступные внешние ссылки |
| Тайм-аут длинного вопроса | Настройте chatTimeoutMs и проверьте вызовы модели aihelpme.ru |
Справочная реализация
packages/dsh-weknora/src/, test/fixtures/api-contract.json, contract/contract_test.go.
