跳转至
MIGRATED

XiVST 技术架构 v1.0 · 插件协议 + Marketplace 双形态

文档定位

  • 产品定位:Xisound L4 层"羲音生态"——车载声学行业的 VST · 算法 IP 第三种商业模式(开发者共治 · 7:2:1 分成)
  • 双形态:XiStudio 内嵌插件商店面板 + 公网 marketplace.xisound.com 独立站点
  • 对标:Steinberg VST(音乐)· Apple App Store · Figma Plugin
  • 上游D0 产品矩阵 V1.1 §3.2(XiVST 定位)· D3-FE-ARCH-001 §5.7
  • 下游D3-FE-PLAN-008 XiVST Marketplace Beta 实现 plan

1. 产品定位与目标

1.1 产品定位

XiVST = 羲音生态(Y1Q1 Seed · Y1Q4 Marketplace Beta 公开上线 · Y5 目标 5000 款插件 / 年 GMV 3 亿+)。车载声学行业的 VST:

  • XVST 协议(开放规范)· 定义插件 manifest / 生命周期 / 通信 / 沙箱
  • XVST SDK(C/C++/Python 开发工具链)· 开发者在本地编写插件并本地调试
  • XVST Marketplace(嵌入 XiStudio 内的插件商店 + 公网站点)· 发布 / 浏览 / 安装
  • 三级认证(Official ◆ / Verified ✓ / Community ⚪)· 不同级别享受不同曝光与分成
  • WASM + 原生 C++ 双栈(桌面调试用 WASM · 车规部署用原生 C++ · DSP 芯片端进一步 AOT 编译)

1.2 核心能力(双形态共用)

  1. Plugin Browser:浏览 / 搜索 / 分类 / 认证级别筛选 / 排行榜
  2. Plugin Detail:详情 · 评分 · 版本 · 依赖 · 截图/视频 · 开发者信息
  3. Install Manager(仅内嵌):安装到当前工程 / 版本锁定 / 升级提醒
  4. Developer Console(仅公网):上架 · 审核进度 · 收益报表 · 用户反馈
  5. XVST SDK Docs(仅公网):开发者文档站
  6. Review System:用户评分 + 评论 + 举报
  7. Payment & Revenue(仅公网):7:2:1 分成(开发者 70% / 平台 20% / 芯片伙伴 10%)

1.3 目标用户

用户类型 场景 XiVST 提供的能力
Tier1 / OEM 采购 在 XiStudio 内采购补足算法库 内嵌 Plugin Browser + 一键安装
独立算法开发者 ⭐ 上架插件赚 70% 分成 Developer Console + SDK + 收益报表
声学工作室 发布品牌插件 + 建立技术影响力 Verified 级别申请 + 认证标识 + 推荐曝光
院校 / 开源贡献者 学习 + 免费发布 Free Tier 插件 Community 级别 + Free Tier + 公开源码引流

1.4 版本矩阵

版本 时点 覆盖能力
Seed Y1Q1 XVST 协议 v0.1 + Runtime 原型(仅内部 dog-food)
Growth Beta Y1Q3 SDK 开发者内测 · Marketplace 骨架
Marketplace 公开上线 Y1Q4 双形态完整可用 · 500 开发者 / 200 插件 · 首批 7:2:1 分成结算
Scale Y2H1 跨芯片架构 v0.2 · 1000 开发者 · 支付闭环
v1.0 GA Y2H2 首批 Official ◆ 级插件 · 2000+ 插件
v2.0 Y3 5000+ 插件 · 生态护城河形成 · 国际化(xvst.dev)

2. 架构总览

2.1 双形态架构

