Unitate 12 / 12

Instrumente de codare AI și integrarea fluxului de lucru

Câștiguri:

  • Abilitatea de a mapa finalizarea editorului, asistentul de chat, agentul CLI și categoriile de automatizare CI la sarcini
  • Abilitatea de a ajusta nivelul de autonomie în funcție de risc și de a aplica disciplina „plan mai întâi” agenților CLI
  • Abilitatea de a transforma utilizarea AI într-un sistem de echipă bazat pe un instrument validat, poarta de verificare, transparență și responsabilitate

Până acum am învățat să folosim AI în sarcini individuale (codare, revizuire, testare, depanare). În această unitate finală, punem cap la cap: cunoașterea diferitelor instrumente de codare AI, potrivirea instrumentului potrivit cu munca potrivită și încorporarea lor în siguranță în fluxul zilnic de dezvoltare - de la editor la controlul versiunilor, de la pipeline CI/CD la guvernarea echipei. Scopul este de a transforma obiceiul dezordonat „întreaba AI din când în când” într-un sistem de lucru consistent și auditabil.

Acoperim tipurile de vehicule cu categorii neutre (numele specifice de produse se schimbă rapid; ceea ce face categoria contează). Fiecare categorie are un „sweet spot” și un profil de risc; Stăpânirea înseamnă să știi câtă autonomie să acordi cărei sarcini.

Categorii de instrumente de codare AI

1. Finalizare în editor. Pluginuri care sugerează linii/blocuri pe măsură ce tastați în IDE (mediul de dezvoltare în care scrieți codul). Punct favorabil: viteză în flux, cod standard. Risc: context restrâns, acceptând sugestia fără să se gândească.

2. Asistent chat/panou lateral. Interfață de chat încorporată în IDE cu vizibilitate într-o parte a bazei de cod. Sweet Spot: descriere, refactor, testare, analiză de erori. Risc: limitat la contextul pe care îl oferiți, necesită verificare.

3. Agenți CLI (instrumente agent). Instrumentele care rulează din linia de comandă pot citi și modifica mai multe fișiere, pot rula comenzi și pot executa sarcini în mai mulți pași pe cont propriu. Punctul favorabil: modificări în mai multe fișiere, sarcini repetitive, joburi de tip „adăugați această proprietate”. Risc: autonomie mare = impact mare; Dacă nu este bifată, produce modificări ample și greu de verificat.

4. Integrare linie/automatizare. Boți CI (Integrare continuă) care lasă comentarii automate de revizuire a PR-urilor, sugerează teste sau produc jurnalele de modificări. Sweet spot: prima strecurătoare fără oboseală, consistență. Risc: zgomot, falsă încredere.

Sugestie: Pe măsură ce autonomia crește, și controlul ar trebui să crească. Deoarece finalizarea editorului este mică și instantanee, este ușor supravegheată; Modificarea cu mai multe fișiere a unui agent CLI ar trebui examinată la fel, dacă nu cu mai multă atenție, decât un PR uman.

Pas cu pas: Încorporarea AI în fluxul de lucru

  1. Mapați sarcina la instrument. Mică adăugare în flux → finalizare; înţelege/refactoriză/testă → chat; lucru repetitiv cu mai multe fișiere → agent CLI; primul filtru continuu → integrare CI.
  2. Alegeți nivelul de autonomie. Câtă libertate are agentul? Sugestie doar pentru citire sau modificare a fișierului + executarea comenzii? Ajustați pentru risc.
  3. Hrăniți contextul. Introduceți permanent regulile de proiect (stil, arhitectură, „nu se face”) în instrument; Utilizați un fișier cu instrucțiuni de proiect în loc să-l explicați iar și iar.
  4. Menține porțile de verificare. Schimbarea AI este ca schimbarea umană: trece prin compilare, testare, revizuire și (dacă este critică) aprobarea experților. Deschiderea AI PR nu ocolește aprobarea.
  5. Măsurați și reglați. Priviți ce se accelerează cu adevărat, unde sarcina de corecție crește; Eliminați utilizările care nu funcționează.

Trei mini carcase

