Уточнить DSH, плагины, roadmap и контракты исполнения
This commit is contained in:
1 parent
2af6dd78ba
commit
41a4397ed2
25 files changed
+743
-37
No files matched your search
+102
-5
@@ -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)
|
||||
Reference in new issue
Block a user