ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 169
Numărul 168 Numărul 167 Numărul 166 Numărul 165 Numărul 164 Numărul 163 Numărul 162 Numărul 161 Numărul 160 Numărul 159 Numărul 158 Numărul 157 Numărul 156 Numărul 155 Numărul 154 Numărul 153 Numărul 152 Numărul 151 Numărul 150 Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 169
Abonamente

Context Engineering pentru aplicații mobile (I)

Alex Ilovan
Mobile Solutions Architect & PhD Researcher @ Honey Oak Fields



PROGRAMARE

Agenții IA pot accelera dezvoltarea software, dar eficiența lor în proiecte reale depinde mai mult de calitatea contextului în care aceștia operează. În dezvoltarea aplicațiilor mobile, acest lucru devine esențial: o interfață aparent simplă depinde de arhitectură, state management, navigație, lifecycle, servicii, repository-uri, localizare, accesibilitate, testare, design system și constrângeri de platformă.

Acest white paper propune un model practic de Context Engineering pentru dezvoltarea aplicațiilor mobile cu agenți IA. Modelul limitează accesul agentului la zonele de interes ale taskului vizat, printr-un set controlat de informații relevante: reguli arhitecturale, taskuri structurate, context de design, politici de securitate, fișiere de memorie ale proiectului, teste automate, checklisturi de testare manuală și puncte clare de intervenție umană.

Lucrarea descrie un workflow agentic complet, de la definirea unui task precum Project-001: Initial app setup, până la implementarea de UI, review, testare, actualizare de memorie a agentului și documentație. Procesul include separarea clară între View, ViewModel, Services, Repositories, AppState, AppRouter și AppEnvironment, precum și introducerea unei strategii de testare printr-un task ulterior specializat.

Concluzia este că programarea agentică presupune proiectarea unui mediu de lucru în care agentul primește contextul potrivit, produce schimbări mici și verificabile, se oprește în fața deciziilor arhitecturale și rămâne sub controlul explicit al programatorului. Viitorul dezvoltării asistate de IA va aparține sistemelor în care contextul devine infrastructură: agentul lucrează cu direcție, schimbările rămân verificabile, iar dezvoltatorul păstrează controlul arhitectural.

Introducere

Agenții IA sunt tot mai prezenți în dezvoltarea software. Pe măsură ce utilizarea lor trece de la experimente izolate la fluxuri zilnice de dezvoltare, consumul de tokeni devine o problemă economică directă pentru echipe și organizații. Un agent folosit necalibrat poate consuma context, poate produce schimbări greșite și poate genera iterații suplimentare. Un agent folosit într-un mediu proiectat explicit poate reduce timpul de implementare, crește consistența codului și poate limita risipa operațională.

În lipsa unor limite clare, agenții IA construiesc module duplicate, introduc componente care există deja, modifică soluții validate și deviază de la arhitectura proiectului din cauza unor instrucțiuni incomplete sau ambigue. Rezultatul poate părea corect la prima vedere, dar devine costisitor în review: mai multe fișiere modificate, mai mult context consumat, mai multă muncă manuală și mai multe iterații pentru a readuce implementarea în direcția corectă.

Dezvoltarea aplicațiilor mobile amplifică această problemă. Un ecran aparent simplu depinde de mai multe straturi: View, ViewModel, Services, Repositories, AppState, AppRouter, AppEnvironment, design system, localizare, accesibilitate, testare, configurație și lifecycle. Agentul trebuie să cunoască aceste relații înainte să modifice codul.

Acest articol propune o abordare practică de Context Engineering pentru aplicații mobile. Abordarea descrie cum poate fi proiectat, structurat și livrat contextul relevant către un agent IA care lucrează într-un codebase real. Modelul urmărește obținerea unor schimbări mici, verificabile și consistente arhitectural, cu programatorul păstrat explicit în bucla de decizie.

