Yeqa uye kokuyinhloko
Izifundo ze-AI

Indlela Yokulungisa Izinkinga Ne-PR ze-GitHub Okuqinisekiswa Ngazo Usebenzisa i-RepoPilot

Funda ukufaka i-RepoPilot, ulungiselele izivivinyo ezethembekile nezinqubomgomo zekhosombe, ubuyekeze izicelo zokudonsa, uphinde udale Izinkinga, uqinisekise ukulungiswa okukhiqizwe yi-Codex, uphathe imisebenzi, futhi ngokuzithandela ushicilele ukulungiswa okufanelekile njengezicelo zokudonsa ezisalungiswa, kuyilapho abagcini bekhosombe begcina ukulawula.

Indlela Yokulungisa Izinkinga Ne-PR ze-GitHub Okuqinisekiswa Ngazo Usebenzisa i-RepoPilot

Okwenziwa yi-RepoPilot

I-RepoPilot iyisilawuli esizisingathwa nguwe sokuphindaphinda isoftware okuqhutshwa ukuqinisekiswa. Iguqula ama-GitHub Issue akhethiwe nama-pull request asendaweni yokugcina efanayo abe ukugeleza komsebenzi okulinganiselwe okuhlanganisa ukubuyekezwa kwemithetho, ukwakhiwa kokuhlolwa, ukuphindaphindwa kokwehluleka, ukulungiswa kwekhodi, ukuqinisekiswa okuzimele, kanye nokushicilelwa okukhethwayo kwegatsha lokulungisa kanye ne-draft pull request.

Le phrojekthi isebenzisa i-OpenAI Codex SDK ukuqonda imithetho yendawo yokugcina, ukuklama ukuhlolwa okuqhutshwa yizidingo, nokuphakamisa izinguquko zekhodi yokukhiqiza. I-Docker runner ehlukile iqhuba ukuhlolwa kuma-snapshot agxilwe ezinguqulweni ezithile zendawo yokugcina. Isilawuli sishicilela umphumela kuphela lapho ubufakazi obulungiselelwe nokuhlolwa kwenqubomgomo kudlula.

I-RepoPilot ayihlanganisi noma ayifaki izinguquko ngokuzenzakalelayo. Abanakekeli bakhetha umsebenzi, babuyekeze ubufakazi, futhi bagcine isinqumo sokugcina sokuhlanganisa.

Indlela ukugeleza komsebenzi okulinganiselwa ngayo

  1. I-RepoPilot igxilisa ama-commit ayisisekelo na-head afanelekile.
  2. Ilanda inqubomgomo ethembekile egatsheni lesisekelo, kuhlanganise nemiyalelo efanele ye-AGENTS.md.
  3. I-Codex ibuyekeza ushintsho futhi iphakamise ukuhlolwa noma okungase kulungiswe.
  4. Ukuhlolwa okwakhiwe kuyamiswa ngaphambi kokuba kulungiswe ikhodi yokukhiqiza.
  5. I-runner ehlukile iqhuba ukuhlolwa kuma-snapshot azimele.
  6. Isilawuli sihlola ubunikazi bokuhlolwa obuzinzile, izigxivizo zeminwe zokwehluleka, izindlela ezivikelwe, imiphumela yenqubomgomo, kanye nemikhawulo ehleliwe.
  7. Umphumela ofanele ungabekwa egatsheni elihlukile futhi uthunyelwe njenge-draft pull request ukuze ubuyekezwe ngumuntu.

Kuma-pull request, i-RepoPilot iqhathanisa ukuziphatha kwesisekelo ne-head. Kuma-Issue, iqala idinge isisekelo sokuqala esidlulayo, bese izama ukuphindaphinda iphutha elibikiwe ngokuhlolwa okusha okumisiwe ngaphambi kokuphakamisa ukulungiswa.

