Szakdolgozathoz csináltam egy AI-os eszközt, ami megmondja hogy egy dependency frissítés eltöri-e a kódodat, és visszajelzés kellene

Posted by barnakun@reddit | programmingHungary | View on Reddit | 25 comments

Sziasztok!

Szakdolgozatomhoz fejlesztettem egy nyílt forráskódú eszközt Migratowl névvel, és örülnék ha néhányan ránéznétek és visszajelzést adnátok, akár az ötletre, akár a megközelítésre.

A probléma: ha van egy projektetek amiben sok dependency van, és jön egy Dependabot PR hogy "frissítsd ezt a 40 csomagot", honnan tudjátok melyik töri el a dolgot? Általában manuálisan futtatjátok a teszteket, olvasgatjátok a changelog-ot, és reménykedtek.

Amit csináltam: egy AI agent ami ezt automatizálja. Kap egy repo URL-t, és:

  1. Klónozza a repót egy izolált Kubernetes podba (nem a hoston fut semmi, a biztonság kötelező volt a szakdolgozatnál)
  2. Frissíti az összes elavult dependencyt (pyproject.toml, package.json, go.mod, Cargo.toml, pom.xml)
  3. Lefuttatja a teszteket a sandboxban
  4. Ha valami eltörik, az AI agent elolvassa a hibaüzenetet, lekéri a releváns changelog részt, és csomagonként ad egy struktúrált jelentést

A kimenet például így néz ki:

{
  "dependency_name": "requests",
  "is_breaking": true,
  "error_summary": "ImportError: cannot import name 'PreparedRequest'",
  "changelog_citation": "## 3.0.0 - Removed PreparedRequest from the public API.",
  "suggested_fix": "Cseréld le a 'from requests import PreparedRequest' importot 'requests.models.PreparedRequest'-re.",
  "confidence": 0.95
}

Van benne egy confidence scoring rész is, ami eldönti hogy egy csomagnál elég-e a bulk teszt eredménye, vagy külön subagenttel kell izoláltan újrafuttatni. Ezt tartom a leginnovatívabb résznek a szakdolgozatban, és szívesen hallanám mit gondoltok róla.

Stack: Python 3.13 / FastAPI / LangGraph / Anthropic API / Kubernetes

Nyílt forráskódú, Apache 2.0 licenc.

GitHub: https://github.com/bitkaio/migratowl

Nem mondom hogy tökéletes, épp ezért kérem a véleményeteket. 😅 Különösen érdekelne:

Előre is köszönöm mindenkinek!