A jobb eszközök rontották a Copilot kódellenőrzését

A GitHub Copilot kódellenőrzése kezdetben drágább lett, és kevesebb hasznos hibát talált, miután a Copilot CLI megosztott eszközeire álltak át. A GitHub szerint a gondot nem az eszközök, hanem a hozzájuk adott utasítások okozták.
- A Copilot kódellenőrzése drágább lett a közös CLI-eszközökre való átállás után.
- A rendszer túl szélesen böngészte a repositorykat a pull requestek diffje helyett.
- A GitHub átírta az eszközhasználati utasításokat a kódellenőrzési munkafolyamathoz.
- Az átdolgozás után az átlagos ellenőrzési költség nagyjából 20 százalékkal csökkent.
- A GitHub szerint a felülvizsgálat minősége közben változatlan maradt.
Egyszerű cserének indult, visszaesés lett belőle
A GitHub július 10-i beszámolója szerint a Copilot kódellenőrzése a pull requestek diffjeit vizsgálja, majd a kapcsolódó kód feltérképezésével próbálja megtalálni a kiadás előtt álló problémákat. A rendszer korábban saját kódfeltáró eszközöket használt, ezeket azonban a Copilot CLI által használt, közös eszközökre cserélték.
Az új készlet három Unix ihlette eszközből áll: a grep szövegek, szimbólumok és hívási helyek keresésére, a glob fájlok és könyvtárak felderítésére, valamint a view a már azonosított fájlok vagy kódrészletek megtekintésére szolgál.
A váltás célja a párhuzamos eszközmegvalósítások megszüntetése, egy közös fejlesztési hely létrehozása és az eszközfejlesztések egyszerűbb átvitele volt a Copilot különböző termékei között. A GitHub szerint a közös eszközöket a Copilot agent termékei, köztük a GitHub Copilot cloud agent is használják.
Az offline tesztek azonban azt mutatták, hogy a felülvizsgálatok átlagos költsége nőtt, miközben a rendszer kevesebb hasznos megjegyzést tett. A korábbi eszközök a keresett vagy kért kódrészletekhez automatikusan további környező kódot is visszaadhattak. Ez növelte a tokenköltséget, ugyanakkor illeszkedett ahhoz, ahogyan a korábbi modellek gyakran dolgoztak.
A rendszer böngészni kezdett ahelyett, hogy ellenőrzött volna
A GitHub belső Copilot kódellenőrzési tesztjei nemcsak egy végső pontszámot mutattak, hanem az ügynök teljes útját is: milyen eszközöket hívott meg, mekkora kimenetet kapott, hol történt hiba, és hogy közeledett-e a bizonyítékhoz vagy egyre szélesebbre nyitotta a keresést.
A nyomkövetések alapján a megosztott eszközökkel a rendszer gyakran úgy viselkedett, mintha egy teljes repository megértésén dolgozna. Szélesen keresett, valószínű fájlútvonalakat találgatott, nagyobb kódrészleteket olvasott be, majd az új információk alapján tovább bővítette a keresést.
A GitHub szerint ez hasznos lehet, amikor egy kódolási asszisztensnek egy teljes területet kell feltérképeznie egy módosítás előtt. A pull requestek ellenőrzése azonban szűkebb feladat. Ilyenkor a diffből érdemes kiindulni, majd célzott kérdéseket feltenni: hol hívják az érintett függvényt, máshol is használják-e a konfigurációs kulcsot, vagy található-e hasonló teszt és segédfüggvény.
Minden eszközeredmény bekerül az ügynök munkakörnyezetébe. A felesleges fájltartalom így növeli a későbbi gondolkodás költségét, és a GitHub szerint a vizsgálat fókuszát is gyengítheti. A következtetésük az volt, hogy a megosztott eszközök működtek, az utasítások viszont a Copilot CLI általános kódolási munkafolyamatához igazodtak, nem a kódellenőrzéshez.
A GitHub átírta az ügynök munkafolyamatát
A következő változatokban a GitHub kifejezetten a kódellenőrzési feladathoz igazította az utasításokat. Az elvárt folyamat szerint a rendszernek először a difffel kell kezdenie, és konkrét ellenőrzési kérdéseket kell megfogalmaznia. Ezután a grep és a glob segítségével kell szűkítenie a keresést, majd csak akkor használni a view eszközt, amikor már ismert a szükséges fájl vagy kódrészlet.
Az új irányelvek a keresések csoportosítását is előnyben részesítik. A rendszernek előbb olcsó felderítéseket kell végeznie, és csak ezután beolvasnia a célzott kódrészleteket. Ha egy keresés hibázik, egyszerűbb, javított lekérdezéssel kell próbálkoznia. Hibás fájlútvonal esetén a közeli útvonalak találgatása helyett a glob használata a javasolt következő lépés.
A GitHub példája szerint, ha a diff egy engedélyezési segédfüggvényt módosít, a rendszernek nem az összes hívó teljes fájlját kell megnyitnia. Először a hívókat kell megkeresnie, majd a valószínű útvonalak és fájlok azonosítása után csak a legfontosabb hívási tartományokat kell elolvasnia. Ezután dönthet arról, hogy valamelyik hívó megváltoztatja-e a kockázatot.
A GitHub szerint a szövegezésben végrehajtott változtatás nagy hatással volt az ügynök működésére. A korábbi „böngéssz, olvass, keress újra” ritmust a „kérdezz, szűkíts, olvass, dönts” folyamat váltotta fel. A beszámoló szerint az átdolgozás után az átlagos ellenőrzési költség nagyjából 20 százalékkal csökkent, miközben a felülvizsgálat minősége változatlan maradt.


