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

Predicción de costo en tokens

PRECC incluye un oráculo de predicción de costo en tokens para que los planes de varios pasos se presupuesten en tokens, no en tiempo de reloj. Registre una predicción antes de cada paso, anote el valor real cuando el trabajo termine, y el conjunto de datos entrenará un predictor integrado que mejora con el tiempo.

Registrar una predicción

Pase una descripción de una línea del paso planeado. PRECC lo categoriza (feat / fix / test / refactor / measurement / doc / chore / unknown), estima un recuento de tokens e imprime un id que usará para cerrar el ciclo.

$ 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>

Registrar el valor real

Después de que el paso se complete, busque el recuento real de tokens en el pie de su sesión o en la telemetría y pásalo de vuelta mediante el id.

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

Entrenar trained-v1

Una vez tenga al menos diez predicciones cerradas, ajuste la regresión ridge trained-v1 sobre log10(actual) frente a log10(longitud de descripción) más una variable dummy categórica one-hot. El ajuste es de forma cerrada (Cholesky sobre las ecuaciones normales con ridge λ=1) y se ejecuta en milisegundos.

$ 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

Tras el entrenamiento, cada nueva llamada a precc predict usa trained-v1 automáticamente hasta que retire o reemplace el archivo del modelo. Las predicciones antiguas conservan su model_version original para que pueda comparar predictores a lo largo del tiempo.

Inspeccionar la precisión del predictor

precc predict --eval informa el error porcentual absoluto medio (MAPE) en general y por categoría, calculado solo sobre las predicciones cerradas (filas con ambos valores: predicho y real).

$ 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%
  ...

Listar predicciones recientes

precc predict --list muestra las filas recientes en orden cronológico inverso. Las filas abiertas (sin valor real) están listas para cerrarse.

$ 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...

Por qué tokens y no tiempo de reloj

Las estimaciones de tiempo son inmedibles a posteriori y no se componen entre máquinas o sesiones. Los recuentos de tokens son deterministas, comparables y hacen crecer un conjunto de datos etiquetado que mejora al predictor con cada ciclo cerrado. El propósito mismo del oráculo es convertir la estimación de un juego de adivinanzas en una medición.

Dónde residen los datos

Todos los datos de predicción se almacenan localmente en su máquina. Nada se sube.

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