Asosiy kontentga o‘tish
AI qo‘llanmalari

UNCUT yordamida Shell Pipeline’larida Yo‘qotishsiz Kodlash Agentlarini Ishlating

Ushbu qo‘llanmada UNCUT’ni o‘rnatish va sozlash, terminallar, CI vazifalari, konteynerlar hamda tajribalar uchun mo‘ljallangan kichik headless kodlash agenti vositasi bilan ishlash tushuntiriladi. Siz promptlarni ishga tushirish, pipeline orqali uzatilgan ma’lumotlarni qayta ishlash, vositalardan xavfsiz foydalanish, JSONL seanslarini davom ettirish, NDJSON hodisalarini qabul qilish va provayder cheklovlarini ma’lumotlarni sezdirmasdan qisqartirmagan holda boshqarishni o‘rganasiz.

UNCUT yordamida Shell Pipeline’larida Yo‘qotishsiz Kodlash Agentlarini Ishlating

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, --json esa 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_file butun UTF-8 matn faylini o‘qiydi.
  • write_file to‘liq tarkibni yozadi va mavjud bo‘lmagan ota kataloglarni yaratadi.
  • replace aynan bitta mos keluvchi joyni almashtiradi. Nolta yoki bir nechta moslik topilsa, xatolik yuz beradi.
  • run_command chiqish 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:

  • user foydalanuvchi xabarlari uchun.
  • assistant yordamchi xabarlari va to‘liq vosita chaqiruvlari uchun.
  • assistant_meta foydalanish ma’lumotlari va yakunlanish sabablari uchun.
  • tool to‘liq vosita natijalari uchun.
  • done ish muvaffaqiyatli yakunlanganda.
  • error ish 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 qiymat 32.
  • --max-tokens <n> provayderning sukut bo‘yicha qiymatidan foydalanish o‘rniga aniq chiqish limitini belgilaydi.
  • --request-timeout <duration> har bir so‘rov uchun standart 10m vaqt tugash muddatini o‘zgartiradi. 0 qiymati vaqt tugashini o‘chiradi.
  • --no-agents UNCUT’ning ish maydonidagi AGENTS.md faylini 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:

  • 0 agent muvaffaqiyatli yakuniy javob berganini anglatadi.
  • 1 provayder, kiritish/chiqarish, sessiya yoki bajarish xatosini bildiradi.
  • 2 buyruq satridan noto‘g‘ri foydalanilganini bildiradi.
  • 3 provayder finish_reason=length yoki max_tokens qaytarganini anglatadi; UNCUT qisman javobni rad etdi.
  • 4 yakuniy 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.