Skip to content

配置与私有数据 ​

读写本插件的配置、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)。


相关 ​

TransBox - 赋能全人类无界限跨语言交流