package main import ( "context" pluginmgr "git.yeij.top/AskaEth/Cyrene_v2/internal/capability/plugin" "git.yeij.top/AskaEth/Cyrene_v2/internal/config/runtimeconfig" "git.yeij.top/AskaEth/Cyrene_v2/internal/logger" ) // wirePlugins 在能力注册表与被 gitignore 的 plugins.json 之上构建运行时插件管理器, // 再恢复每个已持久化的 MCP server,使已安装的插件在重启后依然存在。启动时连不上的 // server 只记日志并保留在 plugins.json 中(主人可重试或卸载它);启动绝不因某个 // 外部 server 不可用而失败。 func (a *app) wirePlugins(ctx context.Context) { path := runtimeconfig.DefaultPluginsPath(resolveDataDir(a.cfg)) a.plugins = pluginmgr.NewManager(a.caps, path, logger.WithSource(a.log, "capability/plugin")) a.plugins.Restore(ctx) }