Cazul 1 — Agentul CLI a gestionat redenumirea mai multor fișiere. O echipă ar redenumi un concept răspândit în 60 de fișiere. Au dat sarcina unui agent CLI, au cerut mai întâi un plan, au aprobat planul, apoi au făcut modificarea și au rulat întreaga suită de teste. Agentul 3 a ratat un caz marginal din dosar; Testele l-au prins, l-au reparat. Lucrarea, care a durat aproximativ 3 ore manual, a fost finalizată în 50 de minute cu supraveghere.

Cazul 2 – Autonomia necontrolată a fost inversată. Un alt dezvoltator i-a spus unui agent să „îmbunătățească acest modul” și l-a lansat; Agentul a modificat 18 fișiere și a adăugat două dependențe. Schimbarea a fost atât de largă încât nu a putut fi revizuită și a trebuit retrasă. Lecție: oferiți agenților un domeniu de aplicare restrâns, criterii clare de acceptare și disciplină pentru primul plan-mai târziu.

Cazul 3 — Botul de revizuire CI a devenit primul filtru. O echipă a creat un bot care lasă comentarii automate de revizuire AI asupra PR-urilor. Odată ce botul a detectat omisiuni de verificare și probleme de stil, recenzenții umani și-au putut dedica timpul logicii de afaceri. Cu toate acestea, echipa a precizat că botul nu a oferit „aprobare”: cel puțin o aprobare umană era încă necesară. Pentru a reduce zgomotul, au reglat barca pentru a lăsa doar zgomot de intensitate mare/medie.

Patru șabloane copiabile

Disciplina „Planificați mai întâi” pentru agentul CLI:

Sarcină: {{sarcină clară, îngustă}}Criterii de acceptare: {{rezultat măsurabil}}Constrângere: funcționează numai pe {{următoarele directoare/fișiere}}; adăugarea unei noi dependențe. Mai întâi prezentați un plan FĂRĂ SCHIMBARE: ce fișiere, ce se va schimba, ce teste să ruleze. Așteptați să APROB planul. Apoi aplicați-l pas cu pas, executând teste la fiecare pas.

Fișier de instrucțiuni pentru proiect (context persistent la instrumente):

Reguli persistente pentru instrumentele AI din acest proiect:- Limba/versiunea: {{...}}. Stil: {{...}}.- Constrângere arhitecturală: {{de ex. direcția dintre straturi}}.- NICIODATĂ: încorporarea de secrete, utilizarea datelor de producție, {{biblioteci interzise}}.- Fiecare modificare trebuie să fie testabilă; Schimbarea semnăturii publice API FĂRĂ a cere. - Când aveți îndoieli, opriți-vă și întrebați.

Decizia de mapare a sarcinilor-instrument:

Eu definesc următoarea sarcină: {{sarcina}}. Ce clasă de instrumente ar trebui să fac asta cu: (a) finalizarea editorului, (b) asistent de chat, (c) agent CLI, (d) automatizare CI? Scrieți-vă rațiunea, riscul și nivelul recomandat de autonomie (simple sugestie / modificare fișier / executare comandă).

Codul de conduită al botului de revizuire CI:

Lăsați doar constatări de severitate MARE și MEDIE ca comentarii în revizuirea PR. Fiecare constatare: categorie, severitate, corectare sugerată. Colectați note la nivelul preferințelor de stil într-un singur comentariu rezumat separat. NU ești de acord; este necesară aprobarea umană.

Prompt slab / Prompt puternic

Slab: (către agentul CLI) „Îmbunătățiți modulul de plată”.
Puternic: (Către agentul CLI) „Rulați numai sub src/payments/. Sarcină: Extrageți logica de validare recursivă din funcția refund() într-un singur ajutor; comportamentul și semnăturile nu se schimbă. Mai întâi prezentați planul și așteptați aprobarea mea; apoi executați și rulați pachetul teste/plăți/. Adăugați o nouă dependență."

Versiunea puternică restrânge domeniul de aplicare, stabilește criterii și constrângeri de acceptare și impune disciplina „planul întâi”. Cererile vagi de „a face mai bine” sunt cauza principală a schimbărilor vaste și incontrolabile.

clasa vehiculului

La ce se pricepe cel mai bine

autonomie

greutatea de inspecție

Finalizarea editorului

Mică adăugare în flux

scăzută

Lumină (citire instantanee)

asistent de chat

Înțelegeți, testați, refactorizați

mediu

Mediu (verificare ieșire)

agent CLI

Multi-fișier, recursiv

înalt

Greu (plan + recenzie completă)

automatizare CI

Primul filtru continuu

mediu

Mediu (regula + aprobarea umană)

Guvernarea echipei: de la abilitățile individuale la sistemul partajat

Folosirea bine a AI pe bază individuală este un început; maturitatea reală este un sistem consistent la nivel de echipă. Acest sistem se bazează pe mai mulți piloni: lista de instrumente aprobate (care instrumente pot fi utilizate cu ce date - de la unitatea 10), porți de verificare (schimbarea AI trece prin aceleași porți de construcție/test/revizuire - de la unitatea 11), transparență (afirmarea că o schimbare este alimentată de AI oferă trasabilitate acolo unde este necesar) și claritatea responsabilității (persoana care semnează este liberă). Acest cadru limitează riscul, menținând în același timp viteza și asigură că noii membri ai echipei lucrează cu aceeași disciplină.

Atenție: cu cât autonomia unui instrument este mai mare – în special agenții CLI care pot modifica fișiere, rula comenzi – cu atât îl limitează mai strâns de la accesul la mediul de producție, la date confidențiale și la operațiuni greu de anulat. Legați comenzile distructive (ștergere permanentă, desfășurare) cu aprobarea umană.

Greșeli comune

  • Sarcina înseamnă incompatibilitate. Încercarea de a face o lucrare cu mai multe fișiere cu finalizarea editorului sau un mic atașament cu un agent greu.
  • Eliberarea agentului. Sarcinile de agent date cu un domeniu îngust și fără un „plan mai întâi” produc schimbări neexaminate.
  • Slăbirea porților de verificare pentru AI. „AI a făcut-o, să mergem mai departe repede” este cea mai periculoasă excepție; Ușile sunt aceleași pentru toată lumea.
  • Dând contextul manual de fiecare dată. Nescrierea regulilor proiectului într-un fișier de instrucțiuni permanent produce inconsecvență și duplicare.
  • Confundarea aprobării botului CI cu aprobarea umană. Un bot este un filtru; Aprobarea umană responsabilă este obligatorie.

În concluzie

Instrumentele de codare AI se împart în patru categorii principale: finalizarea editorului, asistentul de chat, agenții CLI și automatizarea CI. Stăpânirea înseamnă potrivirea sarcinii cu instrumentul potrivit și nivelul potrivit de autonomie; Pe măsură ce autonomia crește, crește și controlul. Oferiți instrumentelor un context de proiect persistent, impuneți o disciplină „plan mai întâi” agenților cu mai multe fișiere și treceți schimbarea AI prin aceleași porți de verificare ca și schimbarea umană. Abilități individuale; Transformați-l într-un sistem de echipă construit pe o listă de instrumente aprobată, porți de verificare, transparență și claritate a responsabilităților. AI este un multiplicator de viteză de la capăt la capăt; Persoana care semnează și dă contul este întotdeauna o persoană competentă.

Sarcina de aplicare

Enumeră trei sarcini reale pe care le vei face săptămâna viitoare. Utilizați șablonul „decizie de potrivire între sarcini și vehicule” pentru fiecare pentru a justifica ce clasă de vehicul și ce nivel de autonomie veți alege. Apoi rulați o sarcină restrânsă pentru un agent CLI (sau asistent de chat) cu o disciplină „plan mai întâi”: aprobați planul, puneți-l în aplicare, rulați testele și revizuiți schimbarea ca un PR uman. În cele din urmă, redactați o „regulă de utilizare a AI” în 5 puncte pentru echipa dvs. (instrumente aprobate, regulă de date, poarta de verificare, limită de autonomie, responsabilitate).

lista de verificare

  • [ ] Pot distinge între categoriile de instrumente de codare AI și punctul favorabil al fiecăreia.
  • [ ] Mapez sarcina la clasa corectă de vehicul și la nivelul de autonomie adecvat.
  • [ ] Dau context permanent de proiect (fișier de instrucțiuni) instrumentelor.
  • [ ] Aplic un domeniu de aplicare restrâns și disciplina „planificați mai întâi” agenților CLI.
  • [ ] Trec modificările AI prin aceleași porți de verificare ca și schimbările umane.
  • [ ] Pled pentru un instrument validat, o regulă de date, un cadru de transparență și responsabilitate la nivel de echipă.

Examenul modulului

1. Ce face de fapt modelul de limbaj mare de bază al unui asistent de codare atunci când produce cod?

  • A) Prevăd în mod model cea mai probabilă continuare pe baza contextului dat ✔
  • B) Garantează rezultatul corect prin compilarea și rularea efectivă a codului
  • C) Scanează codul pe tot internetul în direct și îl copiază pe cel mai precis.
  • D) Înțelege logica codului ca un inginer uman și înțelege intenția

Clarificare: LLM nu „înțelege” codul ca un om; Acesta generează cea mai probabilă continuare a contextului dat, pe baza modelelor pe care le învață dintr-un bazin foarte mare de text și cod. Prin urmare, calitatea rezultatelor depinde direct de calitatea contextului și a instrucțiunii pe care le oferiți, iar fiecare rezultat trebuie validat.

2. Cum îl numești atunci când AI inventează în mod convingător o funcție sau o bibliotecă inexistentă și care este singurul antidot real?

  • A) Aceasta se numește eroare de compilare; Antidotul este un echipament mai puternic
  • B) Aceasta se numește halucinație; Antidotul este verificarea codului și a fiecărui API utilizat ✔
  • C) Aceasta se numește regresie; Antidotul este repornirea modelului
  • D) Aceasta se numește depășire de context; Antidotul este scurtarea promptului

Descriere: Aceasta se numește halucinație și provoacă una dintre cele mai scumpe erori din software. Singurul antidot real este verificarea: confirmarea faptului că fiecare funcție, API și pachet folosit există și că codul funcționează. Tonul încrezător al modelului nu este o dovadă de acuratețe.

3. Care abordare îmbunătățește cel mai mult calitatea și consistența rezultatelor atunci când se generează cod cu AI?

  • A) Eliberarea modelului spunând „scrie-mi asta” fără a da niciun context
  • B) Scrierea celei mai lungi și fanteziste prompturi posibile
  • C) Specificați și dați exemple de contract de intrare/ieșire, cazuri marginale, versiune și stil ✔
  • D) Combinarea directă a codului generat fără a-l citi

Explicație: Determinarea tipurilor de intrare/ieșire ale funcției (contract), cazuri marginale, constrângere de limbă/versiune și stil și oferirea unui exemplu modelului permite trecerea de la predicție la precizie. Cererile fără context „scrie-mi asta” produc cod care este diferit de fiecare dată și ocolește adesea cazurile marginale.

4. Când explorați o bază de cod străină cu AI, numele unei funcții poate fi „validateAndSave”, dar rezumatul AI poate fi incorect. Care este abordarea corectă?

  • A) Încredere deplină în rezumatul AI, deoarece numele se explică de la sine
  • B) Schimbarea directă a funcției fără a o citi
  • C) Decizi doar privind numele funcției
  • D) Tratați descrierea AI ca pe o ipoteză și verificați afirmațiile critice rând cu rând în cod ✔

Explicație: AI poate să se uite la numele din cod și să vă spună „ce arată ca face”, dar în realitate logica poate fi diferită (sau chiar inversată). Deci explicația AI este o ipoteză; Afirmațiile critice, în special cele care implică securitate, autoritate sau flux de bani, ar trebui să fie verificate vizual pe liniile relevante.

5. Care este cel mai mare pericol în a spune „AI sa uitat, este clar” în examinarea codului asistată de AI?

  • A) AI poate produce negative false; Greșelile reale ratate creează o încredere falsă ✔
  • B) Revizuirea AI este prea lentă, așa că pierde timp
  • C) Echipa nu înțelege pentru că AI-ul comentează doar în engleză
  • D) PR nu converg deoarece AI suprainterpretează întotdeauna

Explicație: AI produce atât fals pozitive (semnalarea unei probleme acolo unde nu există), cât și fals negative (lipsește bug-ul real). Falsele negative sunt tăcute; Cele mai periculoase greșeli sunt cele care nu sunt deloc menționate în recenzie. Deci AI este un prim filtru, nu o aprobare; Decizia de fuzionare aparține unei persoane responsabile.

6. Care este cea mai insidioasă capcană care apare atunci când doar îi dai AI codul și testele de printare?

  • A) AI scrie întotdeauna prea multe teste și umflă baza de cod
  • B) AI testează comportamentul curent (poate greșit) al codului ca fiind „corect” și remediază eroarea ✔
  • C) AI șterge automat codul atunci când scrieți teste
  • D) AI scrie teste nu numai pentru calea fericită, ci întotdeauna pentru cazul limită

Explicație: AI tinde să se uite la cod și să scrie afirmații care testează comportamentul actual. Dacă codul este greșit de la început, AI remediază acest comportament greșit drept „corect”. Prin urmare, așteptările testului ar trebui să fie scrise în conformitate cu regula (specificația) cerută, nu conform ieșirii curente a codului.

7. Ce determină cel mai mult acuratețea ipotezelor la depanarea unui bug cu AI?

  • A) Cât de politicos este scris promptul.
  • B) De câte ori a fost pusă din nou întrebarea
  • C) Calitatea dovezilor furnizate modelului: mesajul de eroare complet, urmărirea stivei, intrarea și comportamentul așteptat ✔
  • D) În ce temă de culoare este scris codul?

Explicație: AI nu vede eroarea așa cum o vedeți dumneavoastră; El știe doar dovezile pe care i le oferiți. Având în vedere mesajul de eroare complet, urmărirea stivei, intrarea de declanșare și comportamentul așteptat, modelul enumeră posibilitățile reale; Dacă nu există dovezi, se face o presupunere (halucinație) și te conduce pe drumul greșit.

8. Care este cel mai important pas înainte de a oferi jurnalele de producție AI pentru analiză?

  • A) Lipirea jurnalului ca atare, acoperind întreaga zi
  • B) Convertiți mai întâi jurnalul în majuscule
  • C) Aranjarea liniilor de jurnal în ordine alfabetică
  • D) Mascarea datelor și secretelor personale și oferirea doar a ferestrei relevante ✔

Descriere: jurnalele de producție brute conțin IP, e-mail, ID de sesiune, simbol și uneori secret deschis. Lipirea lor într-un instrument AI fără a le masca este o încălcare gravă a confidențialității. În plus, jurnalul trebuie filtrat într-o fereastră de timp restrânsă; Dar prima necesitate este curățarea datelor sensibile.

9. Ce ar trebui făcut dacă AI spune că două evenimente au avut loc „simultan” în analiza jurnalului și declară unul drept cauză principală?

  • A) Ignorarea corelației ca cauzalitate și verificarea afirmației cu metrici și cod ✔
  • B) Acceptarea cauzei ca fiind definitivă deoarece AI stabilește o relație de timp
  • C) Repornirea imediată a primei componente acuzate
  • D) Ștergerea completă a jurnalelor și colectarea lor din nou

Explicație: Cea mai frecventă capcană în analiza jurnalelor este corelarea confuză cu cauzalitatea. Relația de timp stabilită de AI este un indiciu, nu o dovadă. Adevărata cauzalitate necesită sincronizare, mecanism și, dacă este posibil, repetabilitate; Afirmația trebuie validată cu valori și cod.

10. Care este regula de aur nenegociabilă atunci când se refactorizează cu AI și ce o asigură?

  • A) Codul ar trebui să fie mai scurt; Numărul de linii garantează acest lucru
  • B) Nicio schimbare a comportamentului; testele care surprind comportamentul actual asigură acest lucru ✔
  • C) Codul conține mai multe comentarii; AI garantează acest lucru
  • D) Rescrierea întregului fișier deodată; agentul garantează acest lucru

Explicație: Refactorizarea este îmbunătățirea structurii interne a codului fără a-i modifica comportamentul extern; Regula de aur este că comportamentul rămâne constant. Ceea ce asigură acest lucru este testarea: un testnet care surprinde comportamentul curent înainte de a-l schimba este configurat și rulat după fiecare pas. Refactorizarea fără un testnet este un joc de noroc.

11. Care este nivelul producției de documentație pe care AI nu îl poate cunoaște și este periculos să îl inventeze?

  • A) Cum să rulați pașii de instalare
  • B) Lista parametrilor unei funcții
  • C) Justificarea „de ce” o decizie de proiectare a fost luată în acest fel ✔
  • D) În ce limbă este scris codul?

Descriere: AI poate extrage stratul „ce/cum” (ce face funcția, cum este configurată) din cod; dar nu poate cunoaște stratul „de ce” (motivul de proiectare pentru o decizie, motivul unei valori limită). Un „motiv” inventat este mai periculos decât nicio justificare; Proprietarul codului trebuie să adauge acest strat.

12. Ce ar trebui să facă un dezvoltator dacă dorește să lipească un fișier de configurare care conține o cheie API live într-un instrument AI neaprobat în timp ce rezolvă o eroare urgentă?

  • A) Pentru viteză, lipiți fișierul așa cum este și apoi ștergeți chatul
  • B) Adăugați o notă „confidențială” la sfârșitul fișierului și trimiteți-o
  • C) Lăsați cheia și schimbați doar numele fișierului
  • D) Eliminați/mascați secretele și oferiți numai contextul nesensibil necesar ✔

Dezvăluire: Secretele, datele personale și bunurile confidențiale nu trebuie niciodată introduse în mijloace neaprobate; Urgența nu suspendă această linie roșie. Abordarea corectă este de a extrage/masca mai întâi secretele și de a oferi doar contextul necesar, nesensibil. Dacă încă se scurge un secret, primul lucru de făcut este să rotiți imediat cheia respectivă.

13. Un cod generat de AI trece testarea și rulează în producție. Acest lucru dovedește că codul este sigur?

  • A) Nu; „funcționare” nu înseamnă sigur, securitatea necesită un strat separat de autentificare ✔
  • B) Da; Codul care trece testul este sigur prin definiție
  • C) Da; Rularea acestuia în producție elimină toate vulnerabilitățile
  • D) Nu; dar securitatea contează doar dacă codul este lent

Clarificare: „A lucra” nu este același lucru cu „securizat”. Chiar dacă codul conține o vulnerabilitate, cum ar fi injecția SQL, poate trece testarea și poate rula fără probleme; Vulnerabilitatea este dezvăluită doar atunci când un atacator o găsește. Prin urmare, pe lângă acuratețe, revizuirea și scanările orientate spre securitate, cum ar fi SAST, ar trebui să fie efectuate ca un strat separat.

14. Care este cea mai sigură disciplină atunci când dați o sarcină cu mai multe fișiere unui agent CLI (instrument autonom care poate modifica fișiere și rula comenzi)?

  • A) Spuneți agentului „îmbunătățiți acest modul” și oferiți libertate deplină
  • B) Acordarea unui domeniu de aplicare restrâns și a criteriilor de acceptare, solicitarea mai întâi a unui plan, aprobarea acestuia, implementarea lui pas cu pas și efectuarea testelor ✔
  • C) Îmbinați direct toate modificările agentului fără a le revizui
  • D) Oferirea agentului de acces nerestricționat la mediul de producție și la datele confidențiale

Explicație: Pe măsură ce autonomia crește, și controlul ar trebui să crească. Acordarea agentului de o sferă îngustă și criterii clare de acceptare, mai întâi cerând un plan fără modificări, aprobând planul, apoi punându-l în aplicare pas cu pas și derulând teste la fiecare pas; Împiedică modificările ample, care nu pot fi revizuite și care trebuie anulate.

15. Cine are răspunderea care decurge din codul generat de AI în software-ul critic pentru securitate (de exemplu, plată sau autentificare)?

  • A) Deoarece codul provine de la AI, este în furnizorul de vehicule
  • B) Dacă IA este suficient de dezvoltată, nimeni nu are; nu trebuie verificat
  • C) Echipa/inginerul care examinează, asamblează și distribuie codul; AI nu înlocuiește consimțământul ✔
  • D) Doar persoana care scrie promptul, nu cei care îl revizuiesc

Descriere: AI este un multiplicator de viteză și un generator de planuri; nu își poate asuma responsabilitatea. Responsabilitatea pentru orice erori, vulnerabilități sau încălcări care decurg din codul în producție revine echipei care revizuiește, asambla și distribuie codul respectiv. În zonele critice din punct de vedere al siguranței, ieșirea AI nu este un substitut pentru revizuirea și aprobarea de către un inginer calificat în nicio circumstanță.