API Go
:::note В разработке
Go-реализация go.dagstack.dev/plugin-system находится в дорожной карте. Публикация первого релиза — после стабилизации Python-реализации и завершения кросс-языкового тестирования.
:::
Целевой интерфейс
Подход к API определён в ADR-0001. Ключевые типы в Go-версии:
package pluginsystem
// Плагин — объект, который реализует Plugin-интерфейс.
type Plugin interface {
Setup(ctx PluginContext) error
Teardown() error
}
// Реестр — хранит загруженные плагины, управляет жизненным циклом.
type Registry interface {
Plugins() []*RegisteredPlugin
Get(kind, name string) (Plugin, error)
SetupAll() error
TeardownAll() error
}
// Обнаружение — точка входа.
func Discover(path string, opts ...DiscoverOption) (Registry, error)
Что будет в справочнике, когда он появится
- Публичные символы из
go.dagstack.dev/plugin-system. - Интерфейсы видов плагинов (
LLM,VectorStore,Chunker,Tool, ...). - Диспетчеры (
BroadcastCollectDispatcher,ChainDispatcher,CapabilityDispatcher). - Стандартные ресурсы (
Clock,Rng,BlobStore,HTTPClient) + тестовые реализации. - MCP-адаптеры для out-of-process плагинов.
Генерация справочника — godoc с выводом в markdown, коммит в site/docs/api/go/.
Альтернативы, пока Go-биндинг недоступен
- Рассматривать плагины как внешние сервисы через MCP HTTP. Плагин на Python запускается как отдельный HTTP-сервис, Go-приложение вызывает его через стандартный MCP-клиент.
- Использовать gRPC/REST-мосты с собственной реализацией сериализации манифестов (не рекомендуется — теряется весь контракт).