src/docs/plugin-sdk-development.md
plugin.json 到运行时服务实例的生命周期。STranslate.Plugin/IPlugin.cs
Init(IPluginContext)、GetSettingUI()、Dispose()。STranslate.Plugin/IPluginContext.cs
HttpService、Logger、AudioPlayer、Snackbar、Notification、配置存储、主题应用。STranslate.Plugin/ITranslatePlugin.cs
TranslatePluginBase、LlmTranslatePluginBase、DictionaryPluginBase。STranslate.Plugin/IOcrPlugin.cs、ITtsPlugin.cs、IVocabularyPlugin.cs
STranslate.Plugin/PluginMetaData.cs、Service.cs
Plugins/*/Main.csPlugins/*/plugin.jsonplugin.json、执行 dll、图标资源。PluginManager 读取 plugin.json,加载程序集并定位实现 IPlugin 的类型。ServiceManager 基于 PluginMetaData 创建 Service:绑定 Plugin 实例与 PluginContext。Service.Initialize() 调用 Plugin.Init(Context),插件读取自身配置并准备可执行状态。GetSettingUI(),插件返回自身配置面板控件。Init 内调用 context.LoadSettingStorage<T>() 读取配置。context.SaveSettingStorage<T>() 持久化。Service.Dispose() 调用 Context.Dispose() 与 Plugin.Dispose() 释放资源。plugin.json 规范PluginMetaData 对应):
PluginID:插件唯一 ID(升级与去重依据)。NameDescriptionAuthorVersionWebsiteExecuteFileNameIconPathPluginMetaData:插件静态元信息 + 运行时路径与类型。Service:插件实例容器,含 ServiceID、DisplayName、Options。TranslateRequest / TranslateResult、DictionaryResult、OcrResult、VocabularyResult:能力结果模型。TranslatePluginBase。LlmTranslatePluginBase(内置 Prompt 选择机制)。DictionaryPluginBase。IOcrPlugin、ITtsPlugin、IVocabularyPlugin。STranslate.Plugin/IPlugin.csSTranslate.Plugin/IPluginContext.csSTranslate.Plugin/ITranslatePlugin.csSTranslate.Plugin/IOcrPlugin.csSTranslate.Plugin/ITtsPlugin.csSTranslate.Plugin/IVocabularyPlugin.csSTranslate.Plugin/PluginMetaData.csSTranslate.Plugin/Service.csPlugins/STranslate.Plugin.Translate.OpenAI/Main.csPlugins/STranslate.Plugin.Ocr.OpenAI/Main.csPlugins/STranslate.Plugin.Tts.MicrosoftEdge/Main.csPlugins/STranslate.Plugin.Vocabulary.Eudict/Main.csMain.cs。plugin.json 与图标。Init 中加载配置并在设置 UI 中可编辑。Settings 模型,再在 GetSettingUI() 对应 VM 中读写并调用 SaveSettingStorage。TranslateAsync / RecognizeAsync / SaveAsync 应尊重 CancellationToken。PluginID 稳定,升级仅提升 Version,避免被识别为新插件。