Vyhledávání na webu

Přestaňte slepě důvěřovat GitHub Copilot: 4 důvody, proč selhává jako programovací asistent


Zkoušel jsem mnoho různých AI nástrojů pro programování, jak v práci, tak i na osobních projektech. GitHub Copilot je nejnovějším přírůstkem do mého arzenálu. Ačkoliv může být někdy skvělý pro produktivitu, setkal jsem se s tolika problémy, že mám pocit, že způsobuje spíše víc škody než užitku.

Může dělat ty nejhloupější chyby

AI může dělat chyby. HODNĚ chyb. Přesto jsem si nikdy nemyslel, že budou tak špatné, dokud jsem nepoužil GitHub Copilot. Jaké chyby, ptáte se?

Chyby v názvech proměnných. V jednom souboru je proměnná pojmenována jako 'phone', zatímco v jiném souboru je tato sama proměnná pojmenována jako 'phone_number'. Nesoulady v datových typech. V jednom souboru je proměnná správně definována jako typ datetime. Avšak v jiném souboru je tato sama proměnná nastavena jako typ string.

A ani nezačínejme s čistým kódováním a dodržováním nejlepších postupů. Jsou chvíle, kdy vygeneruje pomocnou funkci a pak ji přesto nepoužije a stejnou funkcionalitu napíše všude. V nedávném projektu způsobil ve mém kódu závodní podmínku.

A hádej, jak odpoví, když ho požádáš, aby objasnilo chybu. „Máš naprostou pravdu. Mělo by to být právě takto.“

Agent začíná dělat zbytečné úkoly

Už jste někdy narazili na LLM bota, který dělá všechno kromě toho, co jste mu řekli? GitHub Copilot někdy posouvá tuto zkušenost na další úroveň. Když ho jen požádám, aby vytvořil plán nebo něco probral, začne rovnou implementovat celou funkci. Tady je další běžný scénář, se kterým se setkávám často.

Pracuji s PostgreSQL a Pythonem na backendu. Potřebuji provádět migrace databáze. Když požádám GitHub Copilot, aby implementoval databázové modely, jde nad rámec toho, generuje migrační soubory pomocí Alembicu, pak se pokusí migraci spustit, což selže (jak se očekává kvůli nesouladu verzí), pak zkontroluje kód, změní migrační soubor, pokusí se znovu migrovat, opět selže a uvízne v tomto cyklu.

Pokud mu nepřikážu, aby nedělalo nic souvisejícího s migracemi, bude se o to pokoušet pokaždé. U kódovacího agenta by výchozí chování mělo být přísně se držet zadaného pokynu a nedělat nic víc. Tím nechci říct, že by to obecně byla špatná věc, pokud to dokáže udělat správně. Ale dělat chyby a zaseknout se v té smyčce chyb zabíjí hodně času a prostředků.

Obtížné sledovat změny souborů v režimu Agenta

Jedna z nejlepších věcí na používání kódovacího agenta je, že sám provádí změny ve souborech. Nemusíte kopírovat kód, hledat místo, kam ho vložit, a vkládat ho tam. Agent vše provede sám. Poté můžete zkontrolovat tento úryvek kódu a rozhodnout se, zda jej přijmete, nebo odmítnete.

Nicméně, nedávno jsem si všiml problému, kdy GitHub Copilot znovu generuje celý soubor s aktualizovaným kódem místo toho, aby jen vložil snippet do souboru. To vyvolává problém, že si nejsem jistý, jaká je nová změna, protože celý soubor je prezentován jako nový soubor a celý kód je nový.

Tohle zkrátka znehodnocuje smysl používání agenta, protože musím znovu projít celý soubor, abych pochopil nové změny. V posledních sezeních jsem zjistil, že agent to dělá častěji špatně, než správně. Ve skutečnosti je to ještě frustrující, když mu řeknete jen provést nejmenší změnu a agent přepíše celý soubor.

Režim Ask je chybový

Režim dotazování u kódovacích agentů je místo, kde můžete probírat věci, klást otázky (samozřejmě) k odstranění pochybností, poskytovat vysvětlení a plánovat svůj systém. Nebo to alespoň tak mělo být. V GitHub Copilot však režim dotazování funguje spíše jako zjednodušený režim agenta.

To se mi často stává, když ladím a opravují chyby. Sdílím chybu s Copilotem v režimu Ask a žádám ho, aby ji vysvětlil a řekl mi, jak ji mohu vyřešit. Dělám to tak, abych chybu správně pochopil a naučil se ji řešit, místo abych slepě věřil botovi. V ideálním případě GitHub Copilot vysvětlí chybu, ukáže část kódu, která ji způsobuje, a pak navrhne potřebné změny k jejímu opravění, někdy sdílí i kód.

Ale někdy se chová, jako by byla stále v režimu Agenta. Čte soubory pro kontext a potom se sama „pokusí“ soubory aktualizovat, přestože by to tak být nemělo. Někdy dokonce sdílí prázdné úryvky kódu. Jindy si zase stěžuje, že nástroje agenta jsou zakázané, což jí brání v aktualizaci souborů.

Nejhorší na tom? Po dokončení odpovědi omylem říká něco ve smyslu: „Provedl jsem všechny změny v kódu, které způsobovaly chyby. Nyní by mělo být opraveno.“

Hmm, ne? To je jako přilévat olej do ohně. Režim Ask mi při mých potřebách od začátku používání Copilotu vůbec nepomáhal. Používání režimu Agent i na ty nejmenší věci mi přijde jako přehánění, nemluvě o zdrojích, které to vyžaduje.


Po všem tomto přemýšlím o přechodu na jiný nástroj pro kódování, jako je Claude Code nebo Cursor. GitHub Copilot si ale nechám pro občasné menší projekty a rychlý vývoj. Doufejme, že tým za ním bude pracovat na jeho vylepšení, aby se vyrovnal ostatním konkurentům.

Související články