Files
invest-harness/designDocument/plugins.md
T

8.3 KiB
Raw Blame History

Плагины Invest Harness

Плагины совместимы с публичным DSH plugin API в проверенной матрице версий. Harness — движок, template — состав агента, skill — инструкции, plugin — исполняемое расширение. Подключение аккаунта провайдера не является входом в Invest Harness.

Первая линейка

Плагин Назначение Результат
provider-claude Claude API и поддерживаемая работа с аккаунтом через официальный клиент ConnectionSummary, model capability profile
provider-codex OpenAI API и согласованные account-based способы через Codex/Sign in with ChatGPT ConnectionSummary с mode и execution placement
provider-xai xAI API и исследуемый account flow официального клиента Доступные способы входа, проверенные capabilities
provider-generic Другие провайдеры через отдельные адаптеры; OpenAI-compatible не означает полную эквивалентность Нормализованный адаптер моделей
recurring-tasks Планирование регулярных задач из агента и формы Сохранённое Schedule, preview ближайших запусков
package-discovery Поиск плагинов, harness’ов, скиллов и шаблонов Доступные пакеты, совместимость, preview установки

Это план разработки, а не список уже установленных расширений. Account-based режим включается отдельно для каждой комбинации provider, deploymentMode, integrationPath. Если путь недоступен, UI показывает причину и API-вариант без скрытого переключения способа оплаты.

Авторизация провайдеров

Методы провайдера перечисляет adapter discovery; браузер не получает client secret или refresh token. OAuth flow хранит state, PKCE, nonce где применимо, redirect allowlist, срок и tenant/actor binding. Device flow соблюдает polling interval и slow_down. Отмена и expiry завершают flow. Refresh выполняется single-flight на connectionId с атомарной заменой refresh token. invalid_grant переводит Connection в reauth_required; повторные login попытки не создаются автоматически.

Credential placement: local_keychain, runner_private_store или server_vault. Переход между ними требует нового разрешённого связывания; локальная подписка не переносится на hosted Runner неявно. Для official-client-mode provider broker хранит статус и binding, а не извлекает закрытые токены клиента.

Провайдер Подтверждённая основа Решение для Invest Harness
Claude Официальные условия различают API и подписку, запрещают стороннему приложению собирать Claude.ai session tokens; допускают собственный вход пользователя в неизменённый официальный клиент API — базовый путь. Account plugin интегрирует официальный клиент в отдельном окружении после проверки условий; не подменяет его DSH OAuth-прокси
Codex / OpenAI Официально описаны app-server и отдельный Sign in with ChatGPT для планового использования Локальный/open-source app-server путь проверяется отдельно. Коммерческий hosted режим использует одобренную интеграцию Sign in with ChatGPT либо API; старый app-server login не считается разрешением на hosted сервис
xAI Официальный Grok Build описывает browser/device login и API key Наличие login у клиента не доказывает доступность произвольного DSH subscription adapter. Remote account mode gated до проверки; API доступен как отдельный режим
Другие Условия и протокол определяет провайдер Новый адаптер проходит ту же матрицу auth, scopes, quotas, refresh и deployment modes

Источники, проверенные 11.11.2026: Claude authentication and credential use, Codex app-server auth, Sign in with ChatGPT integration, Grok Build authentication.

Регулярные задачи

Плагин предоставляет preview_schedule, create_schedule, list_schedules, update_schedule, pause_schedule. Перед записью отображает timezone, следующие 5 occurrences, overlap и catch-up policy, ревизию агента и бюджет. Действия выполняются с actor-scoped разрешением schedules:write, не полномочиями администратора.

В cloud/on-prem единственный владелец времени — диспетчер. Локально тот же модуль расчёта работает в Local Scheduler с локальной БД; закрытое приложение не обещает фоновые запуски без установленного daemon. Расписание принадлежит одному placement. Перенос требует pause старого, handover cursor и activation нового; просто копировать active Schedule нельзя. В MVP blackout/exchange calendars не гарантируются; инвестиционный календарь добавляется отдельным адаптером позже.

Поиск и установка

Tools search_packages, inspect_package, resolve_dependencies, preview_install возвращают только доступные пользователю версии. Выдача включает kind, owner, digest, runtime compatibility, permissions и review status. MVP использует PostgreSQL full-text/trigram поиск, не отдельную поисковую инфраструктуру.

Описание найденного пакета — данные, не инструкция агенту. Поиск не запускает код. Установка создаёт новую AgentRevision после подтверждения изменения permissions; работающий Run не меняется. Результат resolve ещё раз проверяется при записи ревизии и назначении Runner.

Контракт адаптера провайдера

Adapter interface version 1: listAuthMethods, startAuth, pollAuth, cancelAuth, getConnectionStatus, disconnect, listModels, invoke, cancelInvocation. Инференс нормализует текст, tool calls, structured output и usage, сохраняя provider-specific metadata в ограниченном namespace. Capabilities определяют поддержку tools, stream, JSON Schema, images, cancellation и resume. Provider passwords не входят в этот интерфейс.

Подробные ручки: provider-api.md. Граничные случаи: provider-edge-cases.md.