A káosz értelmezése: hogyan alakítják át a tudásgráfok az AI-alapú fejlesztést
A kód megértése helyett csak a kódot kapod?
Valószínűleg te is találkoztál már ezzel. Megkérsz egy AI-t, hogy segítsen egy funkció fejlesztésében, és szép kódot ad vissza – csak épp nem érti az egész rendszeredet. Nem tudja, hogy az HTTP-kliensed az a központi elem, ami össze van kötve a projekt nagy részével. Vagy hogy az authentikációban van egy rejtett függőség, ami később problémát okozhat.
Graphify ezt a hiányt próbálja pótolni. Ahelyett, hogy csak kódrészleteket gyártana, egy összefüggő térképet épít a teljes rendszeredről – függetlenül attól, hogy hány nyelvben, dokumentumban vagy diagramban van szétszórva.
Mit csinál valójában a Graphify?
Lényegében egy szemantikus indexelő a kódbázisodnak. Nem csak fájlokat listáz ki, hanem egy interaktív tudásgráfot épít, amiben látszanak a komponensek közti kapcsolatok, a kritikus integrációs pontok és a meglepő függőségek.
Három fő technikát kombinál:
Statikus elemzés szemantikával kiegészítve: Tree-sitterrel dolgozik, ami 19+ programozási nyelvből képes absztrakt szintaxisfákat és hívásgráfokat kinyerni. Ezt aztán LLM-ekkel egészíti ki,这样才能理解代码的意图,而不仅仅是其结构。
Többféle adatforrás kezelése: Nem csak a kódot érti meg, hanem Markdown fájlokat, PDF-eket, diagramokat és képeket is. Így összeköti a megvalósítást a kutatási cikkekkel, architektúra-diagramokkal és tervezési dokumentumokkal – egy közös gráfban.
Okos csoportosítás: Leiden algoritmussal azonosítja a kapcsolódó komponensek közösségeit,向没有矢量嵌入的组. Ez gyorsabb és könnyebb értelmezni.
A folyamat lépései
A Graphify három fő technikát kombinál – de a tényleges munkát egy moduláris pipeline-on keresztül végzi, melyben az alábbi hét lépés sorozatban előkommt:
- Detect – Gyűjti minden releváns fájlt a repositoryból
- Extract – Kód AST-ok és LLM-ek segítségével kinyeri a szemantikai jelentést
- Build – NetworkX gráfot épít az összes adatból
- Cluster – A kapcsolódó komponensek természetes csoportját megtalálja
- Analyze – A „god node”-okat azonosítja és a váratlan,跨横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横切横ct