graph TB
    subgraph Embedded["内嵌形态 · xi-studio/algo-library/xivst"]
        EB[Plugin Browser]
        ED[Plugin Detail]
        EI[Install Manager]
    end

    subgraph Marketplace["公网形态 · marketplace.xisound.com"]
        MB[Plugin Browser]
        MD[Plugin Detail]
        MDC[Developer Console]
        MSDK[SDK Docs]
        MR[Review System]
    end

    subgraph Shared["共享数据 / 协议"]
        XVST[XVST 协议<br/>manifest/lifecycle/runtime]
        API[Plugin Registry API]
        Payment[Payment & Revenue API]
        Runtime[XVST Runtime<br/>WASM + 原生 C++]
    end

    subgraph Packages["packages/"]
        VSTEmb["@xi-apps/xi-vst/embedded"]
        VSTMP["@xi-apps/xi-vst/marketplace"]
        Protocol["@xi/protocol/xvst"]
    end

    subgraph Backend["Backend"]
        Registry[Plugin Registry DB]
        CDN[Plugin CDN<br/>S3/OSS]
        Audit[审核队列]
        PaymentGateway[支付网关<br/>Stripe/支付宝]
    end

    EB --> API
    MB --> API
    EI --> Runtime
    MDC --> Audit
    Payment --> PaymentGateway
    API --> Registry
    Registry --> CDN

    classDef embedded fill:#E6F7FF,stroke:#1890FF,stroke-width:2px
    classDef marketplace fill:#F0E6FA,stroke:#9D4EDD,stroke-width:2px
    classDef shared fill:#FFF4E6,stroke:#D4A574,stroke-width:3px
    classDef be fill:#F5F2EA,stroke:#6B7280,stroke-width:1px
    class EB,ED,EI embedded
    class MB,MD,MDC,MSDK,MR marketplace
    class XVST,API,Payment,Runtime shared
    class VSTEmb,VSTMP,Protocol be
    class Registry,CDN,Audit,PaymentGateway be
    class Embedded,Marketplace,Packages xySgL4; class Shared,Backend xySgL3;

2.2 双构建产物(vite 双 config)

apps/xi-vst/
├── src/
│   ├── embedded/             # 被 xi-studio 内嵌的面板
│   │   ├── index.ts          # 导出 <VSTPanel>
│   │   ├── VSTPanel.vue
│   │   └── views/...
│   ├── marketplace/          # 独立公网站点入口
│   │   ├── main.ts
│   │   ├── App.vue
│   │   └── views/...
│   └── shared/               # 两形态共用
│       ├── components/
│       ├── stores/
│       ├── services/
│       └── types/
├── vite.config.embedded.ts   # 产出组件库
└── vite.config.marketplace.ts # 产出独立 SPA + SSG

2.3 技术栈

选型 说明
框架 Vue 3.4+ 两形态共用
内嵌形态 组件库模式 · @xi-apps/xi-vst/embedded 导出 <VSTPanel> XiStudio import
公网形态 Vite 5 + vue-router 4 + vite-ssg(SEO) 独立 SPA
UI @xi/ui-kit D3-FE-ARCH-003
协议 @xi/protocol/xvst 独立子目录 · 三端契约
支付 Stripe(国际) + 支付宝/微信(国内) 后端处理 · 前端仅跳转
视频 Vimeo / 自建 CDN 插件 demo 视频

3. XVST 协议规范(权威 · Y1Q1 Seed 版 v0.1)

3.1 Plugin Manifest

// @xi/protocol/xvst/manifest.ts
import { z } from 'zod'

export const XVSTManifestSchema = z.object({
  // 基础信息
  xvstVersion: z.string(),          // "0.1" · 协议版本
  id: z.string(),                   // 反向域名如 "com.acme.anc-pro"
  name: z.string(),
  version: z.string(),              // SemVer
  author: z.object({
    name: z.string(),
    email: z.string().email().optional(),
    url: z.string().url().optional(),
  }),
  description: z.string(),
  keywords: z.array(z.string()),
  license: z.string(),              // MIT / Proprietary / Custom

  // 分类(对齐 20 类前端 categoryDefinitions)
  category: z.enum([
    'gain', 'delay', 'filter', 'frequency', 'dynamics', 'logic', 'ai',
    'signalManagement', 'mixing', 'statistics', 'voice', 'soundDesign',
    'debug', 'sampleRate', 'scheduling', 'paramInteraction',
    'canvasControl', 'spatialAudio', 'source', 'sink',
  ]),

  // 技术规格
  modules: z.array(z.object({
    typeName: z.string(),           // 模块类型代号
    entry: z.string(),              // 入口文件(如 "dist/anc_pro.wasm")
    ports: z.object({
      inputs: z.array(PortDefinitionSchema),
      outputs: z.array(PortDefinitionSchema),
    }),
    params: z.array(ParamDefinitionSchema),
    runtime: z.object({
      target: z.enum(['wasm', 'native-x86_64', 'native-arm64', 'dsp-xidsp']),
      minRuntime: z.string(),       // 最低 XVST Runtime 版本
      maxCpuLoad: z.number(),       // 预估 CPU 负载(%)
      maxMemoryMB: z.number(),
    }),
    tuningUi: z.object({
      jsonUri: z.string(),          // TuningUIDocument 引用
    }).optional(),
  })),

  // 依赖
  dependencies: z.record(z.string()).optional(),  // 其他 XVST 插件

  // 认证信息(由 Xisound 后端填充)
  certification: z.object({
    level: z.enum(['official', 'verified', 'community']),
    signedBy: z.string(),
    signedAt: z.number(),
    signature: z.string(),          // 数字签名
  }).optional(),

  // 商业信息
  pricing: z.object({
    model: z.enum(['free', 'paid-once', 'subscription', 'usage-based']),
    price: z.number().optional(),
    currency: z.string().default('USD'),
    trialDays: z.number().optional(),
  }),

  // 资源
  icon: z.string().url(),
  screenshots: z.array(z.string().url()).optional(),
  demoVideo: z.string().url().optional(),
  homepage: z.string().url().optional(),
  repository: z.string().url().optional(),
})

