Прогнозирование стоимости в токенах
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
Когда у вас есть хотя бы десять закрытых прогнозов, постройте гребневую регрессию trained-v1 для log10(actual) против log10(длины описания) плюс one-hot фиктивной переменной категории. Подгонка имеет замкнутую форму (Холецкий по нормальным уравнениям с ridge λ=1) и выполняется за миллисекунды.
$ 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`)