UNCUT nima?
UNCUT shell quvurlari, CI vazifalari, konteynerlar va agent tajribalari uchun mo‘ljallangan headless kodlash agenti harnessidir. U kichik, statik bog‘langan Go binar fayli sifatida tarqatiladi va standart kirish hamda standart chiqish orqali ishlaydi. Unda terminal foydalanuvchi interfeysi, telemetriya, plagin tizimi, fon agentlari, avtomatik qayta urinishlar yoki yashirin kontekstni ixchamlashtirish mavjud emas.
Uning asosiy xususiyati yo‘qotishsiz uzatish shartnomasidir. UNCUT har bir model chaqiruvida suhbatning to‘liq qismini yuboradi va yaroqli UTF-8 promptlari, saqlangan xabarlar, fayl mazmuni yoki buyruq chiqishini qisqartirmaydi, umumlashtirmaydi, olib tashlamaydi yoki qayta yozmaydi. Agar provayder chiqish limiti sababli javobni to‘xtatsa, UNCUT qisman javobni muvaffaqiyatli javob deb qabul qilish o‘rniga xato haqida xabar beradi.
Muhim: Yo‘qotishsiz uzatish modelning kontekst oynasini kengaytirmaydi va provayder tomonidagi qayta ishlashni boshqarmaydi. Provayder baribir hajmi haddan tashqari katta so‘rovni rad etishi mumkin. UNCUT mazmunni jimgina olib tashlash o‘rniga bunday xatoni ko‘rinadigan qiladi.
Asosiy xususiyatlar
- To‘liq kontekst: Har bir saqlangan xabar va vosita natijasi har bir model so‘rovida yuboriladi.
- Headless ishlash: Yakuniy matn stdout ga yoziladi,
--jsonesa tuzilgan NDJSON hodisalarini taqdim etadi. - Portativ binar fayl: Relizlar Linux, macOS va Windows uchun amd64 hamda arm64 arxitekturalarida mavjud.
- Provayderga bog‘liq bo‘lmagan protokol: UNCUT OpenAI bilan mos Chat Completions endpointlari, jumladan lokal serverlar bilan ishlaydi.
- Qayta davom ettiriladigan sessiyalar: Faqat qo‘shib boriladigan JSONL fayllari to‘liq xabarlar va vosita natijalarini saqlaydi.
- To‘rtta yo‘naltirilgan vosita: Agent fayllarni o‘qishi, fayllarga yozishi, aniq matnni almashtirishi va buyruqlarni ishga tushirishi mumkin.
- Ochiq ko‘rsatiladigan xatolar: Yaroqsiz UTF-8, noto‘g‘ri tuzilgan sessiyalar, chiqishning qisqarishi va qadam limiti tugashi jimgina tiklanish o‘rniga xatolarga olib keladi.
UNCUT ni o‘rnatish
Linux
Arxitekturangizga mos reliz binar faylini yuklab oling. ARM64 tizimida amd64 ni arm64 ga almashtiring.
VERSION=0.1.1
ARCH=amd64
curl -fSLo uncut "https://github.com/Balanov/uncut/releases/download/v${VERSION}/uncut-linux-${ARCH}"
mkdir -p "$HOME/.local/bin"
install -m 0755 uncut "$HOME/.local/bin/uncut"
export PATH="$HOME/.local/bin:$PATH"
uncut --version
Agar u allaqachon mavjud bo‘lmasa, $HOME/.local/bin ni doimiy PATH konfiguratsiyangizga qo‘shing.
macOS
Apple Silicon tizimlari odatda arm64 dan foydalanadi; Intel Mac kompyuterlari esa amd64 dan foydalanadi.
VERSION=0.1.1
ARCH=arm64
curl -fSLo uncut "https://github.com/Balanov/uncut/releases/download/v${VERSION}/uncut-darwin-${ARCH}"
mkdir -p "$HOME/.local/bin"
install -m 0755 uncut "$HOME/.local/bin/uncut"
export PATH="$HOME/.local/bin:$PATH"
uncut --version
Windows PowerShell
$Version = "0.1.1"
$Arch = "amd64"
$Dest = "$env:LOCALAPPDATA\Programs\UNCUT"
New-Item -ItemType Directory -Force $Dest | Out-Null
Invoke-WebRequest -Uri "https://github.com/Balanov/uncut/releases/download/v$Version/uncut-windows-$Arch.exe" -OutFile "$Dest\uncut.exe"
$env:Path = "$Dest;$env:Path"
uncut --version
Windows ARM64 tizimida amd64 o‘rniga arm64 dan foydalaning. Keyingi PowerShell sessiyalarida buyruqdan foydalanish uchun manzil katalogini foydalanuvchi PATH iga qo‘shing.
Go orqali o‘rnatish yoki qurish
Agar Go 1.26 yoki undan keyingi versiyasi o‘rnatilgan bo‘lsa, eng so‘nggi versiyani bevosita o‘rnating:
go install github.com/Balanov/uncut/cmd/uncut@latest
Shuningdek, repozitoriy nusxasini qurishingiz mumkin:
git clone https://github.com/Balanov/uncut.git
cd uncut
go build -trimpath -ldflags="-s -w" -o bin/uncut ./cmd/uncut
Windows tizimida chiqish yo‘li sifatida bin/uncut.exe dan foydalaning.
Yuklab olingan binar fayllarni tekshirish
Har bir reliz checksums.txt faylini o‘z ichiga oladi. Quyidagi misol Linux amd64 yuklamasini tekshiradi:
VERSION=0.1.1
ARCH=amd64
curl -fSLO "https://github.com/Balanov/uncut/releases/download/v${VERSION}/checksums.txt"
grep "uncut-linux-${ARCH}$" checksums.txt | sha256sum -c -
Reliz binar fayllari hozircha kod imzosi bilan imzolanmagan, shuning uchun Gatekeeper yoki SmartScreen ogohlantirish ko‘rsatishi mumkin. Bajariladigan faylga ruxsat berishdan oldin SHA-256 nazorat summasini tekshiring. macOS da tekshiruvdan so‘ng karantin faqat o‘rnatilgan binar fayldan olib tashlanishi mumkin:
xattr -d com.apple.quarantine "$HOME/.local/bin/uncut"
Model provayderini sozlash
UNCUT model identifikatorini talab qiladi. Joylashtirilgan xizmat uchun odatda API kaliti ham kerak bo‘ladi. Ikkala qiymatni o‘rnating va keyin promptni ishga tushiring:
export UNCUT_API_KEY="your-api-key"
export UNCUT_MODEL="your-model-id"
uncut "Inspect this repository and fix the failing tests"
UNCUT_BASE_URL yoki OPENAI_BASE_URL o‘rnatilmagan bo‘lsa, standart endpoint https://api.openai.com/v1 hisoblanadi. Boshqa OpenAI bilan mos endpointdan foydalanish uchun uning asosiy URL manzilini ko‘rsating:
export UNCUT_BASE_URL="https://openrouter.ai/api/v1"
UNCUT shuningdek UNCUT_API_KEY dan OPENAI_API_KEY ga o‘tib foydalanadi. Lokal endpointlar uchun odatda kalit talab qilinmaydi.
Lokal Ollama ga ulanish
README dagi sinovdan o‘tgan misolda o‘rnatilgan, vositalar bilan ishlay oladigan qwen3:8b modeli ishlatiladi:
ollama pull qwen3:8b
export UNCUT_BASE_URL="http://localhost:11434/v1"
export UNCUT_MODEL="qwen3:8b"
uncut "Explain this repository"
Misoldagi modelni kompyuteringizda o‘rnatilgan model bilan almashtiring. Vosita chaqiruvlarining sifati va xatti-harakati tanlangan modelga bog‘liq.
Birinchi kodlash vazifangizni ishga tushiring
UNCUT’ni agent tekshirishi kerak bo‘lgan repozitoriydan ishga tushiring. Sukut bo‘yicha joriy katalog fayl vositalari va shell buyruqlari uchun ish maydoniga aylanadi.
cd path/to/project
uncut "Inspect this repository, run the tests, and fix the failure"
Vazifa davomida model to‘rtta vositani chaqirishi mumkin:
read_filebutun UTF-8 matn faylini o‘qiydi.write_fileto‘liq tarkibni yozadi va mavjud bo‘lmagan ota kataloglarni yaratadi.replaceaynan bitta mos keluvchi joyni almashtiradi. Nolta yoki bir nechta moslik topilsa, xatolik yuz beradi.run_commandchiqish kodi hamda stdout va stderr oqimlarining to‘liq birlashtirilgan tarkibini qaytaradi.
Fayl vositalari yo‘llari ish maydoni ichida qolishi kerak. Unix’da buyruqlar /bin/sh -c orqali bajariladi. Windows’da esa ular cmd.exe /D /S /C orqali bajariladi.
Unix quvurlarida UNCUT’dan foydalanish
UNCUT quvur orqali berilgan kiritmani promptga aynan o‘z holicha qo‘shadi. Shu sababli u vaqtinchalik fayllar yaratmasdan kod ko‘rib chiqish va loglarni tahlil qilish uchun mos keladi.
git diff | uncut "Review this diff. Do not edit files."
cat failing-test.log | uncut "Find the likely cause"
Kiritma yaroqli UTF-8 bo‘lishi kerak. UNCUT baytlarni sezdirmay almashtirish o‘rniga yaroqsiz kiritmani rad etadi. U ikkilik fayllarni ham rad etadi. Windows’da ayrim buyruqlar UTF-16 yoki kod sahifasi formatidagi chiqishni hosil qilishi mumkinligi sababli, imkon qadar yordamchi dasturlarni UTF-8 chiqarishga sozlang.
Tuzilgan NDJSON hodisalarini qabul qilish
UNCUT’ni skriptlar, CI tizimlari yoki boshqa agent infratuzilmasi bilan integratsiya qilganda --json parametridan foydalaning:
uncut --json "Run the tests and fix the failure"
Hodisalar oqimi quyidagi yozuv turlarini o‘z ichiga olishi mumkin:
userfoydalanuvchi xabarlari uchun.assistantyordamchi xabarlari va to‘liq vosita chaqiruvlari uchun.assistant_metafoydalanish ma’lumotlari va yakunlanish sabablari uchun.toolto‘liq vosita natijalari uchun.doneish muvaffaqiyatli yakunlanganda.errorish bajarilmaganda.
UNCUT oqim uzatmaydigan Chat Completions’dan foydalanadi. U matn va vosita chaqiruvlarini qo‘llab-quvvatlaydi, ammo rasm kiritmalarini qo‘llab-quvvatlamaydi.
Sessiyalarni yaratish va davom ettirish
Sessiya to‘liq suhbat va vosita natijalarini o‘z ichiga olgan, faqat qo‘shib boriladigan JSONL yozuvidir. Vazifani sessiya fayli bilan boshlang, so‘ng davom ettirish uchun o‘sha fayldan qayta foydalaning:
uncut --session .uncut/work.jsonl "Start the refactor"
uncut --session .uncut/work.jsonl "Continue with the tests"
Agar fayl allaqachon mavjud bo‘lsa, UNCUT uning to‘liq tarixini yuklaydi. Yangi yozuvlar har bir qadamdan so‘ng qo‘shiladi va sinxronlanadi. Yaroqsiz yoki qisman yozuvlar aniq xatoga sabab bo‘ladi va sessiyani yuklashga majburlash uchun tashlab yuborilmaydi.
Sessiya fayllarida manba kodi, buyruq chiqishi, hisob ma’lumotlari yoki boshqa maxfiy ma’lumotlar bo‘lishi mumkin. Ularni tegishlicha himoyalang va versiyalarni boshqarish tizimiga yubormang.
Ish maydoni va agent siklini boshqarish
Joriy katalogdan boshqa ish maydonida ishlash uchun --cwd parametridan foydalaning:
uncut --cwd ./services/api "Run the API tests and explain any failures"
Bir nechta parametrlar so‘rov va sikl xatti-harakatlarini boshqaradi:
--max-steps <n>model chaqiruvlari sonini cheklaydi. Sukut bo‘yicha qiymat32.--max-tokens <n>provayderning sukut bo‘yicha qiymatidan foydalanish o‘rniga aniq chiqish limitini belgilaydi.--request-timeout <duration>har bir so‘rov uchun standart10mvaqt tugash muddatini o‘zgartiradi.0qiymati vaqt tugashini o‘chiradi.--no-agentsUNCUT’ning ish maydonidagiAGENTS.mdfaylini o‘qishiga yo‘l qo‘ymaydi.
Sukut bo‘yicha UNCUT ish maydoni ildizidagi AGENTS.md faylini to‘liq o‘qiydi va uni tizim promptiga qo‘shadi. Sessiyani davom ettirganda esa uni joriy fayldan qayta yaratish o‘rniga avval saqlangan tizim xabaridan foydalanadi.
Chiqish kodlarini tushunish
Ishonchli chiqish kodlari UNCUT’ni avtomatlashtirish uchun foydali qiladi:
0agent muvaffaqiyatli yakuniy javob berganini anglatadi.1provayder, kiritish/chiqarish, sessiya yoki bajarish xatosini bildiradi.2buyruq satridan noto‘g‘ri foydalanilganini bildiradi.3provayderfinish_reason=lengthyokimax_tokensqaytarganini anglatadi; UNCUT qisman javobni rad etdi.4yakuniy javob berilishidan oldin qadamlarning maksimal soniga yetilganini anglatadi.
CI’da nolga teng bo‘lmagan har qanday kodni muvaffaqiyatsiz ish deb hisoblang va stderr yoki --json parametridan olingan yakuniy error hodisasini tekshiring.
Ilg‘or maslahatlar
Limitlarni ongli ravishda tanlang
UNCUT kontekstni ixchamlashtirmagani sababli, uzoq sessiyalar va katta vosita natijalari oxir-oqibat modelning kontekst oynasidan oshib ketishi mumkin. Zarur bo‘lganda yangi sessiya boshlang, yetarli kontekst sig‘imiga ega provayderni tanlang va --max-tokens parametrini faqat provayderning javob limitini tushunganingizda belgilang. UNCUT qisman javoblarni birlashtirmaydi yoki avtomatik qayta urinmaydi.
Avtomatlashtirilgan ishlarni mashina o‘qiy oladigan holda saqlang
CI va integratsiyalar uchun suhbat tarzidagi yakuniy matnni tahlil qilish o‘rniga --json parametridan foydalaning. Alohida meta-ma’lumot hodisalari iste’molchilarga yakunlanish sabablari va foydalanish ma’lumotlarini yordamchi tarkibiga aralashtirmasdan tekshirish imkonini beradi.
Ishonchsiz ishlar uchun izolyatsiyalangan muhitlardan foydalaning
UNCUT sandbox emas. Fayl vositalari ish maydoni chegaralarini ta’minlasa-da, run_command joriy operatsion tizim foydalanuvchisining ruxsatlari bilan bajariladi va ushbu fayl tekshiruvlari bilan cheklanmaydi. Ishonchsiz promptlar yoki repozitoriylarni bir martalik konteynerda yoki boshqa izolyatsiyalangan muhitda ishga tushiring. Fayl o‘zgarishlari va sessiya yozuvlarini o‘zingiz tekshiring.
Tasdiqlash dialoglari, avtomatik commitlar, avtomatik qayta urinishlar yoki yashirin tiklanish sikllari mavjud emas. Bu bajarilish xatti-harakatini to‘g‘ridan-to‘g‘ri qiladi, biroq tegishli darajada cheklangan muhitni tanlash mas’uliyati sizning zimmangizda ekanini anglatadi.
Yo‘qotishsiz shartnomani mahalliy muhitda tekshiring
Repozitoriyda haqiqiy binar fayl va mahalliy provayderdan foydalanadigan deterministik isbotlash skripti mavjud. U Python 3 ni talab qiladi, ammo API kaliti, tashqi model yoki uchinchi tomon Python paketi kerak emas:
go build -o bin/uncut ./cmd/uncut
python bench/proof.py ./bin/uncut
Isbotlash jarayoni katta fayllar va buyruq chiqishining to‘liq uzatilishini, sessiyani aniq davom ettirishni, tahrirlash xatti-harakatini, aniq qisqartirish xatolarini, qadamlar cheklovlarini hamda noto‘g‘ri UTF-8 bilan ishlashni tekshiradi. Bu tekshiruvlar model sifatini emas, uzatish xatti-harakatini o‘lchaydi. Qayd etilgan natijalar va qayta tiklash bo‘yicha ko‘rsatmalar UNCUT repozitoriysida mavjud.
Ishlab chiqish tekshiruvlarini bajaring
UNCUTning o‘ziga o‘zgartirish kiritayotganda Go kodini formatlang, testdan o‘tkazing va vet tekshiruvini bajaring:
gofmt -w cmd internal
go test -count=1 ./...
go vet ./...
Xulosa
UNCUT kodlash agentlarini terminallar, konveyerlar, konteynerlar va CI tizimlaridan ishga tushirishning ataylab kichik va shaffof usulini taqdim etadi. Uning to‘liq xabar uzatishi, aniq xatolarni qayta ishlashi, davom ettiriladigan sessiyalari, tuzilgan hodisalari va ichki o‘rnatilgan to‘rtta vositasi yashirin kontekst qisqarishiga yo‘l qo‘yib bo‘lmaydigan holatlarda foydalidir. OpenAI bilan mos keluvchi endpointni sozlang, ishni ajratilgan ish maydonida boshlang va takrorlanuvchi avtomatlashtirish kerak bo‘lganda sessiyalar yoki NDJSON chiqishidan foydalaning.