Izici Ezisemqoka Nobubanzi Bamanje

  • Okokufaka okugxilwe: Ama-SHA esisekelo ne-head, ama-digest esihloko nomzimba, ukuhlolwa kokusha, nokukhansela kusiza ukuvimbela ukuqinisekiswa kokokufaka okudala.
  • Imithetho yendawo yokugcina ethembekile: Izinqubomgomo ezimile zisekela ukuhlolwa okuqondile nemithetho yezingcingo ze-JavaScript noma i-TypeScript. Amafayela e-AGENTS.md agxiliswe egatsheni lesisekelo angasiza ukubuyekezwa kwencazelo.
  • Ukuqhutshwa kokuhlolwa okuzimele: Isilawuli sidlulisela ukuqhutshwa ku-Docker runner ehlukile kunokuthembela ekuhlolweni kwemodeli.
  • Izinhlelo eziningi zokuhlola: Inguqulo 1.3.0 isekela i-test runner ye-Node, i-Vitest, i-pytest, ukuhlolwa kwe-Go, kanye nobufakazi be-JUnit XML obuhambisanayo.
  • Ukusekelwa kwe-monorepo: Ukulungiselela kungasebenzisa izinkomba zokusebenza, imiyalo eminingi yokuhlola enamagama, kanye nezinsizakalo zokuncika ezilahlwayo.
  • Ukulungisa okulinganiselwe: Imizamo, ukuphinda uzame, izingcingo zemodeli, amathokheni, ukuqhutshwa kwemisebenzi, kanye nesikhathi sonke somsebenzi kungalinganiselwa.
  • Imibiko elandelekayo: Imibiko ye-JSON ye-athomu kanye nezifinyezo ze-Markdown ezifushanisiwe zigcina okutholakele, imiphumela yokuhlolwa, ama-patch, imizamo, nesimo sokushicilela.
  • Ukubuyiselwa kokusebenza: Imiyalo yomsebenzi isekela ukuhlola, ukukhansela, ukuqhubeka, nokuphinda kuqhutshwe. Ukugeleza kwe-recover kusingatha izinsalela zokuphahlazeka eziphethwe ngokubuka kuqala nokuhlanza okuqinisekisiwe.

Ukuqaliswa kwamanje kuqondiswe ezindaweni zokugcina zomphakathi ezisekelwe embhalweni ezinamafayela afinyelela ku-10,000 noma ku-16 MiB. Akunikezi ukuqhutshwa kwama-pull request avela kuma-fork, ukuhlolwa kwe-browser end-to-end, ideshibhodi esingathwa, ama-webhook, ulayini osabalalisiwe, ukufakwa kokuncika okuzenzakalelayo, ukuhlanganisa okuzenzakalelayo, noma ukufaka.

Izidingo Zokuqala

Ungalanda inguqulo ephathekayo ye-RepoPilot 1.3.0 ye-Linux, Windows, noma macOS uma ungafuni ukufaka i-Node.js. Ukuze uyifake usuka emthonjeni, lungisa okulandelayo:

  • Node.js 22, okuyinguqulo enconyiwe
  • npm ne-Git
  • i-Docker elungiselelwe ukuqhutshwa kwama-Linux container
  • Ukhiye we-OpenAI API lapho ukubuyekezwa, ukuhlelwa kokuhlolwa, noma ukulungisa okusekelwe ku-Codex kunikwe amandla
  • Ithokheni ye-GitHub lapho ukufinyelela noma ukushicilela ku-GitHub kudingeka

Sebenzisa izinguqulo ezifanayo ze-controller ne-Agent image ezingu-1.3.0. Ama-Docker image nokuncika kwephrojekthi kufanele kuhlinzekwe kusengaphambili ngoba ama-test container awanakho ukufinyelela kunethiwekhi ngokuzenzakalelayo.

Faka i-RepoPilot Usuka Emthonjeni

1. Faka, qinisekisa, futhi wakhe iphrojekthi

Kusuka endaweni yokugcina ye-RepoPilot e-clone-ziwe, faka ukuncika okukhiyiwe, sebenzisa ukuhlolwa nokuhlolwa kwephrojekthi, bese wakha isilawuli:

npm ci
npm run check
npm test
npm run build

Ukuhlolwa kokuthuthukiswa kwe-RepoPilot kusebenzisa ama-API, ama-agent, ama-runner, nama-fixture okwenziwa alingisiwe. Akudli amakhredithi emodeli, akuqalisi i-Docker, futhi akubhali okuqukethwe ku-GitHub.

2. Dala ukulungiselelwa kwasendaweni

Kopisha ukulungiselelwa kwesibonelo okunikeziwe:

cp repopilot.example.json config.local.json

Abasebenzisi be-PowerShell bangasebenzisa i-Copy-Item esikhundleni se-cp. Hlela i-config.local.json ukuze ucacise indawo yokugcina okuqondiswe kuyo nomyalo wokuhlola othembekile. Gcina lokhu kulungiselelwa kwasendaweni ngaphandle kwama-snapshot wendawo yokugcina abuyekezwayo.

