Yeqa uye kokuyinhloko
Izifundo ze-AI

Qalisa Ama-Agent Okubhala Amakhodi Angalahlekelwa Lutho Kuma-Shell Pipeline nge-UNCUT

Lesi sifundo sichaza indlela yokufaka nokulungisa i-UNCUT, ithuluzi elincane elingenaso isixhumi esibonakalayo lama-agent okubhala amakhodi lamatheminali, imisebenzi ye-CI, ama-container, kanye nezivivinyo. Uzofunda ukuqhuba ama-prompt, ukucubungula okokufaka okudluliswa ngamapayipi, ukusebenzisa amathuluzi ngokuphepha, ukuqhubeka namaseshini e-JSONL, ukusebenzisa imicimbi ye-NDJSON, kanye nokuphatha imikhawulo yabahlinzeki ngaphandle kokunqanyulwa okungabonakali.

Qalisa Ama-Agent Okubhala Amakhodi Angalahlekelwa Lutho Kuma-Shell Pipeline nge-UNCUT

Yini i-UNCUT?

I-UNCUT iyiharness ye-coding agent engenayo i-head, eyenzelwe ama-shell pipeline, imisebenzi ye-CI, ama-container, kanye nokuhlolwa kwama-agent. Isatshalaliswa njengefayela elincane le-Go elixhunywe ngokuma lodwa, futhi ixhumana nge-standard input ne-standard output. Ayinayo i-terminal user interface, i-telemetry, uhlelo lwama-plugin, ama-agent asebenza ngemuva, ama-retry azenzakalelayo, noma i-context compaction efihlekile.

Okuyichazayo yinkontileka yayo yokuthutha idatha ngaphandle kokulahlekelwa. I-UNCUT ithumela yonke ingxoxo njalo lapho ibiza imodeli, futhi ayinqumi, ayifingqi, ayisusi, noma ayibhali kabusha ama-prompt e-UTF-8 avumelekile, imilayezo egciniwe, okuqukethwe kwamafayela, noma okukhiphayo kwemiyalo. Uma umhlinzeki emisa impendulo ngenxa yomkhawulo wokukhipha, i-UNCUT ibika iphutha esikhundleni sokuphatha impendulo engaphelele njengempendulo ephumelele.

Okubalulekile: Ukuthutha idatha ngaphandle kokulahlekelwa akukhulisi i-context window yemodeli futhi akulawuli ukucutshungulwa ohlangothini lomhlinzeki. Umhlinzeki usengalenqaba isicelo esikhulu kakhulu. I-UNCUT yenza lelo phutha libonakale esikhundleni sokususa okuqukethwe buthule.

Izici ezibalulekile

  • Umongo ophelele: Yonke imilayezo egciniwe nemiphumela yamathuluzi ithunyelwa kuso sonke isicelo semodeli.
  • Ukusebenza ngaphandle kwe-interface: Umbhalo wokugcina ubhalwa ku-stdout, kanti i---json inikeza imicimbi ehlelekile ye-NDJSON.
  • Ifayela eliphathekayo: Ama-release ayatholakala ku-Linux, macOS, naku-Windows ku-amd64 naku-arm64.
  • I-protocol engancikile kumhlinzeki: I-UNCUT isebenza nama-endpoint e-OpenAI-compatible Chat Completions, kuhlanganise namaseva asekhaya.
  • Ama-session angaqhubeka: Amafayela e-JSONL abhalwa ngokwengeza, agcina imilayezo ephelele nemiphumela yamathuluzi.
  • Amathuluzi amane agxile: I-agent ingafunda amafayela, ibhale amafayela, ishintshe umbhalo oqondile, futhi isebenzise imiyalo.
  • Amaphutha acacile: I-UTF-8 engavumelekile, ama-session angakhiwanga kahle, ukunqanyulwa kokukhiphayo, nokuphela komkhawulo wezinyathelo kukhiqiza amaphutha esikhundleni sokululama buthule.

Faka i-UNCUT

Linux

Landa ifayela le-release elihambisana ne-architecture yakho. Shintsha i-amd64 ibe yi-arm64 kusistimu ye-ARM64.

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

Faka i-$HOME/.local/bin ekucushweni okuhlala njalo kwe-PATH yakho uma ingakafakwa.

macOS

Amasistimu e-Apple Silicon ngokuvamile asebenzisa i-arm64; ama-Mac e-Intel asebenzisa i-amd64.

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

Sebenzisa i-arm64 esikhundleni se-amd64 ku-Windows ARM64. Faka ifolda okuyiwa kuyo ku-PATH yomsebenzisi wakho ukuze umyalo utholakale kuma-session e-PowerShell azayo.

