80 lines
4.1 KiB
Markdown
80 lines
4.1 KiB
Markdown
# dsh-plugins — shared DeepSeek Harness plugins monorepo
|
||
|
||
Общее монорепо кастомных плагинов для DeepSeek Harness. Каждый пакет собирается
|
||
изолированно (`tsc` → `lib/`) с core-зависимостями `@deepseek-ai/*` из публичного
|
||
npmjs и публикуется в npm-реестр Gitea `https://git.byte-mate.ru/api/packages/Coder/npm/`
|
||
под scope `@deepseek-ai/*`.
|
||
|
||
## Состав
|
||
|
||
| Пакет | Версия | Назначение |
|
||
|---|---|---|
|
||
| `@deepseek-ai/dsh-tool-lab` | `0.1.0-rc.7` | Модельные lab-инструменты: ComfyUI imagegen, Docling OCR, Whishper STT |
|
||
| `@deepseek-ai/dsh-web-search-searxng` | `0.1.0-rc.7` | SearXNG-провайдер поиска для seam `ctx.web` |
|
||
| `@deepseek-ai/dsh-telegram-remote` | `0.2.0` | Удалённое управление DSH через Telegram Bot API |
|
||
|
||
## Сборка и тесты
|
||
|
||
```sh
|
||
pnpm install # резолвит точные версии core-пакетов из npmjs
|
||
pnpm -r build # tsc каждого TS-пакета → lib/
|
||
pnpm -r test # vitest (шаблон *.spec.ts; *.e2e.ts исключён)
|
||
pnpm -r pack # контроль упаковки tarball
|
||
```
|
||
|
||
`pnpm-lock.yaml` фиксируется в репозитории. В корневом `.npmrc` **нет** маппинга
|
||
`@deepseek-ai` → Gitea — это сломало бы сборку (core тянется с npmjs).
|
||
|
||
## Публикация
|
||
|
||
Пакеты публикуются в Gitea npm-реестр (`https://git.byte-mate.ru/api/packages/Coder/npm/`)
|
||
под scope `@deepseek-ai/*`. Транзитивные core-зависимости (`@deepseek-ai/cordis`,
|
||
`dsh-settings`, `dsh-web`, `schemastery` и т.д.) тянутся из публичного npmjs —
|
||
реестр Gitea не проксирует npmjs, поэтому скоуп `@deepseek-ai` НЕ перенаправляется
|
||
на Gitea при установке.
|
||
|
||
### Через CI (рекомендуется)
|
||
|
||
1. Убедись, что в настройках репозитория есть секрет `GITEA_NPM_TOKEN` (токен
|
||
пользователя `Coder` с правами на packages) — Settings → Actions → Secrets.
|
||
2. Создай git-тег с префиксом `v*` (например `v0.1.0-rc.7`) и запушь его.
|
||
3. Job `publish` в `.gitea/workflows/publish.yml` соберёт пакеты и опубликует те,
|
||
которых ещё нет (идемпотентно через `check-published.mjs`).
|
||
|
||
Пуш в `main` гоняет только `build-test` (сборка + тесты), публикация — по тегу.
|
||
|
||
### Вручную
|
||
|
||
```sh
|
||
pnpm --filter @deepseek-ai/dsh-tool-lab publish --no-git-checks \
|
||
--registry https://git.byte-mate.ru/api/packages/Coder/npm/ \
|
||
"--//git.byte-mate.ru/api/packages/Coder/npm/:_authToken=$GITEA_NPM_TOKEN"
|
||
```
|
||
|
||
## Установка плагина
|
||
|
||
Скрипты-установщики добавляют плагины в активный профиль DSH как **прямые tarball
|
||
URL из Gitea-реестра** (не скоупят `@deepseek-ai` — транзитивные core-зависимости
|
||
берутся из npmjs) и идемпотентно дописывают insert-записи в `cordis.patch.yml`.
|
||
|
||
### Windows
|
||
|
||
```powershell
|
||
$env:GITEA_NPM_TOKEN = "<токен>"
|
||
.\scripts\dsh-plugin-install.ps1 -Profile web
|
||
```
|
||
|
||
### bash/macOS/Linux
|
||
|
||
```bash
|
||
export GITEA_NPM_TOKEN="<токен>"
|
||
./scripts/dsh-plugin-install.sh web
|
||
```
|
||
|
||
После установки перезапусти dsh. Пакет → id записи в `cordis.patch.yml`:
|
||
- `@deepseek-ai/dsh-tool-lab` → `tool-lab`
|
||
- `@deepseek-ai/dsh-web-search-searxng` → `web-search-searxng`
|
||
- `@deepseek-ai/dsh-telegram-remote` → `telegram-remote`
|
||
|
||
Пользовательские конфиги плагинов (например, `tokenFile`, `comfyBaseUrl`) — поле
|
||
`config` той же insert-записи — редактируются в `cordis.patch.yml` после установки. |