第三方插件运行时具备与主程序相同的本地用户权限,因此必须严格遵守以下边界。
一、安全边界
- 配置隔离:仅可通过
getPluginConfig/setPluginConfig访问本插件私有命名空间,禁止读写主程序或其它插件的数据。 - 文件沙箱:长期数据只写入
pluginDataDir()返回的plugins/data/<pluginId>/;用户显式选择的导入 / 导出文件走chooseOpenFile/chooseSaveFile。 - 网络必须走中继:禁止自行使用 QNetworkAccessManager / 原生 socket 直连网络,所有出网必须调用
egressNetworkRequest,并声明network_access与network_domains、取得用户授权。 - 线程托管:禁止自行
new QThread/QtConcurrent::run,统一使用createManagedThread。 - 内部模块禁区:禁止通过
findChild/qobject_cast/ 反射获取 MainWindow、CoreManager、ConfigManager、ApiClient、LicenseService 等内部单例。
二、禁止事项(Red Line)
- 严禁以任何方式获取主程序内部单例指针;
- 严禁绕过 HostApi 直接读写主程序配置文件;
- 严禁向用户索取 7AA7 正版许可密钥、账户密码等敏感信息;
- 严禁插件自行直连网络,出网必须走
egressNetworkRequest; - 严禁自行创建游离线程;
- 严禁劫持或吞掉主程序全局快捷键事件(对话类输入框须遵循「回车发送 / Shift+Enter 换行」约定)。
三、AI / 大模型 API 政策
工具箱 HostApi 不提供 AI 推理网关,也不托管任何大模型 API-Key。
- 工具箱内置的 AI 能力属于官方自研插件的私有实现,第三方插件无法、也不得复用;
- 第三方插件如需使用大模型能力,必须自行:
- 向模型服务商申请自己的 API-Key;
- 在
extra.network_domains声明服务商域名并取得用户网络授权; - 通过
egressNetworkRequest中继访问服务商 HTTPS 接口; - 自行承担 API 资费、数据合规与法律责任。
违反以上红线的插件将被拒绝加载或列入黑名单。当前正式版客户端已启用强制签名校验,未经官方工坊签名的第三方插件一律无法加载。