3.4 KiB
description, argument-hint
| description | argument-hint |
|---|---|
| Run vision extraction on a single TradeStation screenshot, then append to jurnal CSV + regenerate MD. | <screenshot_path_or_basename> [--calibration] |
/backtest — single screenshot vision extraction
Lansează subagentul m2d-extractor pe un screenshot, primește JSON-ul, append la data/jurnal.csv, regenerează data/jurnal.md.
Arguments
$1(obligatoriu) — path la screenshot. Acceptă:- basename (
2026-05-13-dia-1645.png) — caută înscreenshots/inbox/, fallbackscreenshots/processed/ - path relativ sau absolut explicit
- basename (
--calibration(flag) —source=vision_calibrationîn loc desource=vision. Folosit împreună cu/m2d-log --calibrationpe același screenshot pentru P4 mismatch report.
Workflow
-
Rezolvă path-ul screenshot-ului. Dacă
$1e doar basename, încearcăscreenshots/inbox/<basename>apoiscreenshots/processed/<basename>. Dacă nu există nicăieri, raportezi eroare și te oprești. -
Invocă subagentul
m2d-extractor(definit în.claude/agents/m2d-extractor.md) prin Task tool cusubagent_type: "m2d-extractor". Prompt-ul către agent:screenshot_path: <absolute_path> screenshot_file: <basename>Agentul scrie
data/extractions/<basename_no_ext>.json+.logși returnează status-line scurt. -
Verifică output-ul:
- Dacă fișierul
data/extractions/<basename_no_ext>.jsonnu există după ce agentul revine → eroare; raportezi și muți screenshot-ul lascreenshots/needs_review/. - Citește JSON-ul. Dacă
confidence == "low"SAUambiguitiesnon-empty cuimage_unreadable→ muți screenshot-ul lascreenshots/needs_review/, raportezi, nu apelezi append.
- Dacă fișierul
-
Append la CSV:
python -c "from pathlib import Path; from scripts.append_row import append_extraction; import json; r = append_extraction(Path('data/extractions/<basename_no_ext>.json'), source='<source>'); print(json.dumps(r, default=str))"<source>=vision_calibrationdacă--calibration, altfelvision.Parsezi răspunsul. Dacă
status == "rejected":reasonconține "duplicate" → screenshot deja procesat cu acest source; raportezi și NU îl muți.reasonconține "validation error" → JSON-ul agentului a fost respins; muți screenshot lascreenshots/needs_review/și raportezi.- Alte erori → raportezi și lași screenshot-ul unde e.
-
Mută screenshot-ul la
screenshots/processed/<basename>dacă append-ul a reușit și fișierul originar a fost îninbox/. Dacă era deja înprocessed/, nu-l muta. -
Regenerează MD:
python scripts/regenerate_md.py -
Raport final (în română):
/backtest <basename> → trade #<id> adăugat (source=<source>, set=<set>, pl_marius=<pl>, confidence=<conf>). Regenerat data/jurnal.md (<total> rânduri).Dacă screenshot-ul a fost mutat la
needs_review:/backtest <basename> → NEEDS REVIEW: <motiv>. Mutat la screenshots/needs_review/<basename>.
Reguli
- O singură invocare per screenshot. Nu reapelezi agentul dacă output-ul e dubios — îl muți la
needs_reviewși raportezi. - NU edita CSV direct.
- NU regenera MD dacă append-ul a fost respins.
- Path discipline: subagentul scrie doar la
data/extractions/; tu (slash command) muți screenshot-uri și apelezi scripts/.