這一年被問最多的問題,大概就是「AI 會不會取代教練」。
我的答案沒那麼戲劇化。這一年真正讓我改變工作方式的,是另一件更基本的事:
大部分教練手上的訓練數據,根本還不到能拿給 AI 看的程度。
我用 TrainingPeaks 用了 12 年,帶選手 10 年,一對一帶過的選手超過 100 位,也就是說,我至少從頭到尾完整翻過 100 個以上的訓練帳號。
看得夠多,多到可以說一句不太客氣的話:我敢說自己用數據判斷選手狀態,會比很多教練可靠一點。這跟眼光沒什麼關係,是因為我對「這筆數據到底可不可信」這件事,從十年前就嚴格到有點龜毛。
當年純粹是看不順眼對不上的數字,沒想過十年後,這個習慣會變成我手上最有價值的東西。
一、你看到的 TSS,其實是一道算式
打開 TrainingPeaks,每一筆課表後面都掛著一個 TSS,看起來很客觀,像是手錶量出來的。
但 TSS 本來就不是量出來的。它是算出來的:拿你的實際表現,去除以一個你自己設定的閾值。自行車是 FTP,跑步是閾值配速(或跑步功率閾值),游泳是 CSS 或閾值配速。
換句話說,這個算式裡有一半的輸入值,是你手動填進去的。
再往上疊:TSS 決定 CTL(長期負荷)與 ATL(短期負荷),CTL 減 ATL 得到 TSB(表現狀態)。整條鏈子從頭到尾,只有一個真正的地基——閾值設定。
地基歪掉,上面每一層都跟著歪。你在 PMC 圖上看到的疲勞曲線、你判斷選手該不該進 taper、你決定下週要不要加量,全部建立在一個你可能根本沒檢查過的數字上。
更麻煩的是,它不會報錯。
閾值設錯了,圖照樣畫得很漂亮,曲線照樣起起伏伏,一切看起來都運作正常。沒有任何一個地方會跳出來提醒你「這個數字有問題」。
二、我接一位新學員的第一週,通常不排課
很多人以為教練接到新學員的第一件事是排課表。我大部分時候不是。
我會先花掉一大段時間,把他過去的訓練與比賽紀錄整個翻一遍。翻的時候我在找這幾件事:
- 有沒有明顯的異常值?一筆輕鬆的有氧跑,TSS 比長距離課還高;一趟三千公尺左右的游泳,只給了個位數 TSS。這種東西在圖上看不出來,得一筆一筆點進去看。
- FTP 是什麼時候設的?我看過設定停在三年前的帳號。這三年他練得更強了,TrainingPeaks 還在用三年前的 FTP 算每一堂課,結果 CTL 一路虛高,看起來像每週都在破自己的負荷紀錄。
- 跑步閾值合不合理?最常見的是拿比賽配速當閾值配速,或拿五年前的最佳狀態當現在的基準。
- 游泳的 CSS/閾值呢?這項最容易被放著不管,因為很多人本來就不太看游泳的 TSS。
- 過去的 TSS 對得上他實際練的內容嗎?我會挑幾筆一看就知道大概該是多少負荷的課,比對系統給的數字。對不上,就是設定有問題。
這個工序不做,他累積十年的 TrainingPeaks 數據,看起來很豐富,真正能拿來互相比較的其實沒多少。
三、TrainingPeaks 最容易踩到的兩個預設陷阱
這一段是給同行的,也是我看過最多帳號在踩的坑。TrainingPeaks 的設定裡有兩組預設值:Default Speed/Pace 跟 Default Power。你如果沒動過它,很多活動就會直接套這組預設去算 TSS。正確做法是到 Add Activity 裡,針對不同運動各自建立獨立設定。
配速要分開設
游泳有游泳的閾值配速,跑步有跑步的閾值配速,兩者根本是不同量級,不可能共用一組。沒分開設,你會看到快三千公尺的游泳只有 1~2 TSS,或者跑步的 TSS 明顯偏掉、而且你不知道偏哪一邊。
下面這筆就是。我第一次看到這種畫面的時候,還以為是同步出錯。
功率也要分開設
自行車設自行車的 FTP。有在用跑步功率的,另外建立跑步功率的設定,否則跑步活動就會拿自行車的 FTP 去算。
舉個實際的例子。你的自行車 FTP 設 250 瓦,而 Garmin 的跑步功率動不動 300 瓦起跳,這在跑步功率上很正常,它的演算法本來就會給出比自行車高一截的數值。
但系統不知道這回事。它只看到「300 瓦」跟「FTP 250 瓦」,然後老老實實把 300 除以 250。IF 直接跳到 1.2,一小時的輕鬆跑就這樣算出 144 TSS。
144 TSS 是什麼概念?那大概是一趟認真的三小時自行車長課。你只是出門慢跑一小時,系統卻認為你剛做完當週最硬的一堂課。
而這種課你一週跑四次。你會看到選手的 CTL 莫名其妙一路往上,TSB 深到你開始擔心他練過頭,然後你替他減量。實際上他一點都不累,他只是設定錯了。
四、有些數據,是修不回來的
講到這裡要補一句公道話:不是所有歷史數據都救得回來。
沒有功率計的那幾年、換錶那一季、游泳沒戴錶只用手記的時期,這些資料本身就缺了關鍵欄位,再怎麼修也修不出東西。我的處理方式是給它一條線,線以前的只拿來看趨勢,不做跨期比較。
給一個可以直接用的判準:換錶、換功率計、換閾值設定的那一段期間,前後不能直接比。要比,就先確認這三件事在兩段期間裡都沒變過。做不到就別比,寧可承認這段沒有資料,也不要拿一個看起來有數字的錯誤結論去排課。
五、十年的龜毛,換到了什麼
這套工序,我從十年前帶第一批學員時就在做了。當時沒什麼遠大規劃,我只是受不了一筆游泳課給我 1 個 TSS。所以每接一位新學員,我就把設定重新校一次;每換一次錶、每測一次閾值,我就把時間線標記起來。
十年下來,才慢慢看出這件事的價值。這批數據真正有價值的地方,是每一筆的閾值基準都校正過,所以我可以把 2016 年某位選手的備賽期,跟 2024 年另一位的同一個週期直接拿來比,而且知道這個比較成立;看到一位選手的 CTL 從 85 爬到 110,我知道那是真的爬上去了,跟他去年底換了一支錶沒有關係。
最具體的例子是開岩龍——我帶的第一位鐵人三項選手,2016 年他還在 25–29 歲組,2018 年以 9:48:18 破十,2025 年 IRONMAN California 跑出 8 小時 39 分 48 秒、M35–39 分齡第五名。這十年他的 PMC 體能曲線是完整連續的一條線,中間沒斷過。
那條線連得起來,靠的是每一次他換錶、換功率計、重測閾值,我都在時間線上做了處理。
這種東西沒辦法補做。那些測驗當時沒做、數據當時沒記,時間線斷掉的地方就是斷掉了。
六、AI 進場之後,這件事從「龜毛」變成「必要」
以前教練自己看數據,偶爾忽略一兩筆異常值,問題還不算大。因為教練腦子裡有一套直覺:看到一個有氧跑 10K,大概知道那是什麼負荷;系統給的數字跟直覺差太多,你會自己知道「這筆怪怪的」,然後跳過。
AI 沒有這套直覺。它只會看到數據。
你餵給它的數字如果本身就是錯的,它不會停下來覺得哪裡不對。通常只有兩種下場:一是分析結果跟著錯,它很認真根據錯誤的 CTL 告訴你這位選手該減量了,講得頭頭是道,偏偏結論是錯的;二是它把異常值當噪音直接忽略,這種更難察覺,因為輸出看起來很合理,你不會知道它是靠丟掉三成資料才得出這個結果。
我這一兩年試過不少 AI 訓練工具。多數的演算法其實沒什麼問題,問題出在它們讀到的數據本來就是錯的。前提錯了,演算法再好也沒用。
七、數據修對之後,教練還剩下什麼
我花這麼多力氣把數據修對,是為了讓數據能負責它該負責的那一塊:負荷、疲勞、趨勢、週期安排。這些量化得越準,我就越不用在上面浪費判斷力。
剩下的那塊才是教練真正要處理的:那位選手這兩週連續加班到半夜;他老婆剛生完小孩,每天只能趁午休練台;他在群組裡回訊息的語氣變了;他游到後段划水明顯垮掉,但他自己說「還好」。
這些東西手錶測不到,AI 也讀不出來。
選手說「有點累」,其實很好處理。難的是他說「我還想練」的那一刻,他是真的還有餘裕,還是不想承認自己撐不住了?
所以我做的系統,一開始就只讓它管我不需要用直覺處理的那一半:把負荷算對、把週期鋪好、把課表的量與強度配到位;每一份課表送到選手手上之前,都會經過我這一關。前提是我在看那份課表的時候,不必再分心懷疑底下的數字對不對。
這十年的東西,我已經把它做成了一個方案,叫 Lo’s Tri Lab——系統負責算,我負責判斷。我敢做這件事的底氣,就是這篇從頭講到尾的那件事:餵進去的數據,每一筆的閾值基準我都校過,而且這套工序在你加入之後還會再跑一次。方案細節、門檻與申請表都在這裡。
全新訓練方案
十年帶課邏輯 × 教練親自把關
系統排課,我親自審核每一份課表
所以,如果你正在管理 TrainingPeaks
不要只看 TSS。先確認這個 TSS 是怎麼算出來的。
做數據分析,數據太少還算好處理。真正麻煩的是數據很多、底層設定卻是錯的,這時候數據越多,錯誤被放大得越厲害。
AI 會不會取代教練,我不敢說。但我很確定一件事:在它看懂你的選手之前,得先有人花上好幾年,把那些數字一筆一筆修對。這件事做起來一點都不起眼,卻決定了十年後你手上那批數據,到底值不值得相信。
有在用 TrainingPeaks 帶選手的教練們,接新學員的時候,你們會先做這一步嗎?




