Asosiy kontentga o‘tish
AI qo‘llanmalari

RepoPilot yordamida tekshiruvga asoslangan GitHub muammolari va PR tuzatishlarini qanday bajarish

RepoPilot’ni o‘rnatish, ishonchli testlar va repozitoriy siyosatlarini sozlash, pull requestlarni ko‘rib chiqish, muammolarni qayta yaratish, Codex yaratgan tuzatishlarni tekshirish, vazifalarni boshqarish hamda mos tuzatishlarni qoralama pull requestlar sifatida e’lon qilishni o‘rganing, bunda boshqaruv repozitoriy xizmat ko‘rsatuvchilarida qoladi.

RepoPilot yordamida tekshiruvga asoslangan GitHub muammolari va PR tuzatishlarini bajarish

RepoPilot nima qiladi

RepoPilot — tekshiruvga asoslangan dasturiy iteratsiya uchun o‘z serveringizda joylashtiriladigan boshqaruv vositasi. U tanlangan GitHub Issues va shu repozitoriydagi pull requestlarni qoidalarni ko‘rib chiqish, testlar yaratish, xatoni qayta yuzaga keltirish, kodni tuzatish, mustaqil tekshirish hamda tuzatish tarmog‘i va qoralama pull requestni ixtiyoriy nashr etishni qamrab oluvchi cheklangan ish jarayoniga aylantiradi.

Loyiha repozitoriy qoidalarini tushunish, talabga asoslangan testlarni ishlab chiqish va ishlab chiqarish kodiga o‘zgartirishlar taklif qilish uchun OpenAI Codex SDKdan foydalanadi. Alohida Docker runner mahkamlangan repozitoriy snapshotlarida testlarni bajaradi. Boshqaruv vositasi natijani faqat sozlangan dalillar va siyosat tekshiruvlaridan o‘tilgandagina nashr etadi.

RepoPilot o‘zgarishlarni avtomatik birlashtirmaydi yoki joylashtirmaydi. Ishni qo‘llab-quvvatlovchilar tanlaydi, dalillarni ko‘rib chiqadi va yakuniy birlashtirish qarorini o‘zida saqlab qoladi.

Ish jarayoni qanday cheklanadi

  1. RepoPilot tegishli base va head commitlarini mahkamlaydi.
  2. U base tarmog‘idan ishonchli siyosatni, jumladan tegishli AGENTS.md ko‘rsatmalarini yuklaydi.
  3. Codex o‘zgarishni ko‘rib chiqadi va testlar yoki tuzatish nomzodlarini taklif qiladi.
  4. Ishlab chiqilgan testlar ishlab chiqarish kodi tuzatilishidan oldin muzlatiladi.
  5. Alohida runner mustaqil snapshotlarda testlarni bajaradi.
  6. Boshqaruv vositasi barqaror test identifikatorlari, xato izlari, himoyalangan yo‘llar, siyosat natijalari va sozlangan cheklovlarni tekshiradi.
  7. Mos keladigan natija alohida tarmoqqa joylashtirilishi va inson ko‘rib chiqishi uchun qoralama pull request sifatida yuborilishi mumkin.

Pull requestlar uchun RepoPilot base va head xatti-harakatlarini taqqoslaydi. Issues uchun esa avval muvaffaqiyatli o‘tgan asl baseline talab qilinadi, keyin tuzatish taklif etilishidan oldin xabar qilingan nuqson yangi muzlatilgan test bilan qayta yuzaga keltiriladi.

