Preskočiť na obsah

Kontrola s AI v LosOS Git

LosOS Reviewer číta pull requesty repozitára v LosOS Git a nechá k nim kontrolu, podobne ako to robí kontrolný bot na hostovanej forge. Beží na zariadení s tým istým jazykovým modelom ako Vytvoriť s AI, takže kód zariadenie neopustí a kontrola nič nestojí.

V každom repozitári je vypnutý, kým ho niekto nezapne.

Zapnutie​

Otvorte repozitár v LosOS Git, potom Nastavenia, a zapnite Kontrolu s AI. Prepínač vidia len administrátori repozitára.

Prepínač sa nedá zapnúť, kým je na zariadení vypnuté Vytvoriť s AI (losos.builder.enable), pretože toto nastavenie inštaluje model. Nové zariadenie si model stiahne raz, keď je prvýkrát online. Kým sťahovanie neskončí, kontroly čakajú vo fronte a pull request to uvádza.

Čo robí​

Keď sa pull request otvorí alebo znova otvorí, LosOS Reviewer skontroluje celý. Keď doň pribudnú nové commity, skontroluje to, čo tieto commity zmenili od jeho poslednej kontroly. Pri každom behu zverejní jednu kontrolu pod účtom LosOS Reviewer (losos-reviewer), označeným ako bot:

  • prehľad toho, čo pull request robí;
  • tabuľku zmenených súborov, pri každom jednu vetu o tom, čo sa zmenilo;
  • komentáre k jednotlivým riadkom, kde našiel problém. Keď ho opraví jeden zmenený riadok, komentár nesie tento riadok ako návrh.

Iba komentuje. Nikdy neschvaľuje, nežiada zmeny, nepushuje ani nezlučuje.

Na jeho komentáre odpovedáte a vyriešite ich ako komentáre kohokoľvek iného. Ak chcete, aby sa pozrel znova, vyberte LosOS Reviewer v časti Kontrolóri na pull requeste, aj keď ho už raz skontroloval. Môže to urobiť každý, kto smie na pull requeste žiadať o kontrolu.

Kým pracuje, kontroly pull requestu ukazujú riadok LosOS Reviewer s jeho postupom, napríklad „Reviewing: 2 of 5 files done“, a po skončení počet komentárov.

Čo dokáže nájsť​

Každý zmenený súbor sa číta po častiach s najviac 80 riadkami. Pri každej časti sa stanú dve veci:

  • Zariadenie skontroluje nové riadky na krátky zoznam chýb, ktorými si môže byť isté: SQL poskladané z hodnôt, premenné shellu bez úvodzoviek v príkazoch, ktoré menia súbory, kľúče a tokeny zapísané v kóde, spoločný predvolený zoznam v Pythone, rozsah o krok za koncom v Ruste, == v JavaScripte a TypeScripte, efekt v Reacte bez zoznamu závislostí a názov súboru, z ktorého sa už neodstraňujú priečinky.
  • Model dostane otázku, či nové riadky obsahujú chybu. Komentár modelu zostane, len ak menuje riadok, ktorý pull request pridáva, a cituje kód na tomto riadku. Všetko ostatné, čo povie, sa zahodí.

Koľko model pridá, závisí od jeho veľkosti. Predvolený model, Qwen2.5-Coder 1.5B, sa zmestí do zariadenia so 4 GiB pamäte. Zmeny popisuje dobre, ale chybu sám nájde zriedka, takže na takom zariadení pochádza väčšina komentárov z kontrol zariadenia. Qwen2.5-Coder 7B nájde aj vlastné chyby a potrebuje asi 8 GiB. Ak ho chcete použiť, nastavte losos.builder.model na qwen2.5-coder:7b v paneli Rozšírené. Potom ho použije aj Vytvoriť s AI.

Kontrola nie je dôkaz, že kód je správny. Pred zlúčením si kód prečítajte sami.

Čo vynechá​

  • Súbory, ktoré píšu nástroje a nikto ich nečíta riadok po riadku: lock súbory, minifikovaný a generovaný kód, obrázky a iné súbory, ktoré nie sú text.
  • Zmazané súbory a riadky, ktoré sú len odstránené.
  • Všetko za prvými 24 časťami veľkého pull requestu. Tabuľka uvádza, ktoré súbory vynechal.

Zariadenie zostane použiteľné​

Kontroly bežia po jednej, otázka po otázke, v poradí, v akom o ne niekto požiadal. Nový push nahradí nedokončenú kontrolu toho istého pull requestu a vypnutie prepínača zahodí kontroly, ktoré ešte čakajú. Na dvoch jadrách trvá jedna časť asi 10 až 20 sekúnd, takže pull request s niekoľkými súbormi je skontrolovaný za pár minút. Vytváranie vo Vytvoriť s AI a kontrola zdieľajú model a každé počká na aktuálnu otázku toho druhého.

LosOS Git sa dostane len na adresy na samotnom zariadení. Kontrolór nepoužíva zdieľané počítače siete, pretože by tak poslal váš kód na zariadenia iných ľudí.