export type XVSTManifest = z.infer<typeof XVSTManifestSchema>

3.2 Plugin Lifecycle

// @xi/protocol/xvst/lifecycle.ts
export interface PluginLifecycleHooks {
  // 安装阶段
  onInstall(context: InstallContext): Promise<void>
  onUninstall(context: UninstallContext): Promise<void>
  onUpdate(oldVersion: string, newVersion: string, context: UpdateContext): Promise<void>

  // 运行阶段(每个模块实例)
  onModuleInstantiate(moduleId: string, params: any): Promise<ModuleInstance>
  onModuleDispose(moduleId: string): Promise<void>

  // 参数变更
  onParamUpdate(moduleId: string, paramKey: string, value: any): void

  // 沙箱通信(WASM 形态)
  onHostMessage(msg: HostMessage): void
  postToHost(msg: PluginMessage): void
}

3.3 Runtime 加载机制

stateDiagram-v2
    [*] --> Discovered: Marketplace 发现插件
    Discovered --> Installed: 点击安装 + 下载 + 签名校验
    Installed --> Loaded: XiStudio/XiTune 启动时加载 manifest
    Loaded --> Instantiated: 用户拖到 LinkCanvas
    Instantiated --> Running: 链路启动后 Process 调度
    Running --> Paused: 链路暂停
    Paused --> Running
    Running --> Disposed: 用户删除模块
    Loaded --> Updated: 升级版本
    Installed --> Uninstalled: 用户卸载
    Uninstalled --> [*]

3.4 WASM + 原生 C++ 双栈

环境 使用形态 目的
开发者本地桌面调试 WASM 跨平台 · 快速迭代 · 沙箱隔离
XiStudio 浏览器运行 WASM 无需本地工具链 · 热更新
车规 DSP 部署 原生 C++ → AOT 编译到 XiDSP 实时性 + AEC-Q100
桌面 XiStudio 高性能需求 原生 C++(通过 pysidecar 调用) 最低延迟

SDK 构建流程

# 开发者在本地
xvst-sdk init my-plugin
xvst-sdk build --target wasm        # 产出 my_plugin.wasm
xvst-sdk build --target native-arm64 # 产出 my_plugin.so
xvst-sdk test                        # 本地跑单测
xvst-sdk publish                     # 上传到 Marketplace(走审核流程)

3.5 沙箱安全

  • WASM 沙箱:浏览器自带 · 插件无法访问 DOM / localStorage / 网络(除非 manifest 声明权限)
  • 权限模型
    • network.http(默认 false)
    • network.websocket(默认 false)
    • storage.local(默认 false)
    • signals.subscribe(订阅 Signal I/O · 默认 false)
  • 数字签名:Official ◆ 级别必须用 Xisound 私钥签名 · Verified ✓ 用开发者私钥 + Xisound 审核
  • 版本锁定:工程中安装 my-plugin@1.0.0 · 后续插件作者发 1.0.1 · 用户可选升级或保持锁定

4. 三级认证体系

级别 标识 条件 曝光权重 分成比例
Official ◆ 🟡 金色 Xisound 官方或合作伙伴出品 · 严格代码审查 + AEC-Q100 认证 1.0(最高) 100% 开发者 / 0% 平台(Xisound 自研或战略合作)
Verified ✓ 🟢 绿色 提交代码审查 + 安全扫描 + 测试覆盖率 ≥ 70% 0.7 70% / 20% / 10%(7:2:1 标准分成)
Community ⚪ ⚪ 灰色 自助发布 · 仅自动化安全扫描 · 免费或低价 0.3 85% / 15% / 0%(简化分成 · 无芯片伙伴)

