Мазмұнға өту
Vasic Digital

// деңгей: helix-primary · тапсырыс 12

LLMOrchestrator Беталицензия: Apache-2.0

Go (1.25)Go stdlib (+ testify, yaml.v3)Pipe transport (JSON-lines over stdio)File transport (inbox/outbox/shared)sync.Mutex / sync.CondCircuit breaker + HealthMonitorpkg/i18n TranslatorChallenge harness

Көзі

LLMOrchestrator — control-plane fan-out Coding agents (spawned + driven) Resilience Client / caller MultiProviderPool round-robin / preference OpenCode Claude Code Gemini Junie Qwen Code Transport pipe JSON-lines · file inbox/outbox Circuit breaker closed→open→half-open
// архитектура

Барлық автономды CLI кодтау агенттері үшін бірыңғай басқару жазығы.

Бір ортақ интерфейс арқылы бірнеше LLM технологиясына негізделген CLI агенттерін іске қосуға және басқаруға мүмкіндік беретін қайта қолданылатын Go модулі. Схемалық үзілістері бар ағындық қауіпсіз агенттер пулы және таңдаулы бағыттау стратегиялары, әдейі тұтынушыға тәуелсіз, ауыстырылатын i18n аудармашысы бар.

LLMOrchestrator — автономды CLI агенттерін (OpenCode, Claude Code, Gemini, Junie, Qwen Code) іске қосу, басқару және араласу үшін пайдаланылатын жеке, қайта қолданылатын Go модулі. Ол аралас құбыр+файл протоколы арқылы әрбір агентке арналған схемалық үзілістер, ауыстырылатын көп провайдерлік таңдау, бөлектелген i18n абстракциясы және алдаушылыққа қарсы тест кепілдіктерімен жабдықталған.

LLMOrchestrator — автономды CLI кодтау агенттерін оркестрлеу үшін ортақ инфрақұрылым. Ол көп агенттік жүйелердің барлығы тыныштықта қажет ететін және әдетте нашар қайта жасалатын құбырлау жұмысын атқарады. OpenCode, Claude Code, Gemini CLI, Junie және Qwen Code сияқты құралдар үшін әр жоба жекеден процесс іске қосуды, хабарламаларды фреймдеуді және нәтижелерді талдауды қайта жасаудың орнына, ол бірыңғай Agent интерфейсін, ағындық қауіпсіз AgentPool және бірнеше провайдерден агенттерді біріктіретін MultiProviderPool ұсынады. Бағыттау AgentSelector арқылы ауыстырылады — талаптарға сай келмейтін провайдерлерді өткізіп жіберетін айналмалы тарату немесе алмастыру ретімен таңдау. Жұмыс қалай бөлінетіні — бұл сіз таңдайтын саясат, ал емес кодта бекітілген болжам. Әрбір нақты агент BaseAdapter үстінде жұқа адаптер болып келеді, ол толық процесс өмірлік циклін басқарады: құбырды орнатумен бастау, SIGTERM-ден кейін SIGKILL арқылы аяқталған тоқтату, қайта іске қосу және тірілікті тексеру — бұл ұзақ уақытты қажет ететін, қатеге бейім бөлік, бір рет шешілген.

Араласу әдейі аралас жүргізіледі, жұмысқа сәйкес тасымалдау таңдалады. Құбырлық тасымалдау жылдам интерактивті хабарламалар үшін жаңа жолмен бөлінген JSON хабарламаларын, әр сұраныс үшін оқу мерзімі мен жауап ұзындығының шектеуін қолданады, ал файлдық тасымалдау үлкен немесе тұрақты артефактілер үшін сессиялық ішке/сыртқы/ортақ бумаларды пайдаланады, олар құбырда сақталуға тиіс емес. Төзімділік кейінгі ой емес — ол құрылымдық: әрбір агент үшін схемалық үзіліс үш рет қатарынан сәтсіздікке ұшырағаннан кейін 60 секундтық салқындатудан кейін жартылай ашық зондтауға ауысады, ал фондық денсаулық мониторы агенттерді тексеріп тұрады, сондықтан тоқтаған агент кіріс трафигі оны байқамай тұрып қалпына келе алады. Пулды алу шартты айнымалы бойынша блокталады, процессорды бос айналыспен өртеп жібермейді, ал жауапты талдаушы ағындық қауіпсіз және параллель шақыруға жарамды. Модуль қатаң бөлектелген — тұтынушыға тән ешқандай мәлімет оған ене алмайды, ал әрбір пайдаланушыға көрсетілетін жол ауыстырылатын i18n Translator арқылы өтеді, NoopTranslator хабарлама идентификаторларын өзгеріссіз қайтарады, сондықтан жоқ аударма дауыстап көрсетіледі, жасырылмайды.