Ukulungiselelwa kwesibonelo kukhubaza ukubuyekezwa kwe-agent, ukulungisa, nokushicilela. Nika lawa makhono amandla ngokwehlukana kuphela ngemva kokuba ukuqinisekiswa kwasendaweni kusebenza.

3. Yakha i-Codex Agent image

Yakha i-Agent container lapho ufuna ukubuyekezwa kwencazelo, ukuhlelwa kokuhlolwa, noma ukulungisa okusekelwe ku-Codex:

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

Setha i-OPENAI_API_KEY endaweni yesilawuli. I-Agent container kuphela eyitholayo. Izifakazelo ze-Desktop ChatGPT azisetshenziswa futhi. Isifakazelo se-GitHub esinikezwe nge-GITHUB_TOKEN noma nge-GH_TOKEN sihlala kusilawuli.

Qalisa Ukuhlolwa Kokuqala Kwe-Pull Request Yasendaweni

Qala ngokuqhathanisa kwasendaweni phakathi kwegatsha lesisekelo negatsha lesici:

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

Faka esikhundleni se-/path/to/project, main, kanye ne-feature ngendawo yokugcina yendawo nama-ref akho. I-check yasendaweni ayishicileli izinguquko futhi ayihleli i-checkout yomthombo.

Indlela i-RepoPilot ehlukanisa ngayo izivivinyo ezikhiqiziwe

Izimo ezikhiqiziwe zihlukaniswa njenge-regression noma new_behavior. I-Regression iyona ezenzakalelayo.

  • Ubufakazi be-regression: Icala lokuhlola elifanayo elenziwe liyaphumelela ku-base revision bese lehluleka ku-head revision.
  • Ubufakazi bokuziphatha okusha: Icala lehluleka ku-base bese liyaphumelela ku-head, futhi ukuhlola okuhlongozwayo kuhlanganisa isicaphuno esiqondile semfuneko esivela esihlokweni noma emzimbeni we-pull request.
  • Ukubuyekezwa kuyadingeka: Womabili ama-revision ayahluleka, icala leqiwe noma alikho, ukwenziwa kuyehluleka, ukutholwa kwezivivinyo kuyashintsha, noma imiphumela yezivivinyo zoqobo ishintsha ngokungalindelekile.

Ilebula enikezwe yimodeli ayikwazi ukweqa ubufakazi be-runner. Ama-regression kufanele aphindeke ngobunikazi bezivivinyo ezihlulekayo nama-fingerprint afanayo ngaphambi kokuba afanelekele ukulungiswa okuzenzakalelayo.

Buyekeza Ama-Pull Request Ngokuqhubekayo

I-watcher ye-RepoPilot ihlola ama-pull request angewona ama-draft, akwirepository efanayo, futhi ikhiphe amagatsha ayo e-autofix. Qalisa umjikelezo owodwa wokuhlola ngenkathi uqinisekisa ukumiswa:

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

Ngemva kokuqinisekisa imiphumela, sebenzisa i-watcher ngokuqhubekayo:

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

Ukushicilela kungokuzikhethela futhi kudinga publish=true. Ithokheni ye-GitHub kufanele ibe nezimvume zokubhala ku-Contents nakuma-Pull requests zerепository. Ukushicilela kudala amagatsha e-autofix nama-draft pull request ahlukene; akusoze kwenza i-force-push noma kuhlanganise ngokuzenzakalelayo.

Ngaphambi kokushicilela, i-RepoPilot iphinde ihlole ama-commit SHA nencazelo ye-pull request. Igatsha noma i-pull request ekhona yokulungisa ingasetshenziswa futhi kuphela lapho i-parent yayo ne-tree yayo kufana nomphumela oqinisekisiwe.

Phinda Ukhiqize Futhi Ulungise I-GitHub Issue

Ukulungiswa kwe-Issue kukhethwa ngokusobala ngumgcini. Ukuze ucubungule i-Issue 123, sebenzisa:

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

Ukugeleza kwe-Issue kwenzeka ezigabeni ezintathu ezinkulu:

  1. Sungula isisekelo: Izivivinyo ezikhona kufanele ziphumelele ku-target revision ephiniwe.
  2. Phinda ukhiqize iphutha: I-RepoPilot ikhiqiza futhi igcine kungashintshi ukuhlola okuboshelwe encazelweni ye-Issue. Ukuhlola okusha kufanele kuphinde kukhiqize ukwehluleka okubikiwe.
  3. Zama futhi uqinisekise ukulungiswa: I-Codex iphakamisa ukushintshwa kwekhodi, bese i-runner ezimele ihlola ukuhlola okukhiqiziwe okugcinwe kungashintshi, i-suite yoqobo, kanye nenqubomgomo yerepository.