Asosiy imkoniyatlar va joriy qamrov

  • Mahkamlangan kiritmalar: Base va head SHA'lari, sarlavha va matn dayjestlari, yangilikni tekshirish hamda bekor qilish eskirgan kiritmalar asosida tekshiruv o‘tkazilishining oldini olishga yordam beradi.
  • Ishonchli repozitoriy qoidalari: Statik siyosatlar literal tekshiruvlar va JavaScript yoki TypeScript chaqiruv qoidalarini qo‘llab-quvvatlaydi. Base tarmog‘idagi ichma-ich joylashgan AGENTS.md fayllari semantik ko‘rib chiqishga yo‘l-yo‘riq berishi mumkin.
  • Mustaqil test bajarilishi: Boshqaruv vositasi bajarishni model bahosiga ishonish o‘rniga alohida Docker runnerga topshiradi.
  • Bir nechta test ekotizimlari: 1.3.0 versiyasi Node test runneri, Vitest, pytest, Go testlari va mos keluvchi JUnit XML dalillarini qo‘llab-quvvatlaydi.
  • Monorepo qo‘llab-quvvatlovi: Konfiguratsiyalarda ishchi kataloglar, nomlangan bir nechta test buyruqlari va vaqtinchalik dependency xizmatlaridan foydalanish mumkin.
  • Cheklangan tuzatish: Urinishlar, qayta urinishlar, model chaqiruvlari, tokenlar, topshiriq bajarilishlari va umumiy topshiriq vaqti cheklanishi mumkin.
  • Kuzatiladigan hisobotlar: Atomik JSON hisobotlari va qisqartirilgan Markdown xulosalari topilmalar, test natijalari, patchlar, urinishlar va nashr holatini saqlab qoladi.
  • Operatsion tiklash: Topshiriq buyruqlari tekshirish, bekor qilish, davom ettirish va qayta ishga tushirishni qo‘llab-quvvatlaydi. recover oqimi ko‘rib chiqish va tasdiqlangan tozalash orqali egalik qilinadigan ishdan chiqish qoldiqlarini boshqaradi.

Joriy amalga oshirish 10 000 tagacha fayl yoki 16 MiB hajmdagi ochiq, matnga asoslangan repozitoriylarga mo‘ljallangan. U fork pull requestlarini bajarish, brauzer orqali end-to-end testlash, joylashtirilgan boshqaruv paneli, webhooklar, taqsimlangan navbat, dependencylarni avtomatik o‘rnatish, avtomatik birlashtirish yoki joylashtirishni taqdim etmaydi.

Talablar

Node.js o‘rnatishni istamasangiz, Linux, Windows yoki macOS uchun RepoPilot 1.3.0 portativ relizini yuklab olishingiz mumkin. Manbadan o‘rnatish uchun quyidagilarni tayyorlang:

  • Tavsiya etiladigan versiya bo‘lgan Node.js 22
  • npm va Git
  • Linux konteynerlarini ishga tushirish uchun sozlangan Docker
  • Codex asosidagi ko‘rib chiqish, test rejalashtirish yoki tuzatish yoqilganda OpenAI API kaliti
  • GitHub’dan foydalanish yoki nashr etish talab qilinganda GitHub tokeni

1.3.0 versiyasidagi controller va Agent image versiyalaridan foydalaning. Docker image'lari va loyiha dependencylari oldindan ta’minlanishi kerak, chunki test konteynerlarida sukut bo‘yicha tarmoqdan foydalanish imkoni yo‘q.

RepoPilotni manbadan o‘rnatish

1. Loyihani o‘rnating, tekshiring va quring

Klonlangan RepoPilot repozitoriyasida qulflangan dependencylarni o‘rnating, loyiha tekshiruvlari va testlarini ishga tushiring hamda controller'ni quring:

npm ci
npm run check
npm test
npm run build

RepoPilotning o‘z ishlab chiqish testlari mock qilingan API'lar, agentlar, runnerlar va sintetik fixturelardan foydalanadi. Ular model kreditlarini sarflamaydi, Docker'ni ishga tushirmaydi yoki GitHub kontentini yozmaydi.

2. Mahalliy konfiguratsiya yarating

Berilgan namunaviy konfiguratsiyadan nusxa oling:

cp repopilot.example.json config.local.json

PowerShell foydalanuvchilari cp o‘rniga Copy-Itemdan foydalanishi mumkin. Maqsadli repozitoriy va ishonchli test buyrug‘ini ko‘rsatish uchun config.local.jsonni tahrirlang. Ushbu mahalliy konfiguratsiyani ko‘rib chiqilayotgan repozitoriy snapshotlaridan tashqarida saqlang.

Namunaviy konfiguratsiya agent ko‘rib chiqishi, tuzatish va nashr etishni o‘chiradi. Bu imkoniyatlarni faqat mahalliy tekshiruv ishlayotganiga ishonch hosil qilganingizdan keyin alohida yoqing.

3. Codex Agent image'ini quring

Codex asosidagi semantik ko‘rib chiqish, test rejalashtirish yoki tuzatish kerak bo‘lganda Agent konteynerini quring:

docker build -f Dockerfile.agent -t repopilot-agent:local .

