Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

權杖成本預測

PRECC 內建權杖成本預測預言機,讓多步驟計畫以權杖而非掛鐘時間編列預算。在每個步驟之前記錄預測,工作完成後記錄實際值,資料集會訓練內建預測器,並隨時間持續改進。

記錄一次預測

傳入計畫步驟的一行描述。PRECC 會對其分類(feat / fix / test / refactor / measurement / doc / chore / unknown),估算權杖數,並印出一個 id,用於稍後閉環。

$ precc predict "Implement read-deltas with mtime check"
id=42 category=feat predicted=5680 tokens (confidence=0.50, model=trained-v1)
Record actual when done: precc predict --record 42 <actual_tokens>

記錄實際值

步驟完成後,從工作階段頁尾或遙測中查到實際權杖數,並透過 id 回填。

$ precc predict --record 42 6300
Recorded actual=6300 tokens for prediction id=42.

訓練 trained-v1

當至少有 10 條已關閉的預測時,在 log10(actual) 對 log10(描述長度) 加上 one-hot 類別虛擬變數上擬合 trained-v1 嶺迴歸。擬合為閉式解(在帶 ridge λ=1 的正規方程上做 Cholesky 分解),執行只需毫秒級。

$ precc predict --train
Trained trained-v1 on 22 closed predictions (λ=1).
  Model file : ~/.local/share/precc/predict_model.json
  Confidence : 0.50
  Intercept  :  +1.0016
  log_desc   :  +1.2339
  Categories :
    unknown       +0.4811
    doc           +0.4474
    measurement   +0.3422
    test          +0.1071
    refactor      +0.0326
    feat          +0.0071
    fix           -0.1096
    chore         -0.3063

訓練後,每次新的 precc predict 呼叫會自動使用 trained-v1,直到你移除或替換模型檔。舊預測保留其原始 model_version,便於你隨時間比較預測器。

檢查預測器精度

precc predict --eval 報告整體和分類別的平均絕對百分比誤差(MAPE),僅在已關閉的預測(同時具有預測值與實際值的列)上計算。

$ precc predict --eval
Predictions logged   : 30
With actuals (closed): 22
Mean predicted       :     1483 tokens
Mean actual          :    47238 tokens
MAPE (statistical)   :     76.4%

By category:
  category        n   predicted      actual    MAPE
  feat            6        4605        5250   26.2%
  unknown         4        1597       30526   52.6%
  test            4         924       38900   56.4%
  ...

列出最近的預測

precc predict --list 以倒序時間顯示最近的列。開放列(無實際值)等待關閉。

$ precc predict --list --limit 5
id    ts                   category       predicted     actual  conf description
30    2026-05-09 09:40:51  feat                5348          -  0.50 Run the synthetic-fleet pilot...
29    2026-05-09 08:56:48  test                1050          -  0.60 Train predictor: trained-v1...
28    2026-05-09 07:44:18  test                 915     150000  0.60 Implement minimal task-12...

為何用權杖而非掛鐘時間

時間估算事後無法測量,且無法跨機器或跨工作階段組合。權杖計數是確定性、可比較的,並且每個關閉的迴路都會擴充帶標籤的資料集,從而持續改進預測器。預言機的核心意義就是把估算從猜謎遊戲變成測量。

資料存放在哪裡

所有預測資料都儲存在你本地機器上,不會上傳任何內容。

~/.local/share/precc/
├── metrics.db                — predictions table (oracle DB)
└── predict_model.json        — trained-v1 coefficients (after `--train`)