Skip to content
TransBoxTransBox

架构与插件生命周期

TransBox 以流水线为中心:音频或字幕进来 → 识别 → 翻译 → 展示/朗读。插件挂在明确的扩展点上。


1. 流水线与中间件插入点

[音频捕获 / 浏览器字幕]


 process_audio          ← middleware


      VAD 断句


      ASR 识别           ← asr Provider


 process_transcript     ← middleware


 术语 Prompt 注入 + MT   ← mt Provider + glossary


 process_translation    ← middleware

        ├──► UI 字幕
        └──► TTS 朗读    ← tts Provider


        process_tts_audio  ← middleware


            声卡播放

中间件按 priority 升序执行(数字越小越先跑,默认 100)。单个中间件抛异常会被隔离,不拖垮整条链。

术语库实际顺序:翻译前注入提示词 → mt.translate(...) → 中间件改译文 → 术语强制替换。


2. 插件发现

启动时扫描:

  1. 内置 manifests(builtin 引擎、默认主题、浏览器字幕桥等)
  2. 应用/项目 extensions/*/
  3. %APPDATA%/transbox/extensions/*/
  4. Steam:steamapps/workshop/content/1316080/*/(每子目录需有 mod.json

清单文件名:优先 mod.json,回退 manifest.json。没有 id 的清单会被拒绝。

用户在界面开关的状态会写入 QSettings(plugins_state),下次启动恢复。


3. 启用 / 禁用行为(代码事实)

类型启用禁用
glossary注册进全局术语管理器注销
i18n切换到该语言;与其他第三方语言包互斥若当前是该语言则回退 zh-CN
theme (full)应用主题;与其他 full 主题互斥回退默认主题
同插槽 UI 扩展占用同一插槽时互斥停用他人移除该插槽组件
asr/mt/tts可设为当前引擎若是活跃引擎则 fallback 到其它已启用引擎
middleware挂入中间件管理器卸载
内置默认主题禁止禁用
内置浏览器字幕桥联动 Web 服务开关联动关闭服务

4. Python 类加载

asr / mt / tts / middleware

  1. 解析 entrypoint相对路径.py:ClassName(无冒号则 ClassName="Plugin"
  2. importlib 从文件加载模块
  3. 要求类继承 BasePlugin 子类
  4. cls(manifest)initialize(config)
  5. 实例缓存;卸载时 shutdown()

配置:

  • UI 用 config_schema 渲染表单
  • 保存进 QSettings plugins_config/<id>
  • Python 侧在 self._config 读取;update_config 热更新

5. 与 UI 的关系

  • 字幕、设置、历史等窗口通过插槽加载 QML(见 UI 插槽)。
  • has_settings_tab: true 时,启用后设置中心会多出一个 Tab(tab_id / tab_title)。
  • 引擎类插件无需写设置 UI:声明 config_schema 即可自动生成表单。

6. 安全模型(务必阅读)

  • 无沙箱:Python 插件与主程序同进程、同权限。
  • 数据类(theme/glossary/i18n)风险较低;脚本类请审计后安装。
  • 工坊提供安全须知与「一键停用全部第三方扩展」。

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