Faka noma wakhe nge-Go

Uma kufakiwe i-Go 1.26 noma eyakamuva, faka inguqulo yakamuva ngokuqondile:

go install github.com/Balanov/uncut/cmd/uncut@latest

Ngenye indlela, yakha i-checkout ye-repository:

git clone https://github.com/Balanov/uncut.git
cd uncut
go build -trimpath -ldflags="-s -w" -o bin/uncut ./cmd/uncut

Ku-Windows, sebenzisa i-bin/uncut.exe njengendlela yokukhipha.

Qinisekisa amafayela e-binary alandiwe

I-release ngayinye ifaka ifayela le-checksums.txt. Isibonelo esilandelayo siqinisekisa ukulanda kwe-Linux amd64:

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 -

Ama-binary e-release okwamanje awasayiniwe nge-code, ngakho i-Gatekeeper noma i-SmartScreen ingabonisa isexwayiso. Qinisekisa i-SHA-256 checksum ngaphambi kokuvumela ifayela elisebenzisekayo. Ngemva kokuqinisekisa ku-macOS, i-quarantine ingasuswa efayileni elilodwa elifakiwe kuphela:

xattr -d com.apple.quarantine "$HOME/.local/bin/uncut"

Lungiselela umhlinzeki wemodeli

I-UNCUT idinga isihlonzi semodeli. Enkonzweni ephethwe, ngokuvamile idinga ne-API key. Setha womabili amanani bese usebenzisa i-prompt:

export UNCUT_API_KEY="your-api-key"
export UNCUT_MODEL="your-model-id"
uncut "Inspect this repository and fix the failing tests"

I-endpoint ezenzakalelayo yi-https://api.openai.com/v1, ngaphandle uma kusethwe i-UNCUT_BASE_URL noma i-OPENAI_BASE_URL. Ukuze usebenzise enye i-endpoint ehambisana ne-OpenAI, nikeza i-base URL yayo:

export UNCUT_BASE_URL="https://openrouter.ai/api/v1"

I-UNCUT iphinde isebenzise i-OPENAI_API_KEY uma i-UNCUT_API_KEY ingekho. Ngokuzenzakalelayo, i-key ayidingeki kuma-endpoint asekhaya.

Xhuma ku-Ollama yasekhaya

Isibonelo esihloliwe se-README sisebenzisa imodeli efakiwe, ekwazi ukusebenzisa amathuluzi, i-qwen3:8b:

ollama pull qwen3:8b
export UNCUT_BASE_URL="http://localhost:11434/v1"
export UNCUT_MODEL="qwen3:8b"
uncut "Explain this repository"

Faka imodeli efakwe emshinini wakho esikhundleni sesibonelo. Izinga nokuziphatha kokubiza amathuluzi kuncike kwimodeli ekhethiwe.

Qalisa umsebenzi wakho wokuqala wokwenza ikhodi

Qalisa i-UNCUT usuka endaweni yokugcina ofuna i-agent iyihlole. Ngokuzenzakalelayo, uhla lwemibhalo lwamanje luba yindawo yokusebenza yamathuluzi wamafayela nemiyalo ye-shell.

cd path/to/project
uncut "Hlola le ndawo yokugcina, sebenzisa izivivinyo, bese ulungisa ukwehluleka"

Ngesikhathi somsebenzi, imodeli ingabiza amathuluzi amane:

  • read_file ifunda lonke ifayela lombhalo le-UTF-8.
  • write_file ibhala okuqukethwe okuphelele futhi idale uhla lwemibhalo lwabazali olungekho.
  • replace ishintsha ukwenzeka okukodwa ncamashi. Iyahluleka uma ingatholi okufanayo noma ithola okufanayo okuningi.
  • run_command ibuyisa ikhodi yokuphuma kanye ne-stdout ne-stderr ehlanganisiwe ephelele.

Izindlela zamathuluzi wamafayela kumele zihlale ngaphakathi kwendawo yokusebenza. Ku-Unix, imiyalo isebenza nge-/bin/sh -c. Ku-Windows, isebenza nge-cmd.exe /D /S /C.

Sebenzisa i-UNCUT kumapayipi e-Unix

I-UNCUT inamathisela okokufaka okuphasisiwe ekwazisweni njengoba kunjalo. Lokhu kuyenza ifanele ukubuyekezwa nokuhlaziywa kwamalogi ngaphandle kokudala amafayela esikhashana.

git diff | uncut "Buyekeza lo mehluko. Ungawahleli amafayela."
cat failing-test.log | uncut "Thola imbangela engaba khona"

