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

به محض اینکه دست‌کم ده پیش‌بینی بسته‌شده دارید، رگرسیون ridge با نام trained-v1 را روی log10(actual) در برابر log10(طول توصیف) به اضافه یک متغیر مجازی one-hot برای دسته برازش کنید. برازش به‌صورت بسته است (Cholesky روی معادلات نرمال با 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`)