Lucrarea se concentrează pe calibrarea contextului pentru un singur agent executant. Orchestrarea unui sistem multi-agent presupune alte mecanisme de coordonare, alte tipuri de memorie și alte puncte de sincronizare. Acest subiect rămâne în afara scopului lucrării.

Prompt Engineering vs. Context Engineering

Scenariul este familiar. Dezvoltatorul îi cere agentului: "implementează acest ecran". Agentul generează codul, aplicația rulează, iar vizual pare acceptabil. Apoi apare review-ul de diff: arhitectura proiectului a fost ignorată, logica de business a fost duplicată, localizarea este inconsistentă, state-ul este gestionat într-un loc greșit și au apărut componente UI care existau deja în design system.

Agenții IA sunt generatoare de tipare extrem de capabile, care operează în interiorul unei ferestre de context. Ei nu înțeleg implicit produsul, istoria arhitecturală, deciziile echipei sau compromisurile din cod. Calitatea rezultatului depinde direct de calitatea contextului în care agentul lucrează.

În programarea tradițională, un dezvoltator nou citește proiectul, învață arhitectura, pune întrebări, înțelege convențiile de cod, primește feedback la code review și se normalizează treptat în fluxul echipei. În programarea agentică, aceste informații trebuie externalizate către agent sub formă de context structurat.

Context Engineering este procesul de a selecta, structura, menține și livra informația potrivită către un agent IA, astfel încât acesta să poată duce la bun sfârșit un task de software engineering într-un anumit produs, proiect, codebase, arhitectură și workflow de echipă.

Diferența față de Prompt Engineering este prezentată în Tabelul 1.

Prompt Engineering Context Engineering
Se concentrează pe o instrucțiune punctuală. Se concentrează pe mediul informațional în care operează agentul.
Este de obicei ad-hoc. Este repetabil, versionat și întreținut în repository.
Utilizatorul explică manual contextul taskului. Proiectul oferă un context pack reutilizabil și actualizabil.
Este potrivit pentru taskuri mici și izolate. Este necesar pentru codebase-uri complexe și reale.

Tabelul 1: Prompt Engineering vs Context Engineering

O parte importantă din eșecuri și din consumul risipitor de tokeni apare deoarece modelul primește prea puțin context, prea mult context irelevant și depășit, instrucțiuni ambigue, reguli arhitecturale incomplete, acceptance criteria neclare, lipsa unui feedback loop sau/și documentație incompletă sau neactualizată.

Contextul unui agent trebuie proiectat. În cazul unei aplicații mobile, această proiectare ia forma unui harness contextual dedicat.

Harnessul contextual

În echipele umane, când un membru nou se alătură unui proiect, primește informații contextuale despre produs, documente arhitecturale, explicații de domeniu, exemple, feedback la code review și taskuri mici pentru acomodare. Agenții IA au nevoie de o disciplină similară.

Figura 1. : Initial Setup pentru o aplicație mobilă

În Figura 1 este prezentat un harness contextual pentru o aplicație mobilă. Acesta definește modul în care agentul operează în proiect și îi oferă acces controlat la informațiile necesare pentru implementarea taskurilor.

Harnessul funcționează ca infrastructură de lucru pentru dezvoltare asistată de IA. Fișierele sale sunt păstrate în repository pentru a putea fi versionate, revizuite și îmbunătățite în timp.

Fișierul AGENTS.md

Fișierul AGENTS.md descrie regulile generale de funcționare ale agentului. El stabilește:

Acest fișier funcționează ca un contract operațional. Agentul primește un set de reguli persistente, versionate împreună cu proiectul.

Directorul ai-context

Directorul ai-context/ conține contextul stabil al proiectului. Aici sunt descrise produsul, arhitectura, modelele de date, strategia de state management, navigația, networkingul, localizarea,

accesibilitatea, testarea, design systemul, configurările de securitate și harta repository-ului. Aceste fișiere răspund la întrebări precum:

Directorul ai-tasks

