Skip to content

轉錄呼叫必須顯式指定模型:規定未落地,且 async 模式下選型不可見也查不回 #191

Description

@kiki830621

Problem

原文(逐字):
「bestAsr我記得我有規定不能有預設,必須顯式寫出模型名稱,這開成一個issue寫進repo的
.claude/rules裡面,然後直接解掉」
— Source: 使用者,2026-08-25

呼叫轉錄時必須顯式寫出模型名稱,不得依賴 router 的隱式選擇。

這條規定目前不存在於 repo 任何地方 —— CLAUDE.md 無、.claude/rules/ 目錄不存在、
openspec/specs/ 也沒有。查證於 2026-08-25。

Type

bug(規則缺失導致的實際事故,非單純 docs)

Priority

P1

Expected

  1. .claude/rules/ 建立一條規則:呼叫轉錄一律顯式指定 model,並說明為什麼
  2. 呼叫端(skill / agent / 文件範例)全部帶上顯式 model
  3. 未顯式指定時,選型結果必須在所有呼叫模式下可見 —— 包含 async

Actual

事故:八堂 3 小時錄音用了 CER 17% 的模型而不自知

2026-08-25 批次轉錄八堂中文講課錄音(各約 3 小時),全部用 async=true、只指定
backend="whisperkit"、未指定 model。結果七堂的時間軸塌成 30 秒固定窗格、漏 11–19%
語音(詳見 #190)。

事後才發現 router 選的是 base(CER 17.0%)。

選型在 async 模式下不可見,且事後查不回

呼叫模式 選型是否揭露
同步 ✅ 回傳含 Selected whisperkit base (default) [measured] because: ...
async=true ❌ 只回 {"job_id": "...", "status": "running"}
事後 transcribe_status unknown job(見 #189

三條路都拿不到「這份逐字稿是用哪個模型轉的」。對長時任務而言 async 是必要的用法,
於是最需要留痕的情境反而完全沒有留痕

與現行 spec 的張力

openspec/specs/asr-routing/spec.md:635 明確要求 router 在無 benchmark 記錄時
「select the most accurate model in the active profile's candidate list」。

benchmark-driven routing 是本專案的價值主張,本 issue 不主張廢除它。主張的是:

  • router 的推薦是建議,呼叫端要顯式承接(把推薦值寫進呼叫),而不是讓它隱式生效
  • 任何模式下選型都要可見;async 至少要把選型寫進輸出檔的 sidecar 或首行註記

Impact

  • 產出物無法回溯用了什麼模型。逐字稿看起來正常,但它是 CER 17% 還是 CER 2% 的產物,
    事後無從得知
  • medium profile 下 router 以速度排序,長音檔會選到分段會塌的模型,而使用者不會知道
  • 下游若拿逐字稿做內容判斷(教材校對、會議紀錄核對),錯誤率與遺漏都被靜默繼承

Strategy

  • .claude/rules/explicit-model.md —— 規則本體,含本次事故的失敗史
  • CLAUDE.md 指向該規則
  • plugins/bestasr/skills/*/SKILL.md 的呼叫範例全部補上顯式 model
  • async 回傳補上選型(或寫進輸出 sidecar)—— 若工程量大則拆子 issue

相關

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

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions