Vhodna AI na programovanie (pre neprogramatora)

Re:Vhodna AI na programovanie (pre neprogramatora)
« Odpověď #45 kdy: Dnes v 09:41:43 »
Zatím tady nezazněla jedna rovina, která mi po nějakých zkušenostech s používáním LLM při vývoji přijde úplně zásadní.

LLM se z mého pohledu opravdu chová jako juniorní kolega, který poměrně do hloubky zvládá defakto libovolnou (veřejně známou) technologii. To je obrovská výhoda. Ale současně se musí držet na extrémně krátkém provazu. Protože rychle generuje velké množství kódu/změn (některé vynikající, některé dobré, některé špatné), jsou k ní naprosto nezbytné velice kvalitní nástroje pro review a akceptaci změn.

A na toolingu prostě narážím. Jsem zvyklý na velice produktivní prostředí v IntelliJ - udržování zatím nekomitnutých změn v samostatných changesetech a přepínání mezi nimi, snadné přesouvání kódu do shelfů. A především přehledný a snadno ovladatelný diff viewer. Bez toho se vývoj nedá pořádně dělat ani v lidech, natož s "dychtivým" juniorem AI, který diffů k review vygeneruje mraky.

Bohužel integrace IntelliJ integrace s kódovacími modely/postupy AI mi přijde hodně pozadu oproti klasice VSCode + integrovaný Copilot Chat (chápu, MS má obojí). Chat vidí na všechny soubory, čte si je jak model potřebuje, spolupracuje daleko agilněji. Jenže navrhne změny a teď co s nimi. To daleko nejdůležitější - diff viewer - je velice nepřehledný, skoro bych řekl  téměř nepoužitelný. Nemám k dispozici rozhození ucelených změn do changesetů, ani integrované shelfy, abych si změny mohl uložit pro později. Můžu maximálně co nejčastěji komitovat, abych mohl diffovat jen minimální změny (tedy tak poslední odpověď copilotu), to ale vede na zcela nepřehlednou a nic neříkající historii repozitáře, což je úplně stejně špatně. Často to pak končí "peču na to, beru všechno", čímž jde celý projekt do kopru a x hodin vývoje končí revertem a začneme znovu...

Jaké máte s tímto praktické zkušenosti? Nějak mi nejde do hlavy, že/jak by někdo efektivně dlouhodobě používal nástroje VSCodu pro efektivní review výstupu copilotu. To je pro mě největší překážkou opravdu produktivního využívání AI pro vývoj. IMO jeho schopnosti už jsou docela na úrovni, ale dostupné nástroje pro "hlídání na krátkém provazu" jsou velice nedostačující.

Takže nakonec mi produktivnější přijde vygenerovat změny ve webovém prostředí copilotu a kopírovat je ručně přes "diff with clipboard" v IntelliJ. Což je opruz, ale vede na udržitelný vývoj.

Nebo je již nějaká integrace do IntelliJ na úrovni VSCodu, ale s produktivním pohodlím správy změn v IntelliJ? Díky!
« Poslední změna: Dnes v 09:51:22 od redustin »


Re:Vhodna AI na programovanie (pre neprogramatora)
« Odpověď #46 kdy: Dnes v 11:32:19 »
LLM se z mého pohledu opravdu chová jako juniorní kolega, který poměrně do hloubky zvládá defakto libovolnou (veřejně známou) technologii. To je obrovská výhoda. Ale současně se musí držet na extrémně krátkém provazu. Protože rychle generuje velké množství kódu/změn (některé vynikající, některé dobré, některé špatné), jsou k ní naprosto nezbytné velice kvalitní nástroje pro review a akceptaci změn.

Presne toto - "Urobil som úpravy a,b,c ktoré si chcel" "... A ešte som urobil niečo čo si vôbec nechcel, lebo sa mi to tak zdalo lepšie".  Plus cestou ešte niečo aj pokazí a ani o tom nevie

Re:Vhodna AI na programovanie (pre neprogramatora)
« Odpověď #47 kdy: Dnes v 13:08:39 »
Presne toto - "Urobil som úpravy a,b,c ktoré si chcel" "... A ešte som urobil niečo čo si vôbec nechcel, lebo sa mi to tak zdalo lepšie".  Plus cestou ešte niečo aj pokazí a ani o tom nevie

S "přísným" user promptem se mi tohle u webového copilotu už delší dobu téměř nestává. Ale ten "přemýšlící" režim ve VSCode chatu je úplně jiný, ukecaný a utržený z řetězu, který se mi nedaří zkrátit...

Zopper

  • *****
  • 983
    • Zobrazit profil
Re:Vhodna AI na programovanie (pre neprogramatora)
« Odpověď #48 kdy: Dnes v 14:06:05 »
... A ještě horší je to, že ta session od modelů je adaptabilní a přizpůsobivá jenom v rámci session a pokud dojde k přerušení musí se začít znova, a protože se hlavní server se neučí pořádně z komunikace tak při nové session opět opakuje ty samé chybné rady protože neví že jsou nefungují ...

Doporučuje se postupovat tak, že dialogy s AI člověk ukládá do .md souborů v projektu, odkud si většina nástrojů umí brát kontext. AI pak bere ohled na zavrhnuté směry vývoje apod. Někdy je pak naopak problém AI přesvědčit, že otvíráme nové téma nebo novou hypotézu  :D
Jo, tohle je důležitá ingredience té tajné omáčky, kvůli které to některým lidem generuje užitečné věci a jiným to akorát hází klacky pod nohy.