升级路径:Community → 申请 Verified → 通过后升级 → Official 需 Xisound 官方邀请


5. 目录结构

apps/xi-vst/
├── src/
│   ├── embedded/                 # XiStudio 内嵌形态
│   │   ├── index.ts              # 导出 <VSTPanel>
│   │   ├── VSTPanel.vue
│   │   └── views/
│   │       ├── PluginBrowserView.vue
│   │       ├── PluginDetailView.vue
│   │       └── InstallManagerView.vue
│   ├── marketplace/              # 独立公网站点
│   │   ├── main.ts
│   │   ├── App.vue
│   │   ├── router/index.ts       # /, /browse, /plugin/:slug, /developer, /docs
│   │   ├── layouts/
│   │   │   ├── MarketplaceLayout.vue
│   │   │   └── DeveloperLayout.vue
│   │   └── views/
│   │       ├── LandingView.vue
│   │       ├── BrowseView.vue
│   │       ├── PluginDetailView.vue
│   │       ├── CategoryView.vue
│   │       ├── SearchView.vue
│   │       ├── DeveloperDashboardView.vue
│   │       ├── PluginSubmitView.vue
│   │       ├── RevenueView.vue
│   │       ├── AnalyticsView.vue
│   │       └── SDKDocsView.vue
│   └── shared/
│       ├── components/
│       │   ├── plugin/
│       │   │   ├── PluginCard.vue
│       │   │   ├── PluginScreenshots.vue
│       │   │   ├── RatingStars.vue
│       │   │   └── CertificationBadge.vue
│       │   ├── review/
│       │   │   ├── ReviewList.vue
│       │   │   └── ReviewForm.vue
│       │   └── common/
│       │       ├── CategoryFilter.vue
│       │       └── SearchBar.vue
│       ├── stores/
│       │   ├── usePluginStore.ts
│       │   ├── useInstallStore.ts    # 仅内嵌
│       │   ├── useDeveloperStore.ts  # 仅公网
│       │   └── useReviewStore.ts
│       ├── services/
│       │   ├── pluginRegistryApi.ts
│       │   ├── xvstRuntime.ts        # 插件加载/卸载
│       │   └── paymentApi.ts         # 仅公网
│       └── types/
│           ├── Plugin.ts
│           ├── Review.ts
│           └── RevenueReport.ts
├── vite.config.embedded.ts
├── vite.config.marketplace.ts
├── tsconfig.json
├── package.json
└── README.md

6. Store 设计(关键)

6.1 usePluginStore(两形态共用)

export const usePluginStore = defineStore('xi-vst-plugins', () => {
  const plugins = ref<Plugin[]>([])
  const featured = ref<Plugin[]>([])
  const categories = ref<CategoryStat[]>([])
  const searchQuery = ref('')
  const filters = ref<PluginFilters>({ category: null, certification: null, priceRange: null })

  async function browse(options?: BrowseOptions): Promise<Plugin[]>
  async function search(query: string): Promise<Plugin[]>
  async function getBySlug(slug: string): Promise<Plugin>
  async function getFeatured(): Promise<Plugin[]>
  async function getTrending(): Promise<Plugin[]>
  async function rate(pluginId: string, rating: number, comment?: string): Promise<void>

  return { plugins, featured, categories, searchQuery, filters, browse, search, ... }
})

6.2 useInstallStore(仅内嵌)

export const useInstallStore = defineStore('xi-vst-install', () => {
  const installed = ref<InstalledPlugin[]>([])
  const installing = ref<Set<string>>(new Set())

  async function install(pluginId: string, version?: string): Promise<void>
  async function uninstall(pluginId: string): Promise<void>
  async function update(pluginId: string, toVersion: string): Promise<void>
  async function listInstalled(): Promise<InstalledPlugin[]>
  function isInstalled(pluginId: string): boolean

  return { installed, installing, install, uninstall, update, ... }
})

6.3 useDeveloperStore(仅公网)