Directorul ai-tasks/ conține taskurile concrete care urmează să fie implementate de agent. Fiecare task definește scopul, acceptance criteria, fișierele de context relevante, fișierele protejate și cerințele de testare. După finalizare, taskurile pot fi mutate în DONE/ pentru a păstra istoricul.

Un task bine scris reduce ambiguitatea. Agentul pornește de la o descriere structurată a muncii care trebuie făcută, cu limite și criterii de verificare.

Directorul ai-design

Directorul ai-design/ conține contextul de design: sursele Figma, mappingul dintre componentele din design și componentele din cod, template-uri de Design Extraction Report și checklisturi de Visual QA.

Pentru aplicațiile mobile, designul este important deoarece un ecran conține stări, componente, reguli de spacing, typography, culori, dark mode, large text și constrângeri de accesibilitate.

Directorul ai-memory

Directorul ai-memory/ reprezintă memoria proiectului. Aici sunt păstrate deciziile recurente, patternurile validate, riscurile cunoscute și vocabularul comun al echipei. Această memorie reduce nevoia ca agentul să redescopere aceleași reguli la fiecare task.

Memoria proiectului trebuie actualizată cu grijă. Agentul poate propune update-uri, iar dezvoltatorul decide ce merită păstrat.

Directorul ai-decisions

Directorul ai-decisions/ păstrează deciziile importante sub formă de Architecture Decision Records. Acestea sunt utile atunci când un task introduce o schimbare arhitecturală sau când echipa trebuie să documenteze un compromis tehnic.

Directorul ai-workflows

Directorul ai-workflows/ conține prompturi și template-uri reutilizabile pentru planificare, implementare, self-review, update de memorie, testare manuală și Pull Request. Scopul său este să standardizeze interacțiunea cu agentul.

Directorul ai-safety

Directorul ai-safety/ descrie zonele protejate, politica de secrete și regulile de sandboxing. Acest director reduce riscul ca agentul să modifice configurații sensibile sau să acceseze fișiere care nu sunt necesare pentru taskul curent.

Structura repository-ului

O structură generică pentru un proiect mobile poate arăta astfel:

MobileApp/ 
  AGENTS.md

ai-context/  
    product.md
    architecture.md 
    domain-model.md 
    state-management.md 
    navigation.md 
    networking.md 
    localization.md 
    accessibility.md 
    testing.md
    design-system.md
    security-configuration.md 
    repo-map.md

  ai-tasks/
    Project-001-initial-app-setup.md
    Project-002-design-system.md 
    Project-003-navigation.md
    DONE/

  ai-design/
    design-sources.md 
    component-mapping.md
    design-extraction-template.md 
    visual-qa-template.md

  ai-memory/
    architecture-decisions.md recurring-patterns.md    
    known-risks.md glossary.md

  ai-decisions/
    Project-003-navigation-through-router.md
    Project-004-viewmodels-own-presentation-state.md

  ai-workflows/
    agent-planning-prompt.md
    agent-implementation-prompt.md 
    agent-self-review-prompt.md 
    memory-update-prompt.md
    manual-qa-template.md pr-template.md

  ai-safety/
    protected-files.md
    secrets-policy.md
  App/ 
  Features/ 
  Services/ 
  Repositories/ 
  DesignSystem/ 
  Tests/

Această structură separă codul aplicației de infrastructura de lucru a agentului. Directoarele App/, Features/, Services/, Repositories/, DesignSystem/ și Tests/ aparțin aplicației. Directoarele care încep cu ai- descriu contextul, memoria, regulile și workflow-ul agentului.

Un context bun pentru agent trebuie să fie relevant, actualizat, comprimat, specific per task, structurat, explicit și testabil. În oglindă, un context deficitar este prea mare, outdated, contradictoriu, implicit, împrăștiat sau/și plin de fișiere irelevante.

După ce acest harness există în repository, fluxul de lucru al dezvoltatorului devine mai predictibil.

Workflow-ul de dezvoltare