Әрбір көп агенттік жүйе CLI агенттерін сенімді түрде іске қосуы және олармен араласуы керек. Әр жоба үшін іске қосуды, фреймдеуді, талдауды және сәтсіздіктерді өңдеуді қайта шешу — уақытты босқа өткізу және қатеге бейім. LLMOrchestrator бұл жұмысты бір бөлектелген, қайта қолданылатын модульге біріктіреді, оның мамандандырылған міндеті оны қайта қолдануға мүмкіндік береді. Ал бұл қайта қолдану мүмкіндігі тұтынушыға тән ешқандай мәлімет оған енген сәтте жоғалады.

Мазмұны

Бұл "әртүрлі CLI агенттерінің тобын басқаруды" арнайы әр жобаның инженерлік қиындығынан бір кітапхананы импорттауға айналдырады — пуллинг, схема бұзу, өмірлік циклді басқару және ауыстырылатын маршруттау міндеттері шешілген және сынақтан өткен. Ал "компиляция жасалады" дегенге шектелмей, нақты жүйенің соңына дейінгі анти-блеф сынақтары арқылы сізге параллелдік пен ақау жағдайында да сенімді жұмыс істейтін абстракция беріледі, тек диаграммада дұрыс көрінетін абстракция емес.

  • Гибридті құбыр+файлдық протокол — интерактивті жылдамдық (JSON жолдары stdin/stdout арқылы, оқудың соңғы мерзімі, жауаптың шектелуі) *және* үлкен артефактілер үшін берік файлдық алмасу (кірме жәшік/шығарма жәшік/ортақ), сондықтан сіз ешқашан латенттілікті беріктікке айырбастамайсыз немесе керісінше.
  • Көп провайдерлі пул және ауыстырылатын селекторлар — бір фасад көптеген CLI провайдерлерінің үстінде, айналмалы немесе артықшылық ретімен маршруттау саясат ретінде таңдалады, ал емес, кодқа бекітілген.
  • Әр агент үшін схема бұзушы + фондық денсаулық мониторы — автоматты деградация *және* қалпына келтіру (3 ақау → 60 секунд ашық → жартылай ашық зондтау), сондықтан тұрақсыз агент оқшауланып, содан кейін қолдан жасалған араласусыз тыныштықта қайта қосылады.
  • Бос күтусіз пуллингAcquire sync.Cond блокталады, мүмкіндіктері сәйкес, денсаулы агент босағанша немесе контекст тоқтатылғанша күтеді, сондықтан күту процессорды тұтынбайды.
  • Қатаң ажырату + анти-блефтік интернационализацияNoopTranslator хабарлама идентификаторларын өзгеріссіз қайтарады, сондықтан жоқ аударма ешқашан байқалмай қалмайды, бос орынға айналмайды.
  • Қауіпсіздік әдепкі бойынша — бинарлық жолға рұқсат тізімі шеллдік интерполяцияны болдырмайды, сондықтан командалық инъекцияға мүмкіндік берілмейді, сонымен қатар жолды кесіп өтуден қорғау, 1 МБ жауаптың шектелуі (шығатын ағынды тоқтату үшін), және API кілттерінің логтарда жасырылуы қамтамасыз етілген.
  • Анти-блефтік Challenge арнасы — нақты диск/JSON/парсерлік айналма жолдары бес тілде (en/sr/ja/es/de), сонымен қатар мүмкіндік бұзылғанда нөлден басқа шығу керек мутациялық қақпа (LLMORCH_MUTATE_RUNNER=1 сәтсіз болуы керек → орауыштың шығуы 99) — бұл жүйенің нақты ақауға ұшырауы мүмкін екенін дәлелдейтін сынақ.

  • Агент процесінің сенімді I/O-сы. Шақырылған CLI процесімен сөйлесу керемет қиын; гибридті құбыр+файлдық тасымалдау, хабарлама/парсер келісімі арқылы екі жақ та сым форматы туралы келіседі, және BaseAdapter бүкіл процесс өмірлік циклін, соның ішінде SIGTERM уақытының аяқталуын SIGKILL резервтік әдісімен орталықтандырады.
  • Параллелдік бос күтусіз. Мүмкіндіктері сәйкес агент нақты босағанша Acquire ұйқыға кететін мьютекс + шартты айнымалы AgentPool арқылы шешілді, сонымен қатар көптеген горутиндерден бір уақытта шақыруға қауіпсіз, күйсіз, жанама әсерсіз парсермен бірге.
  • Провайдер ақауының оқшаулануы. Бір нашар провайдер қалғандарын құлатып жібермеу үшін шешілді: әр агент үшін схема бұзушылар жарылыс радиусын шектейді, ал денсаулық мониторы горутині қалпына келтіруді тіпті сұраныстар келмегенде де іске асырады.
  • Дұрыстығын компиляциядан гөрі дәлелдеу. Challenge жүргізушісі арқылы шешілді: нақты жүйені сынақтан өткізетін en/sr/ja/es/de тілдеріндегі ондаған инварианттар, сонымен қатар мүмкіндік бұзылғанда нөлден басқа шығу керек мутациялық қақпа (LLMORCH_MUTATE_RUNNER=1 сәтсіз болуы керек → орауыштың шығуы 99), бұл қақпаның өзі блеф еместігін дәлелдейді.
  • Интернационализацияның үнсіз ақаусыз болуы. Хабарлама идентификаторларын өзгеріссіз қайтаратын NoopTranslator тігісі және әр тұтынушыға аудармашыны енгізу арқылы шешілді, сондықтан аудармадағы ақау әрқашан көрініп тұрады, бүркемеленбейді.

