Skip to content

[Epic] model identity 的設計錯誤:provider-first 的 BackendID 埋掉了模型 #182

Description

@kiki830621

Problem

Original text(逐字,未修改):
「有發現美一個model identify的方式錯了,第一個,所有差異的設計需要設計成多因子才能比較;第二個是,美一個模型應該是模型名(提供者),例如: whisper turbo (whisper kit) 這樣隸屬的關係才對,因為目前設計會過度著重同一個提供者,而忽略模型」
— Source: 使用者口述,2026-08-12

兩個相關但可分離的設計缺陷,開成 epic + 2 children。兩者有先後依賴:身分不先把「模型」從「提供者」拆開,比較就無法指名是哪個因子造成差異。

Type

refactor(repo 目前無 refactor label,暫掛 enhancement

現況(掃過 code 後的事實,非推測)

BackendIDSources/BestASRKit/Models/DataModels.swift:9)是 provider-first 的 enum:

case whisperKit = "whisperkit"
case whisperCpp = "whisper.cpp"
case fluidParakeet   = "fluid-parakeet"     // ┐
case fluidParaformer = "fluid-paraformer"   // ├ 同一個 provider(FluidAudio)三個 model
case fluidSenseVoice = "fluid-sensevoice"   // ┘
case mlxAudio = "mlx-audio"
case appleSpeech = "apple-speech"

兩個方向都失真:

失真方向 實例
同一 provider 的多個 model 被拆成多個 backend fluid-parakeet / fluid-paraformer / fluid-sensevoice
同一 model 的多個 provider 互相看不見 fluid-parakeetmlx-audio 的 parakeet — 原始碼註解明說要「stays distinguishable」,等於承認同一模型被當成兩個無關 backend

Impact(實測範圍)

  • BackendID 出現在 BestASRKit 13 個檔案、CLI 1 個、測試 4 個
  • Store key 是扁平字串 backend|model|quantization|language|chipSources/BestASRKit/Store/StoreProjection.swift:43
  • 身分外洩已經寫在 code 裡StoreProjection.swift:17-24 必須為 mlx-audio 開特例才能還原模型 —
    註解原文「mlx-audio rows are addressed family/size; whisper backends by size」。
    這行特例就是 provider-first 身分方案已經付出的代價。

Children

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions