Spark — pune-i lui Wednesday o sarcină pe care o duce singură 24/7
Categorie: skill · Unde merge: Claude Code · Telegram (prin Hermes) · daemon-ul rulează non-stop pe Mac
Sursă: .claude/skills/spark · runner _infra/scripts/spark-runner.py · CLI _infra/scripts/spark-task.py
Ce e, pe scurt
Versiunea lui Wednesday pentru Gemini Spark (Google I/O 2026). Îi dai o sarcină în limbaj normal — care se repetă, e programată, sau se declanșează la un eveniment — și ea o rulează 24/7 în fundal, te întreabă înainte să facă ceva ireversibil, și îți trimite rezultatul pe Telegram. „Pui și uiți.”
Rulează pe Grok/Gemini (ieftin, rapid — niciodată pe Claude pentru muncă de fundal), exact ca Spark-ul Google care merge pe Gemini 3.5 Flash.
Cele 3 concepte (la fel ca la Spark)
| Concept | Ce e | Exemplu |
|---|---|---|
| Task | treaba propriu-zisă (poate avea mai mulți pași) | „adună notițele din ședință → Doc → draft de email” |
| Skill | o acțiune învățată o dată, refolosită mereu | „citește-mi ultimele 50 de emailuri → fă-mi un ghid de stil → salvează-l ca skill ghostwriter” |
| Schedule | declanșatorul: timp sau eveniment | „în fiecare luni la 9:00” / „când primesc un email despre X” |
Un job Spark = (declanșator) → (sarcină) → (te întreabă la pașii periculoși) → (îți livrează rezultatul).
Cum îi ceri (2 căi)
A. Vorbit natural — cu Wednesday (în Claude Code SAU pe Telegram)
Spui ce vrei și ea îl înregistrează singură:
„Wednesday, în fiecare luni la 9 dimineața scanează-mi inbox-ul, fă-mi un rezumat al săptămânii și o listă de priorități, și blochează-mi timp de deep-work în calendar.” „Când îmi vine un email despre fotografie, extrage clientul și data și loghează-l în sheet-ul Client Tracker.”
B. Direct din terminal (CLI)
python3 ~/Nevermore/_infra/scripts/spark-task.py add "<titlu>" <trigger> --task "<ce să facă, în limbaj normal>"
python3 ~/Nevermore/_infra/scripts/spark-task.py listTipurile de declanșator — cu exemplu pentru fiecare
# ZILNIC la o oră
spark-task.py add "Rezumat zilnic" --daily 09:00 \
--task "Scanează inbox-ul, dă-mi cele mai importante 5 lucruri și o listă de to-do prioritizată"
# SĂPTĂMÂNAL, în zile alese
spark-task.py add "Recap luni" --weekly 09:00 --days mon \
--task "Rezumă săptămâna trecută din Gmail+Calendar și propune prioritățile săptămânii"
# LA INTERVAL (la fiecare N minute)
spark-task.py add "Watch preț" --every 60 --no-approval \
--task "Verifică prețul la <produs> și pingează-mă DOAR dacă a scăzut sub X"
# O SINGURĂ DATĂ, la o dată/oră
spark-task.py add "Pregătește ședința" --once 2026-06-02T08:00 \
--task "Strânge toate documentele legate de proiectul Y într-un rezumat"
# PE EVENIMENT (email nou care conține un cuvânt)
spark-task.py add "Lead fotografie" --on-event email_received --contains fotografie \
--task "Extrage numele clientului + data, loghează lead-ul în sheet-ul Client Tracker, fă un folder în Drive cu numele clientului"Flag-uri trigger: --daily HH:MM · --weekly HH:MM --days mon,tue · --every MIN · --once ISO · --on-event TIP [--from-source X] [--contains Y].
Opțional: --profile researcher|coder (rutează la un specialist Hermes), --connectors gmail,drive (informativ).
Aprobarea — butoanele de pe Telegram (implicit pornit)
Implicit, Spark e propose-only: la un pas periculos (trimite email, cheltuie bani, șterge, postează, rezervă) NU face singur — îți trimite pe Telegram propunerea cu două butoane:
✨ Spark (proposal — approve to execute) — Rezumat zilnic [textul / planul ei] [ ✅ Approve ] [ ❌ Reject ]
- Apeși ✅ Approve → Spark execută pentru real și îți trimite rezultatul.
- Apeși ❌ Reject → se anulează, nu se întâmplă nimic.
Dacă vrei o sarcină complet autonomă (fără să te întrebe), adaugi --no-approval. Folosește-l doar la lucruri sigure (citit, monitorizat, rezumat) — nu la acțiuni care trimit/cheltuie.
Gestionarea task-urilor
spark-task.py list # toate task-urile + următoarea rulare + ultima stare
spark-task.py run-now <id> # rulează ACUM, indiferent de program (test)
spark-task.py disable <id> # oprește temporar
spark-task.py enable <id> # repornește
spark-task.py rm <id> # șterge
spark-task.py runs # istoricul rulărilor (stare, câte tool-uri, livrat?)Sau pur și simplu îi spui lui Wednesday: „arată-mi task-urile spark”, „rulează acum rezumatul de luni”, „dezactivează watch-ul de preț”.
De unde îl folosești
- Claude Code (laptop) — îi spui în chat sau rulezi CLI-ul. Bun pentru setup + task-uri complexe.
- Telegram (telefon) — îi scrii lui Wednesday (Grok prin Hermes); ea rulează
spark-task.pyîn spate. Aici primești și rezultatele + butoanele de aprobare. Asta e calea mobilă — setezi și aprobi de pe telefon.
Galerie de exemple (copy-paste, pe limbajul tău)
- Inbox sintetizat săptămânal — „în fiecare luni la 9, ține-mă la curent cu abonamentele și știrile din industrie din inbox și rezumă temele importante.”
- Vânătoare de facturi — „o dată pe zi, caută în mail facturile și chitanțele rătăcite și organizează-mi-le într-un sheet.”
- Plan de grup — „transformă lanțul ăsta de mailuri despre excursie într-un plan: loghează cheltuielile într-un sheet și trimite-le tuturor planul” (propose-only — aprobi trimiterea).
- Întreținere casă — „investighează facturile vechi și pune-mi remindere recurente în Calendar + listă de cumpărături în Keep.”
- Ghostwriter (skill învățat) — „citește ultimele 50 de emailuri scrise de mine, fă un ghid de stil, salvează-l ca skill
ghostwriterși folosește-l când îți cer să scrii emailuri.” - Intake lead pe eveniment — exemplul cu
--on-event email_received --contains fotografiede mai sus. - Monitor tăcut — „la fiecare oră verifică
și pingează-mă doar dacă s-a schimbat” cu--no-approval.
Limite & de știut
- Fundal = Grok/Gemini, niciodată Claude (regulă de cost). E by-design, ca la Google.
- Trigger pe email = mail nou primit (prin daemon-ul
gmail-event-emitter, la 5 min). Alte surse de evenimente se pot adăuga la cerere. - Sarcinile lungi se reiau singure peste rulări (aceeași sesiune), max 3 încercări — apoi raportează că n-a terminat.
- Verifică că merge:
launchctl list | grep -E 'spark-runner|gmail-event'(ambele trebuie să existe). - Rezultatul ajunge pe Telegram; istoricul în
.spark_runs.jsonl.
FAQ
Trebuie să țin laptopul deschis? Nu. Daemon-ul rulează pe Mac mini 24/7; task-urile merg și când ești plecat. (Mac-ul nu doarme.)
Citește Spark toate mailurile mele? Nu indiscriminat — lucrează doar pe ce-i ceri, și se atinge doar de aplicațiile pe care le conectezi.
E nevoie să știu să programez? Nu. Vorbești normal. CLI-ul e doar dacă vrei control fin.
Ce-i diferit de un simplu reminder? Reminder-ul îți trimite un text. Spark face treaba — pași multipli, în mai multe aplicații, cu rezultat.
Cum opresc un task? spark-task.py disable <id> sau „dezactivează task-ul X”. rm îl șterge de tot.
Cercetarea + designul complet: _infra/core/wednesday/deliverables/2026-05-29-1804-gemini-spark-research-and-wednesday-parity.md. Doctrina AI-facing: _infra/core/wednesday/skills/spark_lane.md.