配置与私有数据
读写本插件的配置、KV 小状态、私有数据目录。
配置读写
python
host.get_plugin_config(plugin_id: str) -> dict
host.set_plugin_config_value(plugin_id: str, key: str, value: Any) -> bool
host.save_plugin_config(plugin_id: str, config_dict: dict) -> bool- 未设置的键按
config_schema的default补齐。 set_plugin_config_value/save_plugin_config会持久化 + 热同步调用插件的update_config(delta)。- 兼容别名:
getPluginConfig/setPluginConfigValue/savePluginConfig。
变更广播契约
配置变更时,宿主在 Qt 主线程广播信号 pluginConfigChanged(plugin_id):
- Python 实例:自动触发
update_config(delta)。 - QML 组件:必须用
Connections监听它才能无感热刷新——bridge.getPluginConfig()是瞬态函数调用,不是响应式属性,只读一次不会更新。 标准写法见 UI 扩展(QML)。
边界(重要)
- 只读写本插件配置,禁止改其它插件或主程序全局设置。
- 宿主解析 ASR / MT / TTS 与保存云端官方设置(混元 / MiMo / DashScope / Kokoro)时, 只把官方引擎自己的字段热更新到对应官方插件上。其它插件只读写
plugins_config/<本插件 id>,不会收到别家的api_key/base_url/model等。 插件 id 里出现厂商名字也不会被收成官方短名。 - 空字符串不会在
update_config热更新里冲掉插件已持有的值。
私有数据目录
python
host.get_plugin_data_dir(plugin_id: str) -> str- 路径:
<安装目录>/data/plugins/<plugin_id>/(自动创建)。 - 不走用户主目录——避免中文用户名 / OneDrive 重定向把路径带偏。
- 缓存、导出文件、本地库、克隆音色参考音频都放这里。
- 快捷方法:
self.get_data_dir()(BasePlugin提供)。
KV 小状态
python
host.get_plugin_kv(plugin_id: str, key: str, default: Any = None) -> Any
host.set_plugin_kv(plugin_id: str, key: str, value: Any) -> bool
host.delete_plugin_kv(plugin_id: str, key: str) -> bool- JSON 文件持久化,适合小状态:窗口位置、最近记录、token 缓存指针、一次性标记。
- 值必须 JSON 可序列化;写失败返回
False,不抛异常。 - 不要用 KV 存大块二进制/大 JSON——用数据目录里的文件。
存什么、放哪
| 内容 | 位置 |
|---|---|
| 配置项(用户可改的参数) | config_schema + self._config |
| 小状态(位置/计数/标记) | host.get_plugin_kv() |
| 缓存 / 导出 / 数据文件 / 参考音频 | self.get_data_dir() |
| 模型权重 | 由宿主管理,见 模型工件 |
凭据类:不要在插件里硬编码私钥或个人路径;让用户在
config_schema里填 ("type": "password", "is_secret": true)。