Okokufaka kumele kube yi-UTF-8 evumelekile. I-UNCUT iyakwenqaba okokufaka okungavumelekile kunokushintsha amabhayithi buthule. Iphinde yenqabe amafayela kanambambili. Ku-Windows, lungiselela izinsiza ukuthi zikhiphe i-UTF-8 lapho kungenzeka khona ngoba eminye imiyalo ikhiqiza okukhiphayo kwe-UTF-16 noma kwekhodi yephepha.

Sebenzisa imicimbi ehlelekile ye-NDJSON

Sebenzisa --json lapho uhlanganisa i-UNCUT nezikripthi, amasistimu e-CI, noma enye ingqalasizinda yama-agent:

uncut --json "Qalisa izivivinyo bese ulungisa ukwehluleka"

Ukusakazwa kwemicimbi kungaba nezinhlobo zamarekhodi ezilandelayo:

  • user yemilayezo yomsebenzisi.
  • assistant yemilayezo ye-assistant nezingcingo zamathuluzi eziphelele.
  • assistant_meta yolwazi lokusetshenziswa nezizathu zokuqeda.
  • tool yemiphumela yamathuluzi ephelele.
  • done lapho ukusebenza kuqeda ngempumelelo.
  • error lapho ukusebenza kwehluleka.

I-UNCUT isebenzisa ama-Chat Completions angasakazwanga. Isekela umbhalo nezingcingo zamathuluzi, kodwa ayisekeli okokufaka kwezithombe.

Dala futhi uqhubeke namaseshini

Iseshini irekhodi le-JSONL elengezwa kuphela eliqukethe yonke ingxoxo nemiphumela yamathuluzi. Qala umsebenzi ngefayela leseshini, bese usebenzisa lelo fayela futhi ukuze uqhubeke:

uncut --session .uncut/work.jsonl "Qala ukulungisa kabusha ikhodi"
uncut --session .uncut/work.jsonl "Qhubeka nezivivinyo"

Uma ifayela selikhona, i-UNCUT ilayisha wonke umlando walo. Amarekhodi amasha ayengezwa futhi avumelaniswe ngemva kwesinyathelo ngasinye. Amarekhodi angavumelekile noma angaphelele adala iphutha elicacile futhi awalahlwa ukuze kuphoqwe iseshini ukuthi ilayishe.

Amafayela amaseshini angaqukatha ikhodi yomthombo, okukhiphayo kwemiyalo, iziqinisekiso, noma ezinye izimfihlo. Wavikele ngokufanele futhi ugweme ukuwafaka ekulawulweni kwezinguqulo.

Lawula indawo yokusebenza nomjikelezo we-agent

Sebenzisa --cwd ukuze usebenze ngendawo yokusebenza engesiyona ifolda yamanje:

uncut --cwd ./services/api "Qalisa izivivinyo ze-API bese uchaza noma yikuphi ukwehluleka"

Izinketho eziningana zilawula ukuziphatha kwezicelo nomjikelezo:

  • --max-steps <n> ikhawulela izingcingo zemodeli. Okuzenzakalelayo ngu-32.
  • --max-tokens <n> isetha umkhawulo ocacile wokukhipha womhlinzeki esikhundleni sokusebenzisa okuzenzakalelayo komhlinzeki.
  • --request-timeout <duration> ishintsha isikhathi sokuvala sesicelo ngasinye sisuke kokuzenzakalelayo okungu-10m. Inani elingu-0 likhubaza isikhathi sokuvala.
  • --no-agents ivimbela i-UNCUT ekufundeni i-AGENTS.md yendawo yokusebenza.

Ngokuzenzakalelayo, i-UNCUT ifunda ngokuphelele i-AGENTS.md empandeni yendawo yokusebenza bese iyengeza ekwazisweni kwesistimu. Lapho kuqhutshwa iseshini futhi, iphinda isebenzise umlayezo wesistimu wokuqala ogciniwe esikhundleni sokuwakha kabusha isuka kufayela lamanje.

Qonda amakhodi okuphuma

Amakhodi okuphuma anokwethenjelwa enza i-UNCUT isebenziseke ekuzenzakaleleni:

  • 0 kusho ukuthi i-agent ikhiqize impendulo yokugcina eyimpumelelo.
  • 1 ikhombisa iphutha lomhlinzeki, lokokufaka/lokukhipha, leseshini, noma lokwenza.
  • 2 ikhombisa ukusetshenziswa komugqa womyalo okungavumelekile.
  • 3 kusho ukuthi umhlinzeki ubuyise finish_reason=length noma max_tokens; i-UNCUT yenqabe impendulo engaphelele.
  • 4 kusho ukuthi kufinyelelwe enanini eliphezulu lezinyathelo ngaphambi kwempendulo yokugcina.

