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
.claude/rules/ 建立一條規則:呼叫轉錄一律顯式指定 model,並說明為什麼
- 呼叫端(skill / agent / 文件範例)全部帶上顯式 model
- 未顯式指定時,選型結果必須在所有呼叫模式下可見 —— 包含 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
相關
Problem
呼叫轉錄時必須顯式寫出模型名稱,不得依賴 router 的隱式選擇。
這條規定目前不存在於 repo 任何地方 ——
CLAUDE.md無、.claude/rules/目錄不存在、openspec/specs/也沒有。查證於 2026-08-25。Type
bug(規則缺失導致的實際事故,非單純 docs)
Priority
P1
Expected
.claude/rules/建立一條規則:呼叫轉錄一律顯式指定model,並說明為什麼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_statusunknown 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 不主張廢除它。主張的是:
Impact
事後無從得知
mediumprofile 下 router 以速度排序,長音檔會選到分段會塌的模型,而使用者不會知道Strategy
.claude/rules/explicit-model.md—— 規則本體,含本次事故的失敗史CLAUDE.md指向該規則plugins/bestasr/skills/*/SKILL.md的呼叫範例全部補上顯式model相關