Ubufakazi obunganele, obungazinzile, noma obungaphelele bumisa ukugeleza ukuze kubuyekezwe umuntu. I-RepoPilot ayikhethi ama-Issue ngokuzenzakalelayo, ayichazi imephu yomkhiqizo, futhi ayihlanganisi ngokuzenzakalelayo ukulungiswa okuvelayo.

Engeza Inqubomgomo Ye-Repository Ethenjiwe

Commit-a i-.repopilot/policy.json egatsheni le-target base. Isibonelo, lo mthetho olandelayo wenqaba izivivinyo ze-JavaScript ne-TypeScript ezikhutshaziwe:

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

Izinhlobo zemithetho emile ezisekelwayo zihlanganisa forbiddenText, forbid-call, kanye ne-require-call. Imithetho yezibizo ihlola amakholi aqondile, amakholi ane-qualifier, kanye nokufinyelela kwezakhiwo zezintambo. Ayixazululi ama-alias futhi ayenzi ukuhlaziywa kohlelo lonke. Imithetho yezinhlamvu ingase futhi ihambisane namazwana.

Okuhlukile kwenqubomgomo kungakhomba i-ruleId, indlela eqondile, isizathu, isitembu sesikhathi sokuphelelwa yisikhathi se-UTC, kanye nobufakazi obuqondile ngokuzikhethela. Okuhlukile kuthenjwa kuphela uma kuvela kunqubomgomo ye-base, futhi okuhlukile okuphelelwe yisikhathi akucindezeli okutholakele.

Imithetho edingekayo nenqabelayo egqagqene ibangela ukuthi ukubuyekezwa kumiswe. Ama-pull request aguqula amafayela emithetho ethenjiwe adinga ukubuyekezwa ngumgcini futhi awakwazi ukugunyaza ukulungiswa kwawo.

Lungiselela Ubufakazi Bezivivinyo Ngokucophelela

I-reporter ezenzakalelayo yi-node futhi isebenzisa node --test. Yakha i-RepoPilot kuqala ukuze i-reporter ethenjiwe itholakale. Ku-Vitest, lungiselela reporter=vitest futhi usebenzise umyalo ocacile we-vitest run esithombeni esethenjiwe esinokuncika okuphiniwe.

  • Amafulegi e-reporter angawesilawuli, hhayi owomyalo wezivivinyo ongathenjwa.
  • reporter=command iqoqa okukhiphayo kuphela futhi ayikwazi ukusekela ukuqinisekiswa noma ukushicilela.
  • Ukushiya i-runner kungacacisiwe kukhiqiza ukubuyekezwa kwenqubomgomo kuphela, izivivinyo zirekhodwe njenge-not_run.
  • Azikho izivivinyo, zonke izivivinyo zeqiwe, imibiko engalungile, nobunikazi bezivivinyo obungekho akukaze kubalwe njengokuphumelela.
  • Izinsizakalo zokuncika ezilungiselelwe zisebenzisa inethiwekhi yangaphakathi ye-Docker elahlwayo.

Ezivivinyweni ezikhiqiziwe ezibandakanya ama-export angekho ku-base revision, hlola lawo ma-export ngaphakathi kwamacala ezivivinyo aqhutshwayo. I-export engekho akufanele iphahlaze i-import esezingeni eliphezulu ngaphambi kokuba kuqoqwe ubufakazi obuhlelekile.

Phatha Imisebenzi Esebenzayo Neseqediwe

I-RepoPilot igcina imibiko nama-snapshot ngaphansi kwe-.repopilot-data. Umsebenzi ngamunye uthola ubufakazi be-JSON nesifinyezo se-Markdown. Ukwenziwa okuphindiwe kugcina ubufakazi bangaphambilini ngamagama afana ne-TASK.execution-N.json.

Hlola futhi ukhansele imisebenzi

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

Ukufakwa kuhlu, ukuboniswa, nokukhanselwa kwemisebenzi kuyaqhubeka kutholakala ngenkathi isilawuli siphethe i-writer lock yaso. Ukukhansela kudala isicelo esiqhubekayo esihlolwa ngesikhathi sokuqinisekisa nokushicilela. Ngeke kubuyisele emuva ukubhalwa ku-GitHub osekuqediwe.

Qalisa kabusha noma phinda usebenzise umsebenzi

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