Controller muhitida OPENAI_API_KEYni o‘rnating. Uni faqat Agent konteyneri oladi. Desktop ChatGPT hisob ma’lumotlari qayta ishlatilmaydi. GITHUB_TOKEN yoki GH_TOKEN orqali berilgan GitHub ma’lumoti controller ichida qoladi.

Birinchi mahalliy Pull Request tekshiruvini ishga tushiring

Mahalliy taqqoslashni asosiy branch va feature branch o‘rtasida boshlang:

npm run dev -- check --config config.local.json --repo /path/to/project --base main --head feature

/path/to/project, main va feature qiymatlarini mahalliy repository va ref’laringiz bilan almashtiring. Mahalliy check o‘zgarishlarni nashr etmaydi va manba checkout’ini tahrirlamaydi.

RepoPilot yaratilgan testlarni qanday tasniflaydi

Yaratilgan ssenariylar regression yoki new_behavior sifatida tasniflanadi. Standart qiymat — regression.

  • Regression dalili: Bir xil bajarilgan test holati base revision’da muvaffaqiyatli o‘tadi, head revision’da esa muvaffaqiyatsiz bo‘ladi.
  • Yangi xatti-harakat dalili: Holat base’da muvaffaqiyatsiz, head’da esa muvaffaqiyatli bo‘ladi va taklif qilingan test pull-request sarlavhasi yoki matnidan olingan aniq talab iqtibosini o‘z ichiga oladi.
  • Ko‘rib chiqish talab qilinadi: Ikkala revision ham muvaffaqiyatsiz bo‘lsa, holat o‘tkazib yuborilsa yoki yetishmasa, bajarilish muvaffaqiyatsiz bo‘lsa, testlarni aniqlash o‘zgarsa yoki original test natijalari kutilmaganda o‘zgarsa.

Model taqdim etgan yorliq runner dalillarini bekor qila olmaydi. Regressionlar avtomatik tuzatishga mos deb topilishidan oldin aynan bir xil muvaffaqiyatsiz test identifikatorlari va fingerprint’lari bilan takroran qayd etilishi kerak.

Pull request’larni uzluksiz ko‘rib chiqing

RepoPilot draft bo‘lmagan, shu repository’dagi pull request’larni tekshiradi va o‘zining autofix branch’larini istisno qiladi. Konfiguratsiyani tekshirish paytida bitta tekshiruv siklini ishga tushiring:

npm run dev -- watch --config config.local.json --once

Natijalarni tasdiqlagach, watcher’ni uzluksiz ishga tushiring:

npm run dev -- watch --config config.local.json

Nashr etish ixtiyoriy bo‘lib, publish=true ni talab qiladi. GitHub tokenida repository Contents va Pull requests uchun yozish huquqlari bo‘lishi kerak. Nashr etish alohida autofix branch’lari va draft pull request’larini yaratadi; u hech qachon force-push qilmaydi yoki avtomatik merge qilmaydi.

Nashr etishdan oldin RepoPilot commit SHA’lari va pull-request tavsifini qayta tekshiradi. Mavjud repair branch yoki pull request faqat uning parent’i va tree’i tekshirilgan natijaga mos kelgandagina qayta ishlatilishi mumkin.

GitHub Issue’ni qayta yarating va tuzating

Issue’ni tuzatish maintainer tomonidan aniq tanlanadi. 123-Issue’ni qayta ishlash uchun quyidagini ishga tushiring:

npm run dev -- fix --issue 123 --config config.local.json

Issue workflow’i uchta asosiy bosqichdan iborat:

  1. Baseline’ni o‘rnating: Mavjud testlar biriktirilgan target revision’da muvaffaqiyatli o‘tishi kerak.
  2. Xatoni qayta yarating: RepoPilot Issue tavsifiga bog‘langan testni yaratadi va muzlatadi. Yangi test xabar qilingan xatoni qayta yaratishi kerak.
  3. Tuzatishga urining va tekshiring: Codex kod almashtirishlarini taklif qiladi, mustaqil runner esa muzlatilgan yaratilgan testni, original testlar to‘plamini va repository siyosatini tekshiradi.

Yetarli bo‘lmagan, beqaror yoki to‘liq bo‘lmagan dalillar workflow’ni inson tomonidan ko‘rib chiqish uchun to‘xtatadi. RepoPilot Issue’larni avtonom ravishda tanlamaydi, mahsulot yo‘l xaritasini belgilamaydi yoki natijaviy tuzatishni merge qilmaydi.