Nebo je již nějaká integrace do IntelliJ na úrovni VSCodu, ale s produktivním pohodlím správy změn v IntelliJ? Díky!

Pro IDEA bych taky velmi rád viděl něco, jako dělá Antigravity - má svůj vlastní diff space, který se plní tím LLM, a ukazuje inline diff, co AI změnila - bez ohledu na to, co je, nebo není commitnuté. A pak můžu selektivně přijmout/odmítnout jednotlivé chunky. Takže commit se dá dělat logicky, kdy potřebuji, a přitom je vidět, jaké změny LLM udělalo a ještě jsi je neapprovnul. Jen to je na začátku lehce matoucí, než si člověk zpracuje ten rozdíl, kdy je kde co vidět v jakém diffu. :-)

Re:Vhodna AI na programovanie (pre neprogramatora)
« Odpověď #49 kdy: Dnes v 15:02:00 »


Doporučuje se postupovat tak, že dialogy s AI člověk ukládá do .md souborů v projektu, odkud si většina nástrojů umí brát kontext. AI pak bere ohled na zavrhnuté směry vývoje apod. Někdy je pak naopak problém AI přesvědčit, že otvíráme nové téma nebo novou hypotézu  :D
Jo, tohle je důležitá ingredience té tajné omáčky, kvůli které to některým lidem generuje užitečné věci a jiným to akorát hází klacky pod nohy.

To ukládání dialogů s AI se provádí automaticky, nebo si je člověk musí vybrat a uložit sám? Dělá se nějaké "sesypání", aby to nebobtnalo? Historie dialogů - přijde mi, že jen malá část z toho by mohla být užitečná.

Citace
Pro IDEA bych taky velmi rád viděl něco, jako dělá Antigravity - má svůj vlastní diff space, který se plní tím LLM, a ukazuje inline diff, co AI změnila - bez ohledu na to, co je, nebo není commitnuté. A pak můžu selektivně přijmout/odmítnout jednotlivé chunky. Takže commit se dá dělat logicky, kdy potřebuji, a přitom je vidět, jaké změny LLM udělalo a ještě jsi je neapprovnul. Jen to je na začátku lehce matoucí, než si člověk zpracuje ten rozdíl, kdy je kde co vidět v jakém diffu. :-)

S Antigravity zkušenost nemám. VSCode má také vrstvu změn navržených LLM a potvrzuje se to na úrovni chunku, ale přijde mi to velice nepřehledné (chunků bývá spoustu, nikde jsem nenašel seznam změněných souborů, abych si je následně sám diffnul, abych to viděl v kontextu. Navíc jak jsem říkal ten diff viewer je hodně syrový. Defakto po chvíli člověk začne potvrzovat změny hromadně, což akorát vede k zaneřádění kódu a člověk ztratí nad kódem kontrolu.


Zopper

  • *****
  • 983
    • Zobrazit profil
Re:Vhodna AI na programovanie (pre neprogramatora)
« Odpověď #50 kdy: Dnes v 20:45:41 »
To ukládání dialogů s AI se provádí automaticky, nebo si je člověk musí vybrat a uložit sám? Dělá se nějaké "sesypání", aby to nebobtnalo? Historie dialogů - přijde mi, že jen malá část z toho by mohla být užitečná.
Nejde o ukládání dialogů, ale o dokumentaci/plán. Třeba dvě A4 markdownu, které obsahují:
  • co je za úkol
  • high-level plán jak toho dosáhnout
  • high-level plán jak toho dosáhnout
  • dekompozici na nějaké kroky s checkboxy, co se postupně při práci zaškrtávají (např. 1. přidat metodu do třídy, 2. najít použití původní metody a přepsat je na novou)
  • důležité informace jako "použít knihovnu X" nebo "Nesahat na Y"
  • jak to testovat,
  • atd ...
A ten model, který ten plán nejdřív na základě diskuze s tebou vytvořil, si to má pravidelně kontrolovat a updatovat. A k tomu máš ještě další takové soubory, dle velikosti a složitosti projektu, které shrnují co se kde dělá, proč tady pořád používáš tu 5 let starou verzi Hibernate, jak má ten model psát komentáře, jestli má dělat commity (a s jakým textem) nebo si je chceš dělat kompletně sám...

Cílem je, abys nemusel všechno pořád vysvětlovat, nebo si ten model procházet pokaždé celý projekt. Protože kontextové okno je omezené (počítá se v kB) a všechno, co ten model má dělat a jak, se tam musí vlézt. Celý projekt se tam typicky nevleze, ale pár markdownů (které si to navíc umí načíst podle potřeby, tj. nestraší v kontextu, když nejsou potřeba) se tam vlezou krásně. Plus třeba u Kilo Code je vidět, kdy se děje context compression, třeba ze 110 kB na 20 kB - často když tomu řeknu "ok, tahle část je hotová." Jak to dělají jiné pluginy si teď nevybavuju/nevím.

Ty All-in-one věci (jako Antigravity) něco takového umí dělat automaticky. Coding asistenti jako plugin do VSCode to standardně nedělají, aspoň co jsem viděl. Ale ty lepší pluginy (hlavně ty univerzální, které přistupují přes API a platí se za tokeny, místo těch free-to-use co sdílí limity s předplatným za pětistovku) k tomu jdou dokopat vhodným obsahem AGENTS.md a takových souborů (a občasným připomenutím).

A ano, celé tohle je tady hodně zestručněné a já jsem tady možná power-user, ale rozhodně ne expert.  :)