export const useDeveloperStore = defineStore('xi-vst-developer', () => {
  const myPlugins = ref<DeveloperPlugin[]>([])
  const revenue = ref<RevenueReport | null>(null)
  const analytics = ref<AnalyticsData | null>(null)

  async function submitPlugin(manifest: XVSTManifest, assets: File[]): Promise<SubmitResult>
  async function listMyPlugins(): Promise<DeveloperPlugin[]>
  async function updatePlugin(id: string, newVersion: string, assets: File[]): Promise<void>
  async function getRevenue(period: 'week' | 'month' | 'quarter'): Promise<RevenueReport>
  async function getAnalytics(pluginId: string): Promise<AnalyticsData>
  async function requestVerification(pluginId: string): Promise<void>

  return { myPlugins, revenue, analytics, submitPlugin, listMyPlugins, ... }
})

7. 与后端的接口契约

7.1 HTTP API(关键端点)

端点 方法 用途
/api/xvst/plugins GET 浏览(支持 filter / pagination)
/api/xvst/plugins/:slug GET 详情
/api/xvst/plugins/:slug/install POST 安装(内嵌形态)
/api/xvst/plugins/:slug/reviews GET/POST 评论
/api/xvst/search GET 全文搜索
/api/xvst/developer/plugins GET/POST 开发者的插件列表 / 提交
/api/xvst/developer/revenue GET 收益报表
/api/xvst/developer/analytics/:pluginId GET 分析数据
/api/xvst/audit/submit POST 提交审核
/api/xvst/payment/checkout POST 创建支付单

7.2 XVST Runtime 本地 API(嵌入 XiStudio)

  • xvstRuntime.loadPlugin(pluginId, version) → 下载 WASM · 校验签名 · 实例化
  • xvstRuntime.unloadPlugin(pluginId)
  • xvstRuntime.listLoaded() → 当前工程已加载的插件

8. SEO 优化(仅 Marketplace)

参考 D3-FE-ARCH-006 §3.5

  • 预渲染(Y1):用 vite-ssg 预渲染 Landing + 热门 plugin 详情页
  • SSR(Y2+):如流量 > 10万 PV/日 · 迁移到 Nuxt 3
  • sitemap.xml:插件 detail 页自动生成
  • 结构化数据(JSON-LD):每个 plugin 页 emit SoftwareApplication schema.org 标记
  • i18n:中英文双语站点(中文 marketplace.xisound.com · 英文 xvst.dev)

9. 监控指标

维度 指标 目标(Y1Q4 Marketplace 公开上线时)
生态规模 开发者注册 500+
已上架插件 200+
月活开发者 100+
使用量 Marketplace DAU 1000+
插件日安装量 50+
插件总下载 10000+
商业 月 GMV ¥50万+(Y1Q4 起步)
平均客单价 ¥500-2000
质量 Verified 级插件占比 ≥ 20%
严重 bug 率 < 1%

10. DQ 与风险

10.1 新增 DQ

DQ 编号 问题 建议
DQ-VST-01 国际化域名 xvst.dev 是否 Y1 就上 Y1Q4 marketplace.xisound.com 中文版上线 · Y2H1 上 xvst.dev 国际版
DQ-VST-02 支付网关先 Stripe 还是支付宝 Y1 先支付宝/微信(国内市场优先)· Y2 加 Stripe(国际)
DQ-VST-03 插件审核人工 vs AI 自动 v1.0 人工(3 个审核员)· v2.0 AI 辅助筛查
DQ-VST-04 开源插件是否强制 GPL 兼容 不强制 · 但 manifest 声明 license · Copyleft 与 proprietary 混用时提示
DQ-VST-05 XVST 协议向后兼容策略 至少 2 个 major 版本并行支持 · 废弃提前 180 天公告

10.2 风险

风险 缓解
生态冷启动难(鸡和蛋问题) Y1 先自研 20+ Official 插件引流 · 邀请 5-10 个合作伙伴首批入驻
恶意插件(窃取算法 IP / 安全漏洞) WASM 沙箱 + 签名校验 + 代码审查(Verified+)+ 举报机制
支付合规(跨境分成税务) 聘请国际税务顾问 · 开发者自行 KYC
插件与 XiDSP 车规认证冲突 车规部署前强制走 XiTest 完整回归 · Official 级强制 AEC-Q100 测试

11. 版本与变更记录

版本 日期 作者 说明
v1.0 2026-05-08 work-cline 初稿 · XVST 协议 v0.1 · 双形态架构 · 三级认证 · WASM/原生双栈 · 7:2:1 分成 · SEO 优化

附录 A · 引用