Ishonchli repository siyosatini qo‘shing

.repopilot/policy.json faylini target base branch’ga commit qiling. Masalan, quyidagi qoida o‘chirilgan JavaScript va TypeScript testlarini rad etadi:

{
  "rules": [
    {
      "id": "no-disabled-tests",
      "kind": "forbid-call",
      "extensions": [".ts", ".js"],
      "callee": "test.skip",
      "message": "Keep regression tests enabled.",
      "severity": "error"
    }
  ],
  "exceptions": []
}

Qo‘llab-quvvatlanadigan statik qoida turlariga forbiddenText, forbid-call va require-call kiradi. Call qoidalari to‘g‘ridan-to‘g‘ri chaqiruvlar, qualified chaqiruvlar va string property access’ni tekshiradi. Ular alias’larni aniqlamaydi va butun dastur tahlilini bajarmaydi. Literal qoidalar izohlarga ham mos kelishi mumkin.

Siyosat istisnolari ruleId, aniq path, sabab, UTC tugash vaqt tamg‘asi va ixtiyoriy aniq dalilni ko‘rsatishi mumkin. Istisnolar faqat base policy’dan kelgandagina ishonchli hisoblanadi, muddati tugagan istisnolar esa topilmalarni bostirmaydi.

Bir-birini qoplaydigan required va forbidden qoidalar ko‘rib chiqishni to‘xtatadi. Ishonchli qoida fayllarini o‘zgartiradigan pull request’lar maintainer ko‘rib chiqishini talab qiladi va o‘z tuzatishlariga o‘zi ruxsat bera olmaydi.

Test dalillarini ehtiyotkorlik bilan sozlang

Standart reporter — node; u node --test dan foydalanadi. Ishonchli reporter mavjud bo‘lishi uchun avval RepoPilot’ni build qiling. Vitest uchun reporter=vitest ni sozlang va dependency’lari biriktirilgan ishonchli image’da aniq vitest run buyrug‘idan foydalaning.

  • Reporter flag’lari ishonchsiz test buyrug‘iga emas, controller’ga tegishli.
  • reporter=command faqat chiqishni yig‘adi va tekshirish yoki nashr etishni qo‘llab-quvvatlay olmaydi.
  • Runner ko‘rsatilmasa, testlar not_run sifatida qayd etiladigan faqat siyosatga asoslangan ko‘rib chiqish amalga oshiriladi.
  • Nol test, barchasi o‘tkazib yuborilgan testlar, noto‘g‘ri formatdagi hisobotlar va yetishmayotgan test identifikatorlari hech qachon muvaffaqiyatli deb hisoblanmaydi.
  • Sozlangan dependency xizmatlari vaqtinchalik ichki Docker network’dan foydalanadi.

Base revision’da mavjud bo‘lmagan export’larni o‘z ichiga olgan yaratilgan testlar uchun bajarilayotgan test holatlarining ichida ushbu export’larni tekshiring. Tuzilgan dalillar yig‘ilishidan oldin yetishmayotgan export yuqori darajadagi import’ni ishdan chiqarmasligi kerak.

Ishlayotgan va yakunlangan vazifalarni boshqaring

RepoPilot hisobotlar va snapshot’larni .repopilot-data ichida saqlaydi. Har bir vazifa JSON dalili va Markdown xulosasini oladi. Qayta bajarilgan ijrolar avvalgi dalillarni TASK.execution-N.json kabi nomlar bilan arxivlaydi.

Vazifalarni tekshirish va bekor qilish

npm run dev -- tasks list --config config.local.json --status running --limit 20 --offset 0
npm run dev -- tasks show TASK_ID --config config.local.json --format markdown
npm run dev -- tasks cancel TASK_ID --config config.local.json

Kontroller yozish blokirovkasini ushlab turgan paytda vazifalarni ro‘yxatlash, ko‘rish va bekor qilish imkoniyati saqlanib qoladi. Bekor qilish tekshirish va nashr etish jarayonlarida tekshiriladigan doimiy so‘rovni yaratadi. U allaqachon bajarilgan GitHub yozuvlarini bekor qila olmaydi.

Ishni davom ettirish yoki qayta ishga tushirish

npm run dev -- tasks resume TASK_ID --config config.local.json
npm run dev -- tasks rerun TASK_ID --config config.local.json