Pentru a începe implementarea unui task, dezvoltatorul pornește prin scrierea unui fișier în ai-tasks/. Acest fișier descrie cerințele taskului, acceptance criteria, linkurile de design, linkul către Ticket și fișierele de context relevante.

Apoi dezvoltatorul cere agentului un plan. Agentul citește doar fișierele relevante, produce un plan, enumeră fișierele pe care se așteaptă să le modifice, listează riscurile și marchează eventualele puncte de decizie. Dezvoltatorul aprobă, respinge sau rafinează planul.

După aprobarea planului, agentul execută implementarea, scrie sau actualizează testele automate, produce checklisturi de testare manuală și își face un self-review. La final, dezvoltatorul verifică implementarea, rulează testele necesare, inspectează git difful și decide dacă schimbarea este acceptabilă.

În Figura 2 este afișat procesul complet de execuție.

Figura 2: Procesul de dezvoltare cu Context Engineering

Procesul poate fi rezumat astfel:

  1. Dezvoltatorul creează sau rafinează taskul în ai-tasks/.

  2. Taskul referențiază linkul de Ticket, linkul de design și fișierele de context relevante.

  3. Dezvoltatorul cere agentului un plan în mod read-only.

  4. Agentul produce planul, riscurile, presupunerile și strategia de testare.

  5. Dezvoltatorul aprobă sau modifică planul.

  6. Agentul implementează în mod workspace-write.

  7. Agentul scrie sau actualizează testele automate.

  8. Agentul produce Manual QA și Visual QA checklist.

  9. Agentul își face self-review pe baza contextului proiectului.

  10. Dezvoltatorul face review la git diff și testează manual flow-ul.

  11. Dacă există conflict arhitectural, agentul se oprește și propune decision branches.

  12. Dacă implementarea este acceptată, agentul propune update-uri pentru ai-memory/ sau ai-decisions/.

  13. Dezvoltatorul aprobă update-urile de memorie.

  14. Schimbarea este committed, se creează un Pull Request și se face merge-ul feature-ului.

  15. Taskul este mutat în ai-tasks/DONE/.

Această buclă obligă agentul să lucreze în limite clare. Agentul pornește de la task și de la contextul explicit selectat pentru acel task. Repository-ul complet rămâne disponibil acolo unde este necesar și justificat.

Taskul ca unitate de lucru

Un task este contractul dintre dezvoltator, agent, design, ticket și repository. El trebuie să fie suficient de clar încât agentul să poată planifica și suficient de limitat încât schimbarea să rămână verificabilă.

Un task poate avea următoarea structură:

# Project-001: Initial app setup

## Source

Ticket:
Design:
Type:
Priority:

## Problem
Describe the current problem.

## Goal
Describe the desired outcome.

## Acceptance criteria
- [ ] ...
- [ ] ...
- [ ] ...

## Relevant context files 

Read only:
- ai-context/architecture.md
- ai-context/state-management.md
- ai-context/navigation.md
- ai-context/testing.md
- ai-context/security-configuration.md
- ai-context/repo-map.md

## Protected areas Do not modify:
- production configuration
- secrets
- signing
- CI/CD
- payment
- authentication

## Expected agent output before editing
- implementation plan
- expected files to modify
- assumptions
- risks
- decision points
- automated test plan
- manual test plan

## Expected agent output after editing
- files  changed
- acceptance criteria coverage
- tests added or updated
- tests run
- tests not run and why
- manual QA checklist
- memory or documentation updates proposed

Prin această structură, taskul devine un mecanism de control. Agentul primește scop, limite, context și criterii de verificare.

Partea a II-a a acestui articol va fi publicată în următorul număr al revistei.

NUMĂRUL 166 - AI for Programmers

Sponsori

  • Banca Transilvania
  • Betfair
  • MHP
  • .msg systems
  • P3 group
  • Cognizant Softvision
  • BMW TechWorks Romania

INTERVIURI