Kwi-CI, phatha wonke amakhodi angelona uziro njengokusebenza okuhlulekile bese uhlola i-stderr noma umcimbi wokugcina we-error ovela ku---json.

Amathiphu athuthukile

Khetha imikhawulo ngenhloso

Ngenxa yokuthi i-UNCUT ayifinyezi umongo, amaseshini amade nemiphumela emikhulu yamathuluzi kungagcina kudlule iwindi lomongo wemodeli. Qala iseshini entsha lapho kufanele, khetha umhlinzeki onomthamo womongo owanele, futhi usethe --max-tokens kuphela uma uqonda umkhawulo wempendulo womhlinzeki. I-UNCUT ngeke ihlanganise izimpendulo ezingaphelele noma iphinde izame ngokuzenzakalelayo.

Gcina ukusebenza okuzenzakalelayo kufundeka yimishini

Sebenzisa --json kwi-CI nasekuhlanganiseni esikhundleni sokuhlaziya umbhalo wengxoxo wokugcina. Imicimbi ehlukene yemethadatha ivumela abathengi ukuthi bahlole izizathu zokuqeda nokusetshenziswa ngaphandle kokukuxuba nokuqukethwe kwe-assistant.

Sebenzisa izindawo ezihlukanisiwe zomsebenzi ongathembekile

I-UNCUT ayiyona i-sandbox. Nakuba amathuluzi wamafayela ephoqelela imingcele yendawo yokusebenza, run_command isebenza ngezimvume zomsebenzisi wamanje wesistimu yokusebenza futhi ayivinjelwanga yilokho kuhlolwa kwamafayela. Sebenzisa ukwaziswa noma izindawo zokugcina ezingathembekile ngaphakathi kwe-container elahlwayo noma kwenye indawo ehlukanisiwe. Zihlolele wena izinguquko zamafayela namarekhodi amaseshini.

Awekho amabhokisi ezingxoxo okugunyaza, ama-commit azenzakalelayo, ukuphinda uzame okuzenzakalelayo, noma imijikelezo yokubuyisa efihlekile. Lokhu kwenza ukuziphatha kokwenza kube sobala, kodwa kusho nokuthi unomthwalo wokukhetha indawo evinjelwe ngendlela efanele.

Qinisekisa inkontileka yokudlulisa ngaphandle kokulahleka endaweni yangakini

Indawo yokugcina ikhodi ihlanganisa iskripthi sokuqinisekisa esinqunywe kusengaphambili esisebenzisa i-binary yangempela nomhlinzeki wasendaweni. Sidinga i-Python 3 kodwa asidingi ukhiye we-API, imodeli yangaphandle, noma iphakheji ye-Python yomunye umuntu:

go build -o bin/uncut ./cmd/uncut
python bench/proof.py ./bin/uncut

Ubufakazi buhlola ukudluliswa okuphelele kwamafayela amakhulu nokuphumayo kwemiyalo, ukuqhubeka kabusha kweseshini ngokunembile, indlela yokuhlela, ukwehluleka okusobala kokunqunywa, imikhawulo yezinyathelo, kanye nokuphathwa kwe-UTF-8 engavumelekile. Lezi zivivinyo zikala ukuziphatha kokudlulisa kunekhwalithi yemodeli. Imiphumela erekhodiwe nemiyalelo yokuphinda kwenziwe iyatholakala endaweni yokugcina ikhodi ye-UNCUT.

Qalisa ukuhlolwa kokuthuthukisa

Lapho ulungisa i-UNCUT uqobo, lungisa ifomethi, hlola, futhi usebenzise i-vet kukhodi ye-Go:

gofmt -w cmd internal
go test -count=1 ./...
go vet ./...

Isiphetho

I-UNCUT inikeza indlela encane nesobala ngamabomu yokusebenzisa ama-agent okubhala ikhodi kumatheminali, kumapayipi okusebenza, kuma-container, nasezinhlelweni ze-CI. Ukudluliswa kwemilayezo ephelele, ukuphathwa kokwehluleka okusobala, amasession angaqhubeka, imicimbi ehlelekile, kanye namathuluzi amane akhelwe ngaphakathi kuyenza ibe wusizo lapho ukuncishiswa komongo buthule kungamukelekile. Lungiselela indawo yokuphela ehambisana ne-OpenAI, qala endaweni yokusebenza ehlukanisiwe, futhi usebenzise amasession noma okukhiphayo kwe-NDJSON lapho udinga ukuzenzakalela okungaphindaphindeka.