Екі agent, екі worktree, бір merge
Екі мүмкіндікті бір мезетте, екі қалтада, екі agent-пен жаса — сосын екеуін қайта біріктір.
екі agent-ті екі worktree-де қатар жүргізу, екі тармақты да біріктіру және содан кейін шығатын қайшылықты шешу
- Жобаң git-те, status таза және бәрі push жасалған (Lab 06)
- Сол қалтада Claude Code кемінде бір рет іске қосылған, сондықтан жұмыс кеңістігі сенімді деп белгіленген (Lab 01)
- Репозиторийде CLAUDE.md бар (Lab 03)
- Үш терминал терезесі — екеуі жұмыс істеуге, біреуі бақылауға
- Ақылы Claude жоспары. Екі сеанс шамамен екі есе көп жағады.
git worktree — сол репозиторийдің өз тармағына көшірілген екінші қалтасы. Екі қалта деген — екі agent бір мезетте өңдей алады әрі бір-бірінің файлдарын ешқашан көрмейді. Ал мұның жақсы ой болған-болмағанын кейінгі біріктіру кезінде білесің.
Қатар жасалатын екі мүмкіндік, әдейі шақырылған бір қайшылық және осы жердегі жалғыз маңызды сұраққа жауап: бұл жылдамырақ болды ма, әлде жай ғана екі есе қымбат па?
Екінші терминалды ашпай тұрып, шотқа қара
Қатарластық — жылдамдық реттегіші емес. Anthropic-тің 2026 ж. қаңтардағы нұсқаулығы көп агентті жинақты сол бір тапсырмада жалғыз agent-тің token-інен үш-он есе көп деп бағалайды және алдымен бір agent-тің қолынан келетіннің бәрін сарқып алуды айтады. Бұдан бұрынғы зерттеу жүйесі туралы жазба өз жинағын кәдімгі чаттың token-інен шамамен он бес есе көп деп өлшеген, әрі кодпен жұмыстың шынымен қатар жүретін бөліктері зерттеуге қарағанда әлдеқайда аз екенін атап өткен.
Ол C компиляторы — шегі: контейнерлердегі он алты дана, шамамен 2 000 сеанс, шамамен 100 000 жол Rust коды. Ол жұмыс істеді, өйткені тесттер жиыны мінсізге жақын еді. Ал автоматты тексеруі жоқ қатар жүрген agent-тер ешкім тексермеген кодты еселеуден басқа ештеңе істемейді.
Кезекпен істелетін кез келген жұмыс. Екі жартысы да бір дизайн шешіміне тәуелді кез келген жұмыс. Жақсырақ жазылған prompt немесе /clear пәрмені шешіп тастайтын кез келген жұмыс. Автоматты түрде тексере алмайтын кез келген жұмыс.
Әртүрлі файлдарды қозғайтын екі мүмкіндік. Бір жағында жасау, екінші жағында таза көзбен жүргізілетін бөлек тексеру. Жартыларын бір-бірімен кездестірмей тұрып, браузерде бөлек-бөлек тексере алатын жұмыс.
Алдымен алты нәрсе шын болуға тиіс
Екі agent-ті де іске қос, сосын біріктір
Бір шешімді бөліспейтін екі мүмкіндік таңда
QAIRU Event Sign-up үшін: қараңғы режим қосқышы және орын толғанда форманы өшіріп тастайтын бос орын санағышы. Біреуі — сыртқы көрініс, екіншісі — логика. Екеуінің де бір-бірінің қандай шешім қабылдағанын білуі қажет емес.
Алдымен екеуін де біреуден сөйлеммен жазып шық. Жаза алмасаң — бұл екі тапсырма емес, біреу, ал сен бір сеанста қалғаның жөн.
Алаңды тазала
Негізгі қалтада:
git status git log --onelineStatus таза болуға тиіс. Қазір дискіде осы репозиторийдің үш көшірмесі пайда болады; қайсысында commit жасалмаған жұмыс жатқанын өзің болжап отыратын күйге түспе.
A терминалы — бірінші agent-ті өз worktree-сінде іске қос
claude --worktree dark-modeСол бір жалауша бүкіл дайындықты өзі жасайды:
.claude/worktrees/dark-mode/жолындағы жаңа қалта жәнеworktree-dark-modeдеген жаңа тармақ.git worktree addпәрменін өзің ешқашан орындамайсың. Енді оған шекарасы айқын prompt бер:Тіркелу бетіне қараңғы режим қосқышын қос. Шекара — тек мына файлдарды өзгертуге болады: index.html, styles.css CLAUDE.md, README.md файлдарына және .github/ ішіндегі ештеңеге тиіспе. Талаптар: - Беттің жоғарғы жолағында көзге көрінетін қосқыш болсын. - Таңдау localStorage жадында сақталып, бет алғаш салынғанға дейін қолданылсын. - Форма белгілері мен жіберу түймесі екі режимде де оқылатындай қалсын. CLAUDE.md файлын ұстан. Жұмыс істегенде осы тармақта бір жолдық хабармен commit жаса. Содан кейін тоқта да, не өзгерткеніңді әр файлды бөлек атап айтып бер.B терминалы — екінші agent-ті сол негізгі қалтадан іске қос
Жобаның сол қалтасында екінші терминал терезесін аш. Оны бірінші worktree-нің ішінде ашпа.
claude --worktree seats-leftТіркелу бетіне бос орын санағышын қос. Шекара — тек мына файлдарды өзгертуге болады: index.html, seats.js styles.css, CLAUDE.md, README.md файлдарына тиіспе. Талаптар: - Форманың жанында "N орын қалды" деп көрсет, саны бір ғана сыйымдылық тұрақтысынан алынсын. - N нөлге жеткенде жіберу түймесі өшірілсін де, "орын қалмады" деген қысқа хабар шықсын. - Бүкіл логика seats.js ішінде тұрады. index.html бір script тегі мен бір контейнер div алады. CLAUDE.md файлын ұстан. Жұмыс істегенде осы тармақта бір жолдық хабармен commit жаса. Содан кейін тоқта да, не өзгерткеніңді әр файлды бөлек атап айтып бер.Екі prompt-та да ортақ нәрсеге көңіл бөл: файлдардың нақты тізімі. Осы беттегі ең пайдалы жол — сол.
C терминалы — олар жұмыс істеп жатқанда сырттан бақыла
git worktree listҮш жазба: негізгі жұмыс көшірмең және екі worktree. Әр worktree-дегі
index.htmlфайлын браузерде аш та, мүмкіндіктерді бөлек-бөлек тексер — дәл қазір, agent-тер әлі жұмыс істеп тұрғанда. Өз ақысын ақтайтын бөлік осы: әр жарты екіншісімен кездеспей тұрып тексеріліп қояды.Жобаңда тәуелділіктер болса, орнату пәрменін әр worktree-нің ішінде орында. Worktree — жаңа жұмыс көшірмесі;
node_modulesонымен бірге көшпейді.Әр тармақты оны жазбаған контекстпен тексер
Бірінші agent commit жасағаннан кейін, A терминалында:
Осы тармақтың main тармағына қарсы diff-ін subagent арқылы тексер. Тек дұрыстық мәселелерін және CLAUDE.md ережелері бұзылған жерлерді айт — стильді де, атау таңдауын да емес. Тапқан әр нәрсең үшін мынаны бер: қай файлда, не бұзылады және ең шағын түзету қандай. Шын мәселе таппасаң, соны айт та тоқта.Subagent өзінің жеке контекст терезесін алады, сондықтан жаңа ғана жазған кодына бауыр басып қалмайды; үздік тәжірибелер беті дәл осылай бөлуді ұсынады. Шын мәселені түзет, қалғанын елемей қой да, B терминалында қайтала.
Екі сеанстан да шық және worktree-лерді сақтап қал
Әр сеанстан шық. Өзгерісі жоқ worktree шыққан кезде өзі жойылады; commit-і барын сақтау керек пе, жою керек пе деп сұрайды. Сақтауды таңда — ол тармақтар саған әлі керек.
Бірінші тармақты біріктір
Негізгі қалтаға қайт:
git merge worktree-dark-modeБұл таза түседі: тармақ басталғаннан бері main тармағында ештеңе қозғалған жоқ.
Екінші тармақты біріктір де, қайшылықпен бетпе-бет кел
git merge worktree-seats-leftЕкі agent те
index.htmlфайлын өзгертті. Олардың өңдеулері файлдың бір аймағына түскенде git тоқтап, файлға қайшылық белгілерін қалдырады — бұл жерде бұл күтілген нәтиже, қате емес. Оны негізгі қалтадағы agent-ке тапсыр:git merge index.html файлында қайшылық белгілерін қалдырды. Оларды ЕКІ мүмкіндік те аман қалатындай шеш: қараңғы режим қосқышы және бос орын санағышы. Қайшылықтан құтылу үшін мүмкіндіктің бірін де өшіріп тастама. Файл тазарғанда маған шешілген бөлікті көрсет, содан кейін біріктіруді commit жасамай тұрып браузерде екі мүмкіндікті де тексеретін нақты қадамдарды бер.Commit жасамай тұрып, шешілген бөлікті өзің оқып шық. Қайшылықты шешіп жатқан agent ниетті болжап отыр, ал мүмкіндіктен айырылудың ең арзан жолы — оның жартысын үнсіз тастап кеткен шешімді қабылдау.
Егер git екі өңдеуді де шағымданбай біріктірсе, жол нөмірлері жағынан жолың болғаны. Бетті бәрібір аш та, екі мүмкіндіктің де орнында тұрғанын тексер — таза біріктіру әлі жұмыс істейтін бет деген сөз емес.
main тармағында тексер, сосын тазала
Бетті негізгі қалтадан аш. Екі мүмкіндік те бірге жұмыс істеуге тиіс: режимді ауыстырып көр де, орын санағышының әлі жаңарып тұрғанына көз жеткіз.
git worktree remove .claude/worktrees/dark-mode git worktree remove .claude/worktrees/seats-left git branch -d worktree-dark-mode worktree-seats-left git worktree listТармақтарды жоймай тұрып worktree-лерді алып таста — git бір жерде әлі көшірілген күйі тұрған тармақты жоюдан бас тартады. Соңғы пәрмен тек негізгі жұмыс көшірмеңді көрсетуге тиіс.
Қаласаң, қарапайым shell-ден мына аяқтаманы жаса:
claude -p "Summarize what changed in the last 3 commits in 5 bullets" \ --allowedTools "Bash(git log *),Bash(git diff *)" --output-format jsonJSON ішінен
result,session_idжәнеtotal_cost_usdөрістерін тап. Осы беттің шын мәні — соңғы өрісте.--allowedToolsжолы әсемдік үшін емес:-pManual режимінде басталады, сондықтан рұқсат бермеген пәрменің тікелей қабылданбай қалады, ал қысқаша мазмұн журналды мүлде оқымай жазылады.
Қайшылық — кездейсоқтық емес, сабақтың өзі
Worktree-лер файлдарды оқшаулайды. Олар шешімдерді оқшауламайды. Екі agent те index.html үшін жақсы код жазды, бірақ бәрібір соқтығысты: екеуінің де екіншісі дәл сол жоғарғы жолақты қайта құрап жатқанынан хабары болмады. Файлдар жағын Claude Code өзі мәжбүрлейді: worktree сеансының ішінде ол негізгі жұмыс көшірмесіне бағытталған өңдеулерді, пәрмендерді және git-ті басқа жаққа бұруды бұғаттайды. Шешім жағын ешнәрсе мәжбүрлемейді. Оны сен істейсің.
Сондықтан нағыз шеберлік --worktree деп теруде емес. Ол — ештеңе басталмай тұрып жұмысты файлдар шекарасымен бөлуде:
- Әр файлдың бір иесі. Жоғарыдағыдай, әр prompt-та файлдарды атап жаз.
- Мүмкін болса, екінші agent-ке өз файлын бер.
seats.jsтек сол үшін бар: сондаindex.htmlфайлының бір ғана жолы өзгеруге тиіс болады. - Бір жүгірісте екі agent-ке CLAUDE.md, README немесе баптау файлдарын ешқашан өңдетпе.
- Сол күні біріктір. Ескіріп кеткен тармақ шағын қайшылықты жарты күндік жұмысқа айналдырады.
Екі agent бір нәтижені қымбат алудың жолы болатын кез
Cognition компаниясының көп агентті жүйелерге қарсы 2025 ж. маусымдағы дәлелі ең маңызды жерде күшінде қалады: әр әрекеттің астында айтылмаған шешім жатыр, ал бір-біріне қайшы шешімдер нашар нәтиже береді. Олардың мысалы — ойын жасап жатқан екі subagent: біреуі Mario үлгісіндегі фон салады, екіншісі оған жараспайтын құс салады, ал жетекші agent-ке бір-біріне келмейтін екі жорамалды біріктіру қалады. Бұл — сенің index.html қайшылығың, тек үлкейтілген түрі.
Сондықтан жұмыс кезекпен істелетін болса, екі жартысы бір шешімді бөліссе, өткірірек жазылған prompt немесе /clear пәрмені жеткілікті болса, не автоматты тексеруің болмаса — екінші agent-тен бас тарт. Нағыз жұмыстан аман шығатын әдепкі жинақ қарапайым: бір agent, зерттеуге subagent-тер, тексеруге таза контекст.
ТереңірекТармақ шын мәнінде қайдан басталады және .env файлыңды қалай ала кетесің
Әдепкіде worktree-лер worktree.baseRef: "fresh" мәнін пайдаланады — олар қашықтағы әдепкі тармақтан (origin/HEAD) тарайды, ал remote болмаса жергілікті HEAD-ке қайта оралады. Оның орнына push жасалмаған жұмысты қосқың келсе, Claude Code параметрлеріне {"worktree": {"baseRef": "head"}} деп жаз.
Жаңа жұмыс көшірмесінде елемей кетілген файлдар да, тәуелділіктер де болмайды. Саған керек елеусіз файлдарды — мысалы, .env — gitignore синтаксисімен .worktreeinclude файлына тізіп жаз, сонда олар әр жаңа worktree-ге көшіріледі. Тәуелділіктерді қайта орнатасың. Дереккөз: worktree құжаттамасы.
ТереңірекҚолмен жасайтын жол — кез келген құралда жұмыс істейді
--worktree — Claude Code-тың қарапайым git үстіне салған қабығы, сондықтан дәл сондай оқшаулау Cursor-да, Codex-те, Gemini CLI құралында немесе жай ғана редакторда да жұмыс істейді:
git worktree add ../qairu-dark-mode -b dark-mode
git worktree list
git worktree remove ../qairu-dark-modeСодан кейін сол қалтаға cd пәрменімен кір де, қалаған agent-іңді іске қос.
ТереңірекЕкеуден үлкені: /batch, agent командалары және workflow-лар
/batch пәрменінен кейін бір нұсқау жазсаң, ол үлкен өзгерісті worktree-мен оқшауланған 5–30 subagent-ке бөледі, әрқайсысы өз pull request-ін ашады. Agent командалары — жетекші және ортақ тапсырма тізімі бар командаластар — тәжірибелік мүмкіндік, әдепкіде өшірулі, ал құжаттамада командаластардың worktree-мен оқшауланбайтыны ашық жазылған, сондықтан файлдарды қолмен бөлесің; шығындар беті командаластар plan mode-та жұмыс істегенде оларды қарапайым сеанстың token-інен шамамен жеті есе көп деп бағалайды. Динамикалық workflow-лар әдепкіде бір мезетте 16 agent-ке дейін жүргізеді. Алдымен agent-тер туралы шолуды оқы — үшеуі де сен жаңа ғана өлшеген шотты еселейді.
Ұшар алдындағы тексеру, қайшылықтардың дені пайда болмайтындай файл иелігінің ережелері, біріктіру мен тазалау пәрмендері ретімен және сені бір сеансқа қайтып оралуға мәжбүрлейтін сұрақтар.
Екі мүмкіндік те main тармағында бірге жұмыс істейді, `git worktree list` тек негізгі жұмыс көшірмесін көрсетеді, ал сен екі agent-тің бір-бірінің файлдарын неге ешқашан қайта жазбағанын дауыстап түсіндіре аласың.