gitai nima?
gitai AI kodlash agentlari uchun ishlab chiqilgan ochiq manbali versiyalarni boshqarish tizimidir. U serverga yo‘naltirilgan yondashuvni qo‘llaydi: mijozlar onlayn holatda qoladi, faqat kerakli obyektlar va yo‘llarni oladi hamda manba kodini boshqarish amallarini serverga yuboradi.
Loyiha Anthropic kompaniyasining ommaga taqdim etilgan Scion dizaynidan ilhomlangan, ammo gitai mustaqil dasturiy ta’minotdir. U MIT litsenziyasiga ega, muayyan yetkazib beruvchiga bog‘lanmagan va serverdan til modelini chaqirishni talab qilmaydi. AI yordamidagi amallar istalgan provayder, deterministik vosita yoki umuman AI provayderisiz bajarilishi mumkin.
gitai ichki tomondan oddiy Git omborlaridan foydalanadi, shu bilan birga tarix so‘rovlari, o‘zgarishlarni qo‘shish, changesetlarni kuzatish va omborni muvofiqlashtirishni serverga ko‘chiradi. Ushbu model umumiy branchlarga o‘zgarishlarni tezda qo‘shishi kerak bo‘lgan ko‘plab qisqa muddatli vazifalar uchun mo‘ljallangan.
Asosiy imkoniyatlar
- Ma’lumotlarga tanlab kirish: obyekt xizmati alohida obyektlar va siyrak daraxtlarni taqdim etadi.
graft clonevagraft sparsebuyruqlari faqat so‘ralgan yo‘llarni materiallashtiradi. - Server tomonidagi tarix: blame, yo‘l tarixi, ajdodlar va kod qidiruvi serverda bajariladi hamda hosilaviy ma’lumotlar sifatida keshlanadi.
- Parallel qo‘shish:
UserLando‘zgarishlarni joriy branch uchiga rebase qiladi va an’anaviy merge navbati o‘rniga compare-and-swap yangilanishlaridan foydalanadi. Parallel qo‘shishlar bitta reference yangilanishiga birlashtirilishi mumkin. - Konfliktlarni hal qilish: ziddiyatli qo‘shishlarda versiyalanadigan, yetkazib beruvchiga bog‘liq bo‘lmagan protokol orqali tanlangan resolverdan foydalanish mumkin.
- Changeset jurnali: qabul qilingan reference yangilanishlari o‘z amali va ijrochisini tartiblangan jurnalga yozadi; mijozlar bu jurnalni ro‘yxatlashi yoki kuzatishi mumkin.
- Kengaytiriladigan saqlash: SQLite yoki PostgreSQL changesetlar, referenslar, sharhlar va write-ahead jurnalini saqlaydi, kontent manziliga asoslangan packlar esa fayl xotirasida, S3, GCS yoki Azure’da joylashishi mumkin.
- Agent boshqaruvlari: har bir agent uchun tokenlar, RPC ruxsatnomalari ro‘yxati va branch siyosatlari agentlar qaysi amallarni bajarishi mumkinligini belgilaydi.
- Tekshirish va monitoring:
graft-verifyuchni tekshirishi, xatoni bisect qilishi va bunga sabab bo‘lgan o‘zgarishni qaytarishi mumkin. Superfanlar deb ataladigan monitoring agentlari changeset oqimini kuzatadi va Slack orqali hisobot berishi mumkin. - Qat’iy keshlash:
graft-cacheo‘zgarmas obyektlarni daemon va mintaqaviy qatlamlarda keshlashi, shu bilan birga har bir obyektni tekshirishi mumkin.
Arxitektura qanday ishlaydi
Agentlar, CI vazifalari va siyrak ish maydonlari Graft CLI yoki Go SDK orqali gRPC yordamida gitai serveri bilan aloqa qiladi. Ixtiyoriy graft-cache daemon qo‘shimcha kesh qatlamlarini taqdim etish uchun server oldida joylashadi.
Server qo‘shish, obyektlarga kirish, changesetlar, hosilaviy ma’lumotlar, qidiruv va sharhlarni boshqaradi. Uning yozish yo‘li har bir reference uchun changesetni compare-and-swap amali bilan birlashtiradi. Ma’lumotlar bazasi changeset write-ahead jurnalini, referenslarni, o‘zgarishlar jurnalini va sharhlarni saqlaydi. Obyekt xotirasi kontent manziliga asoslangan packlarni saqlaydi.
Server tugunlari qayta tiklanishi mumkin bo‘lgan holatsiz keshlar sifatida ishlab chiqilgan. Bu joylashtirish kengaygani sari qo‘shimcha tugunlarni qo‘shish imkonini beradi. Mahalliy Git omborlari istalgan tugun qayta tiklashi mumkin bo‘lgan keshlar sifatida mavjud bo‘lib qoladi.
Batafsil ma’lumot uchun loyihaning arxitektura hujjatlari va saqlash hujjatlarini o‘qing.
gitai’ni o‘rnatish va qurish
1. Zaruriy shartlarni o‘rnating
Hozirda gitai Linux yoki macOS, Go 1.26, C toolchain, Meson va Ninja’ni talab qiladi. Qurilish Git’ning birga kiritilgan versiyasini kompilyatsiya qiladi, shuning uchun boshlashdan oldin kerakli native qurish vositalari mavjudligiga ishonch hosil qiling.
2. Omborni klonlang
git clone https://github.com/feder-cr/git-ai.git
cd git-ai3. Binar fayllarni quring
Server, CLI va yordamchi vositalarni qurish uchun Make targetini ishga tushiring:
make buildHosil bo‘lgan binar fayllar _build/bin ichiga joylanadi. CLI va uning mavjud buyruqlarini ko‘rish uchun quyidagini ishga tushiring:
./_build/bin/graftTezkor boshlashni ishga tushiring
Ombor server, kesh daemon, ikkita agent va qo‘shish amaliga ega vaqtinchalik gitai muhitini ishga tushiradigan misolni o‘z ichiga oladi:
examples/graft/quickstart.shBu doimiy ma’lumotlar bazasi, obyekt xotirasi yoki joylashtirishni tayyorlamasdan asosiy ish jarayonini ko‘rishning eng tezkor usulidir. Misol vaqtinchalik katalogdan foydalangani uchun u o‘rganish va tajriba o‘tkazish uchun eng mos keladi.
O‘z serveringizni ishga tushiring
1. Namuna konfiguratsiyasidan boshlang
Maxsus server konfiguratsiyasi uchun boshlang‘ich nuqta sifatida examples/graft/config.toml faylidan foydalaning. Serverni qurilgan binar fayl yordamida ishga tushirish mumkin:
_build/bin/gitaly serve config.tomlManba daraxtida server tomonidagi kengaytmalar Graft deb ataladi. Bu nomni [graft] konfiguratsiya bo‘limi, graft CLI, internal/graft paketi va Graft hujjatlarida ko‘rasiz.
2. Ma’lumotlar bazasi va obyekt xotirasini qo‘shing
Ombor holati ma’lumotlar bazasi va obyekt xotirasida saqlanadigan joylashtirish uchun konfiguratsiyaga [graft.storage] bo‘limini qo‘shing. Hujjatlashtirilgan migratsiya jarayoni shadow rejimida boshlash, omborlarni import qilish va keyin authoritative rejimiga o‘tishdan iborat.
Aniq konfiguratsiya va migratsiya tafsilotlari uchun saqlash qo‘llanmasiga amal qiling. Qo‘llab-quvvatlanadigan saqlash modeli muvofiqlashtirish ma’lumotlari uchun SQLite yoki PostgreSQL’dan, kontent manziliga asoslangan packlar uchun esa fayl, S3, GCS yoki Azure xotirasidan foydalanadi.
Agent o‘zgarishlari bilan ishlash
An’anaviy Git ish jarayonida har bir xodim repozitoriydan nusxa olishi, mahalliy tarzda ishlab chiqishi va umumiy tarmoqqa yuborishi mumkin. gitai esa agentlarga server bilan aloqani saqlab, faqat kerakli ma’lumotlarni so‘rash imkonini beradi.
Agentlar materiallashtiriladigan yo‘llarni cheklash uchun siyrak ish maydonlaridan foydalanishi mumkin. Tegishli buyruqlar:
- Repozitoriyning tanlangan ko‘rinishini materiallashtirish uchun
graft clone. - Vazifa uchun kerakli yo‘llarnigina so‘rash yoki moslashtirish uchun
graft sparse.
Agent hissa qo‘shishga tayyor bo‘lganda, UserLand o‘zgarishni joriy uchga rebase qiladi va compare-and-swap yangilanishini amalga oshirishga urinadi. Agar bir nechta agent bitta tarmoqqa bir vaqtda o‘zgarish kiritsa, gitai har bir agentni alohida birlashtirish navbatidan o‘tkazish o‘rniga bu amallarni bitta reference yangilanishiga jamlashi mumkin.
Agar o‘zgarishni kiritish jarayonida konflikt yuzaga kelsa, konfliktlarni hal qilish hujjatlariga muvofiq resolver sozlang. Resolver LLM provayderi, deterministik vosita yoki tashqi AI provayderisiz ishlashi mumkin.
O‘zgarishlar to‘plamlari, ko‘rib chiqishlar va tekshiruvlarni o‘rganish
O‘zgarishlar to‘plami tarixi
Qabul qilingan har bir reference yangilanishi o‘zgarishlar to‘plami jurnalida yozuvga aylanadi. Yozuv amal va aktyorni o‘z ichiga oladi hamda mijozlarga tartiblangan ro‘yxatni ko‘rish yoki uni jonli kuzatish imkonini beradi. Bu oqim muayyan komponentlarga tegishli o‘zgarishlarni kuzatuvchi monitoring agentlarini ham boshqarishi mumkin.
Ko‘rib chiqishlar va siyosatlar
gitai semantik tasdiqlash qoidalariga ega, agentlar uchun qulay ko‘rib chiqishlarni o‘z ichiga oladi. Masalan, faqat izohga oid o‘zgarish mantiqiy o‘zgarishga qaraganda kamroq tasdiqni talab qilishi mumkin. Agentlar xavfsizligini boshqarish vositalariga har bir agent uchun tokenlar, RPC ruxsat berilgan ro‘yxatlari va tarmoq siyosatlari ham kiradi.
Serverni avtomatlashtirilgan foydalanuvchilarga ochishdan oldin ko‘rib chiqish hujjatlari va agentlar xavfsizligi hujjatlarini o‘qing.
O‘zgarish kiritilgandan keyingi tekshiruv
graft-verify ish jarayoni o‘zgarishlar kiritilgandan so‘ng tarmoq uchini sinovdan o‘tkazadi. Agar sinov muvaffaqiyatsiz tugasa, u o‘zgarishlarni bisect qilib, xatoni keltirib chiqargan o‘zgarishni qaytarishi mumkin. Bu integratsiya uzluksiz amalga oshiriladigan va tizim buzilgan uch uchun javobgar o‘zgarishni aniqlaydigan ish jarayonini qo‘llab-quvvatlaydi.
Qo‘llab-quvvatlanadigan ish jarayoni va sozlamalar uchun tekshiruv qo‘llanmasiga qarang.
Ilg‘or joylashtirish bo‘yicha maslahatlar
- Keshdan ongli ravishda foydalaning: agentlar yoki CI vazifalariga daemon yoxud mintaqaviy kesh qatlamlari bo‘ylab o‘zgarmas obyektlarga tezkor kirish kerak bo‘lsa,
graft-cacheni qo‘shing. - Muvofiqlashtirishni obyektlar saqlashidan ajrating: o‘zgarishlar to‘plamlari va reference’lar uchun SQLite yoki PostgreSQL’dan foydalaning, repozitoriy paketlari uchun esa obyektlar saqlash backendini sozlang.
- Qo‘shimcha tugunlar bilan kengaytiring: server tugunlari qayta tiklanadigan keshlar sifatida ishlab chiqilgan, shuning uchun tugunlarni qo‘shish har bir tugunda mustaqil vakolatli holat saqlanishini talab qilmaydi.
- O‘zgarish kiritish hujjatlarini o‘qing: o‘zgarish kiritish va paketlash qo‘llanmasi compare-and-swap ish jarayoni hamda bir vaqtdagi yangilanishlarni tushuntiradi.
- Joriy cheklovlarni ko‘rib chiqing: bu 0.1.0 versiyasi, interfeyslar 1.0 versiyasigacha o‘zgarishi mumkin, paketlarni garbage collection qilish kabi ma’lum kamchiliklar esa LIMITATIONS.mdda hujjatlashtirilgan.
- Dizayn hujjatlaridan foydalaning: PLAN.md dan PLAN6.md gacha bo‘lgan hujjatlar amalga oshirishning mantiqiy asoslari va rivojlanishini tushuntiradi.
Xulosa
gitai ko‘plab bir vaqtda ishlaydigan kodlash agentlari foydalanadigan repozitoriylar uchun serverga markazlashgan manba kodini boshqarish modelini moslashtiradi. Uning Graft CLI va serveri siyrak ma’lumotlarga kirish, server tomonidagi tarix, compare-and-swap orqali o‘zgarish kiritish, konfliktlarni hal qilish, o‘zgarishlar to‘plami jurnallari, ko‘rib chiqishlar, tekshiruvlar va kengaytiriladigan saqlashni taqdim etadi.
make build va examples/graft/quickstart.sh bilan boshlang, so‘ng ish jarayonini tushunganingizda sozlangan server va doimiy saqlashga o‘ting. Amalga oshirish va foydalanish bo‘yicha batafsilroq yo‘riqnoma uchun loyihaning Quickstart, sozlamalar ma’lumotnomasi va arxitektura hujjatlaridan foydalaning.