resume igcina ubunikazi bomsebenzi, ukucushwa, nemikhawulo. Kuya ngesimo, iqala kabusha ukuqinisekisa noma iqhubeke nokushicilela umsebenzi osuqinisekisiwe. rerun idala umsebenzi oxhunyiwe isebenzisa ama-commit okuqala aphiniwe nokucushwa kwamanje, kuyilapho igcina imibiko yangaphambilini nezimpawu zokukhansela.

Imisebenzi engunaphakade, esesigabeni sokugcina, noma ephelelwe amathuba idinga ukuphindwa. Ukudlala kabusha kudinga futhi indawo yokugcina yendawo erekhodiwe noma i-Git cache, futhi okokufaka kwama-pull request kuhlolwa futhi ngesikhathi sokudlala kabusha.

Amathiphu Okusebenza Athuthukile

Sebenzisa imikhawulo eqaphile

Hlela amanani anemikhawulo yesikhathi somsebenzi, maxCalls, maxAttempts, maxTaskExecutions, nokusetshenziswa kwamathokheni. Inani le-maxTokens libalwa ngokusetshenziswa okubikwa ngemva kwekholi ngayinye yemodeli, ngakho ikholi eyodwa ingaledlula. Akufanele lithathwe njengomkhawulo oqinile wezindleko zemali.

Phatha ukwehluleka kwemvelo ngokwehlukana

RepoPilot ihlukanisa ukwehluleka futhi isebenzise ukuphinda izame okulinganiselwe ezingeni lesigaba ezinkingeni ezifanele zemvelo. Ukuhlolwa okungazinzile, ukutholwa okushintshayo, noma ubufakazi obungaphelele kuvimbela ukulungisa okuzenzakalelayo esikhundleni sokuthathwa njengamaphutha ekhodi aqinisekisiwe.

Vikela uchungechunge lobufakazi

Abalungiselwa ukulungiswa kufanele bagcine ubunikazi bokuhlolwa okukhiqiziwe futhi badlulisele i-base yokuqala, i-head yokuqala, kanye namacala akhiqiziwe njengoba kudingwa ukuhamba komsebenzi. Ukuhlolwa okukhona, ama-manifest, ukucushwa, izinqubomgomo, nezindlela ezifihliwe kuvikelekile. Ukuhlolwa kwezinqubomgomo okumile nokwezincazelo kuphindwa ngemva kokulungiswa komuntu ozobhalwa.

Buyisa ngokuqapha ngemva kokuphahlazeka

Inguqulo 1.3.0 ihlanganisa ukuhamba komsebenzi kwe-recover kokubuka nokuhlanza ngokusobala izinsiza eziphethwe yimisebenzi ephazamisekile. Qinisekisa ukuthi inqubo endala imile ngaphambi kokususa ama-lock amadala. Ama-lock nezinsiza zefa kungase kudinge ukuhlolwa mathupha.

Qonda umngcele wokwethembana

Isilawuli, imibiko, kanye ne-runner kusebenza emshinini wakho noma ku-worker, kodwa amakholi emodeli ye-Codex asebenzisa izinsizakalo ze-OpenAI futhi athumela umbhalo okhethiwe wendawo yokugcina kanye nomongo womsebenzi. Ukusingatha i-RepoPilot ngokwakho akuhlinzeki ngokusebenzisa imodeli ngaphandle kwe-inthanethi.

Ukuqhutshwa kokuhlolwa kunikeza ubufakazi bobunjiniyela, hhayi ubufakazi obungaphazamiseki bokuphazamisa obuvikela ikhodi enonya. Ama-symlink, ama-submodule, ama-binary, kanye nezindlela ezingqubuzana ngokwezinhlamvu ziyavalwa ngokuphepha. Buyekeza isiqondiso sezokuphepha sephrojekthi ngaphambi kokuqhuba izindawo zokugcina ezingathembekile.

Isiphetho

RepoPilot ihlanganisa ukubuyekezwa nokulungiswa okusizwa yi-Codex nokokufaka okuphiniwe, ukuhlolwa okuqandisiwe, ukuqhutshwa okuzimele kwe-Docker, inqubomgomo yendawo yokugcina, ukuphinda kuzanywe okunemikhawulo, kanye nobufakazi obuhlala njalo. Qala nge-check yasendaweni engashicileli, uqinisekise ukucushwa kombiki wakho kanye nenqubomgomo, bese wengeza ukubuka, ukulungisa i-Issue, nokushicilela ama-pull request angama-draft kuphela lapho ubufakazi buhlangabezana namazinga ethimba lakho.