resume vazifa identifikatori, konfiguratsiyasi va cheklovlarini saqlab qoladi. Holatga qarab, u tekshirishni qayta boshlaydi yoki allaqachon tekshirilgan vazifa uchun nashr etishni davom ettiradi. rerun avvalgi hisobotlar va bekor qilish belgilarini saqlagan holda, dastlabki biriktirilgan commitlar hamda joriy konfiguratsiyadan foydalanadigan bog‘langan vazifani yaratadi.

Doimiy, yakuniy yoki imkoniyatlari tugagan vazifalar qayta ishga tushirilishi kerak. Qayta ijro etish uchun qayd etilgan mahalliy repozitoriy yoki Git keshi ham talab qilinadi, pull request kiritmalari esa qayta ijro paytida yana tekshiriladi.

Ilg‘or operatsion maslahatlar

Ehtiyotkorona cheklovlardan foydalaning

Vazifa muddati, maxCalls, maxAttempts, maxTaskExecutions va token sarfi uchun chegaralangan qiymatlarni sozlang. maxTokens qiymati har bir model chaqiruvidan keyin qayd etilgan sarf asosida hisoblanadi, shuning uchun bitta chaqiruv bu qiymatdan oshib ketishi mumkin. Uni qat’iy pul sarfi chegarasi deb hisoblamaslik kerak.

Muhitdagi xatolarni alohida ko‘rib chiqing

RepoPilot xatolarni toifalarga ajratadi va mos muhit muammolari uchun faza darajasida cheklangan qayta urinishlarni qo‘llaydi. Beqaror testlar, o‘zgaruvchan aniqlash natijalari yoki to‘liq bo‘lmagan dalillar tasdiqlangan kod nuqsonlari sifatida ko‘rilmaydi, balki avtomatik tuzatishni bloklaydi.

Dalillar zanjirini himoya qiling

Tuzatish nomzodlari yaratilgan test identifikatorlarini saqlashi va ish jarayonida talab qilinganidek dastlabki bazaviy commit, dastlabki joriy commit hamda yaratilgan holatlarni uzatishi kerak. Mavjud testlar, manifestlar, konfiguratsiyalar, siyosatlar va yashirin yo‘llar himoyalanadi. Nomzod tuzatishdan keyin statik va semantik siyosat tekshiruvlari yana ishga tushiriladi.

Avariya holatlaridan keyin ehtiyotkorlik bilan tiklaning

1.3.0 versiyasida to‘xtatilgan vazifalarga tegishli resurslarni ko‘rib chiqish va aniq tozalash uchun recover ish jarayoni mavjud. Eskirgan blokirovkalarni olib tashlashdan oldin eski jarayon to‘xtaganini tekshiring. Eski blokirovkalar va resurslar qo‘lda ko‘rib chiqishni talab qilishi mumkin.

Ishonch chegarasini tushuning

Kontroller, hisobotlar va ishga tushiruvchi dastur kompyuteringiz yoki ishchi qurilmangizda ishlaydi, ammo Codex model chaqiruvlari OpenAI xizmatlaridan foydalanadi va repozitoriy matnining tanlangan qismlari hamda vazifa kontekstini yuboradi. RepoPilot’ni o‘zingiz joylashtirishingiz model xulosalarini oflayn rejimda bajarish imkonini bermaydi.

Testlarni bajarish muhandislik dalillarini taqdim etadi, ammo zararli kodga qarshi soxtalashtirib bo‘lmaydigan attestatsiyani ta’minlamaydi. Simvolik havolalar, submodullar, ikkilik fayllar va nomlari katta-kichik harf bo‘yicha to‘qnashadigan yo‘llar xavfsiz tarzda rad etiladi. Ishonchsiz repozitoriylarni ishga tushirishdan oldin loyihaning xavfsizlik bo‘yicha ko‘rsatmalarini ko‘rib chiqing.

Xulosa

RepoPilot Codex yordamidagi ko‘rib chiqish va tuzatishni biriktirilgan kiritmalar, muzlatilgan testlar, mustaqil Docker bajarilishi, repozitoriy siyosati, cheklangan qayta urinishlar va ishonchli dalillar bilan birlashtiradi. Nashr etmaydigan mahalliy check buyrug‘idan boshlang, hisobot beruvchi va siyosat konfiguratsiyangizni tekshiring, so‘ng dalillar jamoangiz standartlariga javob bergandagina kuzatish, Issue’larni tuzatish va qoralama pull requestlarni nashr etishni qo‘shing.