Уточнить DSH, плагины, roadmap и контракты исполнения

This commit is contained in:
admin committed 2026-11-11 05:24:36 +00:00
1 parent 2af6dd78ba
commit 41a4397ed2
25 files changed
+743 -37

No files matched your search

+102 -5
View File
@@ -5,6 +5,9 @@
| Термин | Значение |
|---|---|
| Harness | Движок и обвязка агента: цикл выполнения, управление контекстом, состоянием и вызовами инструментов |
| DSH | DeepSeek Harness — исходная база стандартного agent runtime Invest Harness |
| Connection | Подключение к провайдеру: способ входа, права, место хранения credentials и их состояние |
| AttemptContext | Deadline и данные продолжения конкретной попытки, отдельно от ExecutionSpec |
| Runtime | Среда выполнения программы: например, Node.js или Python; определяется пакетом harness’а |
| Plugin | Программное расширение, добавляющее инструменты, интеграции или возможности |
| Skill | Инструкции и вспомогательные материалы для конкретной задачи; может содержать скрипты, но сам по себе не предоставляет доступы |
@@ -22,7 +25,7 @@
## Концепция и статус
Invest Harness — платформа агентов для инвестиций. Автор публикует шаблон и его зависимости, пользователь выбирает шаблон, настраивает его через автоматически построенную форму и запускает локально или удалённо. Оба режима используют один формат пакетов и ExecutionSpec.
Invest Harness — платформа агентов для инвестиций. Автор публикует шаблон и его зависимости, пользователь выбирает шаблон, настраивает его через автоматически построенную форму и запускает локально или удалённо. Оба режима используют один формат пакетов и ExecutionSpec. Стандартный агент строится на DSH с собственным интерфейсом и исправленным разделением ядра, конфигурации, credentials и исполнения. Плагины сохраняют совместимость с публичным API DSH в проверенном профиле; другие harness также допускаются.
Документ задаёт целевую архитектуру и контракты первой версии. Реализация сервисов пока не входит в этот репозиторий. Выбранные технологии — проектные решения; численные показатели масштабирования — гипотезы до измерений.
@@ -69,13 +72,13 @@ flowchart TB
W["Web UI / Container / React, TypeScript, JSON Forms"]
I["Identity / Logical component of platform API / Sessions, OIDC"]
B["Platform API / Container / Go, REST"]
DB[("Platform DB / PostgreSQL / роли, агенты, запуски, аудит")]
DB[("Platform DB / PostgreSQL / роли, агенты, Run, Attempt, расписания, аудит")]
C["Каталог / Container / Go, REST"]
CD[("Catalog DB / PostgreSQL / пакеты и версии")]
PS[("Package Storage / S3 / архивы плагинов, скиллов, шаблонов")]
D["Диспетчер / Container / Go"]
E["Сервис исполнения / Container / Go / workflow, jobs, адаптер"]
ED[("Execution DB / PostgreSQL / назначения и статусы движка")]
ED[("Execution DB / PostgreSQL / executionId mapping и технические статусы")]
R["Registry API / Component of execution service / Go, OCI"]
RS[("Registry Storage / S3 / манифесты и слои образов")]
ES[("Execution Storage / S3 / логи и технические артефакты")]
@@ -116,7 +119,7 @@ flowchart TB
T --> S
T --> M
B --> F
D --> S
B --> S
B -.-> O
C -.-> O
E -.-> O
@@ -195,6 +198,9 @@ flowchart TB
| Система | Стек | Как создаётся |
|---|---|---|
| DSH adapter / plugin host | TypeScript, Node.js, DSH / Cordis | Переработанные границы ядра; публичный plugin API сохраняется |
| Standalone app | TypeScript, React; Electron / Capacitor | Общие формы, desktop sidecar; mobile управляет Runner |
| Provider broker | Go API + изолированные TypeScript provider plugins | Вход, хранение bindings, обновление и отзыв credentials |
| Web UI | TypeScript, React, JSON Forms | Новый интерфейс |
| Platform API и identity | Go, REST, OpenAPI, сессии, OIDC | Продуктовый API с адаптацией существующих механизмов аккаунтов |
| Каталог | Go, PostgreSQL, S3 API | Новый отдельный сервис |
@@ -329,6 +335,9 @@ stateDiagram-v2
preparing --> running: окружение готово
running --> waiting_input: checkpoint и запрос ввода
waiting_input --> queued: подтверждённое продолжение
waiting_input --> failed: INPUT_EXPIRED или deadline
preparing --> failed: deadline и остановка подтверждена
running --> failed: deadline и остановка подтверждена
running --> succeeded: результат принят
preparing --> failed: ошибка подготовки
running --> failed: ошибка
@@ -389,10 +398,91 @@ flowchart LR
MVP: четыре типа пакетов; immutable versions; конфигурация через формы; экземпляры агентов; ручной и регулярный запуск; стандартный и локальный Runner; документированный протокол своей реализации; отмена, события и результаты; tenant isolation; registry и buckets; аудит.
Следующий этап: возобновление через checkpoint, пользовательский ввод, автоматическая миграция конфигураций, Kubernetes Runner, автоматическое масштабирование и коммерческий биллинг. Протокол заранее резервирует эти возможности, но UI не предлагает их без подтверждённой capability.
Полный MVP достигается поэтапно (P0–P5 ниже), а не одним релизом. Следующий этап: возобновление через checkpoint, пользовательский ввод, автоматическая миграция конфигураций, Kubernetes Runner, автоматическое масштабирование и коммерческий биллинг. Протокол заранее резервирует эти возможности, но UI не предлагает их без подтверждённой capability.
Открытые решения: провайдер KMS и S3, конкретные версии зависимостей, политика модерации публичных пакетов, целевые SLO после нагрузочных измерений, перечень лицензий распространяемых runtime и пакетов. Публичный доступ к этому проекту сам по себе не задаёт лицензию его дальнейшего использования.
## DSH: интерфейс и внутренняя архитектура
Свой UI показывает шаблоны, настройки, подключения, расписания и результаты. Внутри DSH сохраняются публичные точки подключения плагинов; platform adapter изолирует конфигурацию, credentials, запуск и состояния сессий. Runner остаётся заменяемым, а внутренний agent loop — чёрным ящиком для диспетчера.
```mermaid
flowchart LR
UI["UI / React + JSON Forms"] --> API["Platform API / Go"]
API --> SPEC["Immutable ExecutionSpec + AttemptContext"]
SPEC --> RUN["Runner / Go adapter или своя реализация"]
subgraph JOB["Job / изолированное окружение"]
AD["Invest Harness adapter / TypeScript"]
CORE["DSH core / Node.js, Cordis"]
PL["DSH-compatible plugins / TypeScript"]
SK["Skills / инструкции и ресурсы"]
AD --> CORE
CORE --> PL
CORE --> SK
end
RUN --> AD
PL --> BROKER["Provider broker / изолированный plugin host"]
BROKER --> STORE["KMS vault или локальное secret storage"]
BROKER --> EXT["LLM / официальный клиент / API"]
```
Совместимость подтверждается для конкретных версий DSH, runtime и плагина. Непроверенные пакеты не получают отметку совместимости; зависимость от платформенного API объявляется явно. Детали и исходные источники: [DSH foundation](dsh-foundation.md).
## Плагины и авторизация провайдеров
Первая линейка: provider-claude, provider-codex, provider-xai, provider-generic, recurring-tasks и package-discovery. Provider plugins поддерживают API keys и отдельно разрешённые способы входа в аккаунт. Наличие подписки само по себе не делает её доступной стороннему приложению; неподтверждённые режимы не включаются. Плагин расписаний обращается к единому Scheduler, а discovery ищет пакеты и показывает зависимости/разрешения до установки.
```mermaid
sequenceDiagram
participant U as Пользователь
participant UI as Web / Desktop / Mobile
participant B as Provider broker / сервер или sidecar
participant P as Провайдер / официальный клиент
participant S as Разрешённое secret storage
U->>UI: Выбрать провайдера и способ входа
UI->>B: Создать AuthFlow
B->>B: Проверить deployment mode и права
B-->>UI: URL / device code / official client action
U->>P: Подтвердить вход
P-->>B: Результат поддержанного auth flow
B->>S: Сохранить credentials или локальный binding
B-->>UI: ConnectionSummary без секретов
```
Для official_client авторизация завершается внутри неизменённого клиента; broker получает только статус/binding, не извлекает его tokens. Для API key используется отдельная защищённая передача. Полная матрица и правила: [плагины](plugins.md), [Provider API](api/provider-api.md), [API edge cases](provider-edge-cases.md).
## Режимы приложения и развёртывания
```mermaid
flowchart TB
WEB["Web / PWA / React"] --> CLOUD["Облачный control plane / Go, PostgreSQL, S3"]
MOBILE["Mobile / Capacitor + React"] --> CLOUD
MOBILE --> ONPREM["On-prem control plane / тот же стек"]
DESKTOP["Desktop / Electron + React"] --> SIDE["Локальный sidecar / Go"]
DESKTOP --> CLOUD
SIDE --> LOCAL["Local Runner / DSH Node.js или OCI"]
CLOUD --> MANAGED["Managed Runner"]
CLOUD --> OWN["Свой Runner"]
ONPREM --> PRIVATE["Runner внутри инфраструктуры клиента"]
```
Desktop выполняет локально через sidecar; mobile/PWA управляют Runner. On-prem означает размещение всей платформы у клиента; свой Runner при облачном API — отдельный режим. Local CLI остаётся самостоятельным способом запуска без обязательной облачной учётки.
## Roadmap и готовность
| Этап | Результат |
|---|---|
| P0 | DSH spike, фиксация версий, plugin compatibility и контракты |
| P1 | JSON Schema Driven компоненты и редактор конфигураций |
| P2 | Реестры harness/plugin/skill/template и discovery |
| P3 | Локальный и on-premise запуск |
| P4 | Managed и собственные Runner, регулярные задачи |
| P5 | Provider plugins и допущенные account modes |
| P6 | Standalone JS: desktop, mobile, PWA |
| P7 | Расширение API edge cases, нагрузка и эксплуатация |
Проверки ошибок и изоляции входят в каждый этап, а не откладываются до P7. [Roadmap с критериями выхода](roadmap.md). Начинать можно с P0–P2; [результат проверки дизайна](review.md) разделяет принятые решения и оставшиеся проверки реализации.
## Подробные спецификации
- [Каталог и версии](catalog.md)
@@ -406,3 +496,10 @@ MVP: четыре типа пакетов; immutable versions; конфигур
- [API запусков](api/runs-api.md)
- [Runner Protocol](api/executor-api.md)
- [Модель данных и JSON Schema](contracts/domain-model.md)
- [База DSH](dsh-foundation.md)
- [Плагины](plugins.md)
- [Provider API](api/provider-api.md)
- [API edge cases](provider-edge-cases.md)
- [Roadmap](roadmap.md)
- [Проверка готовности](review.md)