Мазмұны

  • Go (1.25) — бірінші дәрежелі параллелдік пен таза процесс басқаруы үшін таңдалды, бұл тірі агенттік процестерді үйлестіруге дәл осы қажет; модульді, агенттік адаптерлерді, тасымалдаушыларды және парсерді жүзеге асырады.
  • Go стандартты кітапханасы ғана (+ testify, yaml.v3) — тәуелділіктердің аясын минималды етіп, *ешқандай* LLM SDK-ларын қосып алмау үшін саналы түрде таңдалды, сондықтан модуль жеңіл әрі кез келген тұтынушыға кіріктіріле алады, вендорлық жүктемелерді ертіп жүрмейді.
  • Трубалық тасымалдаушы (JSON-lines stdio арқылы) — жылдам интерактивті хабар алмасу үшін таңдалды, оқудың уақыты шектеліп, жауап ұзындығына лимит қойылғандықтан тоқтап қалған немесе басқа бағытқа кеткен агент шақырушыны тоқтата алмайды.
  • Файлдық тасымалдаушы (inbox/outbox/shared) — сессия бойынша берік, үлкен артефактілерді алмасу үшін таңдалды, мұнда труба дұрыс құрал болмайды.
  • sync.Mutex/sync.Cond — агенттік пулді тосқауылсыз, әділ түрде алу үшін бос айналыссыз жүзеге асырылды.
  • Сынық қорғағыш + Денсаулық мониторы — әрбір агентке төзімділік пен белсенді қалпына келтіруді қамтамасыз ету үшін бірге таңдалды, тек ақауды анықтаудан ғана емес.
  • pkg/i18n Аудармашысы — тұтынушыға тән жолдарды ядроға кіргізбейтін бөлек локализациялық тігіс ретінде таңдалды.
  • Тапсырмаларды тексеру құралы (challenges/runner) + Makefile (test -race, fuzz, cover) — бұлжытпайтын, дәлелді тексеру үшін таңдалды, соның ішінде жарыс жағдайларын анықтау және парсерді фуззингтеу арқылы дұрыстық қарсы жағдайларда көрсетіледі, алдынала болжамалданбайды.

  • Жағдайы: бета. Бірнеше Helix/vasic жобаларымен субмодуль ретінде тұтынылатын бөлек қайта пайдаланылатын модуль. Лицензиясы: Apache-2.0; GitHub репозиторийі ашық.
  • Модель метадеректері LLMsVerifier арқылы HelixQA көпірімен келеді; бұл модуль LLMsVerifier/VisionEngine/DocProcessor тікелей импорттамайды. Негізгі қолданбадағы CLAUDE.md (Gin/PostgreSQL/т.б.) сипаттайтын стектер helix_code-ты емес, осы модульді көрсетеді.

Басымдық деңгейі: Helix-басты (LLM-инфрақұрылым кластері — бөлек қайта пайдаланылатын модуль). HelixTrack-нан кейін орналасады.