Sakhanda Wire
NVDA $214.13 -1.43% MSFT $529.05 -1.93% GOOGL $340.59 -2.47% META $709.33 -3.72% AMZN $250.00 -1.87%
← Към новините

Google пусна с отворен код Harness2, рамка за рекурсивно управление на агенти

Google Cloud AI Research пусна с отворен код Harness². Това е рекурсивна рамка за управление на агенти, която подобрява кода и файловете около замразен модел. За разработчиците посланието е просто. Агентът ви може да стане по-добър и без по-добър модел.

Накратко

  • Размер: Рамка, а не модел. 0 обучени параметъра; 8 редактируеми компонента на рамката. Версия 0.1.0.
  • Работи на: Linux с Python 3.12 или 3.13 и uv. Изпълненията на модела извикват модели чрез Vertex AI. Изискване за GPU: Не е обявено.
  • Производителност: 1 стъпка на усъвършенстване подобри всички 4 конфигурации на модела и рамката и в трите бенчмарка.
  • Най-добър резултат: GLM-5 под OpenCode се повиши от 64.2 до 75.7 на WorkBuddy-Bench (+11.5 точки).
  • Най-слаб резултат: GLM-5 под Codex спечели само 1.2 точки на JobBench (от 23.6 до 24.8).

Какво представлява Harness²?

Harness² е plug-and-play рамка от Google Research, която усъвършенства рамката на агента по време на внедряване. Рамката представлява всичко около модела: подсказки, инструменти, памет, умения и оркестрация. Управлението на рамката е процесът на оптимизиране на тази система. Теглата на модела никога не се променят.

Целевата среда е отвореният свят. Задачите са неизвестни предварително и няма верификатор, който да казва дали даден отговор е правилен. Изследователският екип твърди, че повечето методи за самоусъвършенстване предполагат наличието на етикети или тестови случаи. Harness² е създадена да работи без тях.

Кои са 8-те компонента на рамката?

Harness² предоставя 8 редактируеми компонента, всеки монтиран като файл:

  1. Системна подсказка
  2. Ограничения
  3. Памет
  4. Насоки за инструментите
  5. Подагенти
  6. Умения
  7. Скриптове
  8. Плъгини (междинен софтуер)

Те обхващат изграждането на контекста, интерфейса на инструментите, делегирането и поведението в рамките на цикъла с инструменти. Структурата разширява разделението на 7 файла от по-ранната работа Agentic Harness Engineering с 1 компонент.

Как работи рекурсивното управление на агенти?

Рамката изпълнява две свързани нива на рекурсия:

  • Рекурсията на ниво задача използва контрастивна стъпка „Предложи, Провери, Композирай“. Първо агентът изпълнява задачата веднъж с базовата рамка. След това редактор предлага 2 кандидата. Инвариантният кандидат е насочен към общи грешки на агентите, като планиране или използване на инструменти. Домейнният кандидат е насочен към знанията и процедурите за текущия домейн. И двата кандидата се изпълняват върху една и съща задача. Композиторът сравнява траекториите им с референтната и запазва само редакциите, подкрепени от наблюдаваното поведение.
  • Рекурсията на ниво рамка се случва след всяка задача. Рефлекторът съхранява приетата рамка заедно с файл EXPERIENCE.md с натрупаните поуки. Тази библиотека насочва бъдещите предложения. Всяка нова задача все пак започва от базовата рамка.

Бюджетът k мащабира търсенето. Паралелният режим проверява k инвариантни и k домейнни кандидати, след което създава k композиции. Последователният режим свързва k стъпки на усъвършенстване.

Play</button><button class="btn" id="h2-step">Стъпка →</button><button class="btn" id="h2-reset">↺ Нулиране</button><div class="prog"><i id="h2-prog"></i></div></div> <div class="fn">При k=1: 1 референция + 2 проверки + 1 финално изпълнение за задача. Паралелният режим проверява k инвариантни и k домейнни кандидати; последователният режим свързва k стъпки.</div> </div> <div class="pn" id="h2-p2"> <div class="cg" id="h2-cg"></div> <div class="note" id="h2-cnote" style="border-left-color:#4285F4">Кликнете върху компонент, за да видите ролята му по време на изпълнение.</div> <div class="lg"><span style="--c:#4285F4">Изграждане на контекста</span><span style="--c:#EA4335">Интерфейс на инструментите</span><span style="--c:#FBBC04">Оркестрация</span><span style="--c:#34A853">Междинен софтуер</span></div> </div> <div class="pn" id="h2-p3"> <div class="sel" id="h2-sel"></div> <div class="bm" id="h2-bm"></div> <div class="fn">Една стъпка на подобрение (k=1). Средни стойности от 3 изпълнения. LAB = частичен процент на преминаване (%). Източник: статията за Harness<sup>2</sup>, таблици 1 и 2.</div> </div> <div class="pn" id="h2-p4"> <div class="sel" id="h2-sel2"></div> <div class="bx rk" id="h2-rk"></div> <div class="fn">Изпълнител Gemini 3.5 Flash. Оста на графиката започва от 50. Meta-Harness е оптимизирана офлайн върху отделни обучаващи задачи. Резултати, измерени в статията за Harness<sup>2</sup>.</div> </div> <div class="ft"><span>Източници: arXiv 2610.14224 · github.com/google-research/harness2</span><a href="https://www.marktechpost.com" target="_blank" rel="noopener">© Marktechpost</a></div> <script> (function(){ var R=document.getElementById('mtp-h2x'); function $(s){return R.querySelector(s)}function $$(s){return R.querySelectorAll(s)} function sz(){try{parent.postMessage({mtpH2xHeight:R.offsetHeight+40},'*')}catch(e){}} $$('.tab').forEach(function(t){t.onclick=function(){$$('.tab').forEach(function(x){x.classList.remove('on')});$$('.pn').forEach(function(x){x.classList.remove('on')});t.classList.add('on');$('#h2-'+t.dataset.t).classList.add('on');if(t.dataset.t==='p3')drawB();if(t.dataset.t==='p4')drawR();setTimeout(sz,50)}}); /* pipeline */ var nd=$$('.nd'),i=-1,tm=null; var notes=["<b>Референция.</b> Замразеният модел изпълнява задачата с базовата рамка H0. Това показва как се държи рамката, а не дали отговорът е правилен.", "<b>Предложение.</b> Редактор съставя 2 кандидата: <b>инвариантен</b> кандидат за общи грешки на агента (планиране, използване на инструменти) и <b>домейнeн</b> кандидат за знанията и процедурите, свързани със задачата.", "<b>Проверка.</b> Всеки кандидат се изпълнява върху една и съща задача. Сравняването на траекториите с референцията дава поведенчески контраст. Не са нужни етикети от истината.", "<b>Композиция.</b> Композиторът прочита всички доказателства и разлики. Той може да ги обедини, преработи, приеме 1 кандидат или да запази текущата рамка.", "<b>Изпълнение.</b> Композираната рамка се изпълнява и връща крайния резултат.", "<b>Рефлексия.</b> Преглежда се целият запис на подобрението. Поуките се запазват само ако контрастите при изпълнението ги подкрепят.", "<b>Актуализиране.</b> Приетата рамка и файлът <code>EXPERIENCE.md</code> с поуките се добавят към библиотеката за подобрения.", "<b>Следваща задача.</b> Изпълнителят се връща към H0, но библиотеката вече насочва предложенията и композицията. Премахването ѝ понижи WorkBuddy от 77.5 до 74.4."]; function show(k){nd.forEach(function(n,j){n.classList.toggle('lit',j<=k)});$('#h2-note').innerHTML=k<0?"Натиснете <b>Пускане</b> или <b>Стъпка</b>, за да преминете през 1 стъпка на подобрение на Harness<sup>2</sup>.":notes[k];$('#h2-prog').style.width=((k+1)/nd.length*100)+'%';sz()} function step(){i=(i+1)%nd.length;show(i)} $('#h2-step').onclick=function(){stop();step()}; $('#h2-reset').onclick=function(){stop();i=-1;show(-1)}; function stop(){if(tm){clearInterval(tm);tm=null;$('#h2-play').textContent=' Пускане'}} $('#h2-play').onclick=function(){if(tm){stop();return}if(i>=nd.length-1)i=-1;step();tm=setInterval(function(){if(i>=nd.length-1){stop();return}step()},1900);this.textContent='❚❚ Пауза'}; /* components */ var C=[["Системна подсказка","Изграждане на контекста","#4285F4","Персона и процедура от най-високо ниво, следвани при всяко извикване."], ["Ограничения","Изграждане на контекста","#4285F4","Правила на процеса, например проверка на резултатите преди приключване."], ["Памет","Изграждане на контекста","#4285F4","Постоянен контекст, предоставен на агента."], ["Насоки за инструментите","Интерфейс на инструментите","#EA4335","Как да се използват конкретни инструменти и форматите да се обработват точно."], ["Подагенти","Оркестрация","#FBBC04","Делегирани роли със собствени инструкции."], ["Умения","Изграждане на контекста","#4285F4","Повторно използваеми домейнни процедури, например умение за съгласуване."], ["Скриптове","Интерфейс на инструментите","#EA4335","Изпълними помощни средства, например скрипт, който отваря отново и проверява файлове."], ["Плъгини","Контрол на междинния софтуер","#34A853","Междинен софтуер, който оформя поведението в рамките на цикъла с инструменти."]]; var cg=$('#h2-cg');C.forEach(function(c,k){var b=document.createElement('button');b.className='cp';b.style.setProperty('--c',c[2]);b.innerHTML='<em>C'+(k+1)+' · '+c[1]+'</em><b>'+c[0]+'</b>';b.onclick=function(){$$('.cp').forEach(function(x){x.classList.remove('on')});b.classList.add('on');var n=$('#h2-cnote');n.style.borderLeftColor=c[2];n.innerHTML='<b>'+c[0]+'</b> ('+c[1].toLowerCase()+'): '+c[3]+' Всеки компонент е файл, който редакторът може да пренапише.';sz()};cg.appendChild(b)}); /* benchmarks */ var D={"Gemini 3.5 Flash · OpenCode":[[72.4,77.5],[31.5,36.0],[79.9,81.9]],"Gemini 3.5 Flash · Codex":[[74.5,77.5],[33.9,35.3],[71.6,75.6]],"GLM-5 · OpenCode":[[64.2,75.7],[20.6,24.2],[59.6,71.4]],"GLM-5 · Codex":[[64.4,75.3],[23.6,24.8],[58.1,65.9]]}; var BN=["WorkBuddy-Bench (средно)","JobBench","LAB Частичен (%)"],cur="GLM-5 · OpenCode"; var sel=$('#h2-sel');Object.keys(D).forEach(function(k){var b=document.createElement('button');b.className='chip'+(k===cur?' on':'');b.textContent=k;b.onclick=function(){cur=k;$$('#h2-sel .chip').forEach(function(x){x.classList.remove('on')});b.classList.add('on');drawB()};sel.appendChild(b)}); function drawB(){var bm=$('#h2-bm');bm.innerHTML='';D[cur].forEach(function(v,k){var d=(v[1]-v[0]).toFixed(1);var x=document.createElement('div');x.className='bx';x.innerHTML='<h4>'+BN[k]+'</h4><div class="row"><span>База</span><div class="tr"><i style="background:#5f6368" data-w="'+v[0]+'"></i></div><b>'+v[0].toFixed(1)+'</b></div><div class="row"><span>Harness²</span><div class="tr"><i style="background:linear-gradient(90deg,#4285F4,#34A853)" data-w="'+v[1]+'"></i></div><b>'+v[1].toFixed(1)+'</b></div><div class="dl">+'+d+(k===2?' п.п.':' т.')+'</div>';bm.appendChild(x)}); requestAnimationFrame(function(){setTimeout(function(){$$('#h2-bm .tr i').forEach(function(e){e.style.width=e.dataset.w+'%'})},30)});sz()} /* baselines */ var RK={"WorkBuddy avg · OpenCode":[["Базова рамка",72.4],["ReasoningBank",73.4],["Harness Scaling",75.3],["Meta-Harness",76.4],["Harness² k=1",77.5],["Harness² k=5",80.8]], "JobBench · OpenCode":[["Базова рамка",31.5],["ReasoningBank",30.8],["Harness Scaling",32.9],["Meta-Harness",35.8],["Harness² k=1",36.0]], "LAB Partial · Codex":[["Базова рамка",71.6],["ReasoningBank",74.8],["Harness Scaling",67.9],["Meta-Harness",76.5],["Harness² k=1",75.6]]}; var rc="WorkBuddy avg · OpenCode",s2=$('#h2-sel2'); Object.keys(RK).forEach(function(k){var b=document.createElement('button');b.className='chip'+(k===rc?' on':'');b.textContent=k;b.onclick=function(){rc=k;$$('#h2-sel2 .chip').forEach(function(x){x.classList.remove('on')});b.classList.add('on');drawR()};s2.appendChild(b)}); function drawR(){var rk=$('#h2-rk');rk.innerHTML='';var mx=Math.max.apply(null,RK[rc].map(function(r){return r[1]})); RK[rc].forEach(function(r){var h=r[0].indexOf('Harness²')===0;var c=h?'linear-gradient(90deg,#4285F4,#34A853)':(r[1]===mx?'#FBBC04':'#5f6368');var x=document.createElement('div');x.className='row';x.innerHTML='<span'+(h?' style="color:#e8eaed;font-weight:700"':'')+'>'+r[0]+'</span><div class="tr"><i style="background:'+c+'" data-w="'+((r[1]-50)/40*100)+'"></i></div><b>'+r[1].toFixed(1)+'</b>';rk.appendChild(x)}); requestAnimationFrame(function(){setTimeout(function(){$$('#h2-rk .tr i').forEach(function(e){e.style.width=e.dataset.w+'%'})},30)});sz()} show(-1);window.addEventListener('load',sz);window.addEventListener('resize',sz);setTimeout(sz,300); })(); </script> </div> </body></html>">

Как се представя Harness² на бенчмарковете?

Изследователският екип тества 3 професионални бенчмарка: WorkBuddy-Bench, JobBench и LAB на Harvey. Изпълнителите бяха Gemini 3.5 Flash и GLM-5 под OpenCode и Codex. Редакторът по подразбиране беше Claude Opus 4.8. Резултатите са средни стойности от 3 изпълнения.

Конфигурация (една стъпка, k=1)WorkBuddy AvgJobBenchLAB Partial
Gemini 3.5 Flash, OpenCode72.4 → 77.531.5 → 36.079.9 → 81.9
Gemini 3.5 Flash, Codex74.5 → 77.533.9 → 35.371.6 → 75.6
GLM-5, OpenCode64.2 → 75.720.6 → 24.259.6 → 71.4
GLM-5, Codex64.4 → 75.323.6 → 24.858.1 → 65.9

Източник: статията за Harness², таблици 1 и 2.

По-слабите изпълнители постигнаха по-големи подобрения. След 1 стъпка GLM-5 надмина базовия Gemini 3.5 Flash на WorkBuddy-Bench. Паралелната рекурсия при k=5 повиши резултата на Gemini под OpenCode до 80.8 на WorkBuddy. На WorkBuddy-Bench 3 от 4 конфигурации също използваха по-малко стъпки за задача. Gemini под OpenCode спадна от 25.4 до 21.9.

Как се сравнява с други методи за управление на рамки?

ФункцияHarness²Meta-HarnessReasoningBankHarness Scaling
РазработчициGoogle Cloud AI Research, NorthwesternStanford IRIS Lab и съавториGoogle Research и съавториWang et al.
Какво се променяПълна рамка с 8 компонента, за всяка задачаКодът на рамката, търсен офлайнИзвлечена памет; рамката е фиксиранаРамката, преработена за всеки екземпляр
Изисква обучаващо разделениеНеДаНеНе
Учи между задачитеДа (библиотека + поуки)Внедрява 1 най-добра рамкаДа (памет)Не
Лиценз на кодаApache-2.0MITНе е обявенНе е обявен
WorkBuddy Avg, Gemini/OpenCode*77.5 (80.8 при k=5)76.473.475.3
JobBench, Gemini/OpenCode*36.035.830.832.9
LAB Partial, Gemini/Codex*75.676.574.867.9

*Резултати, измерени в статията за Harness²; другите методи не са докладвали самостоятелно тези бенчмаркове.

Как се инсталира и стартира Harness²?

README е предназначен за Linux, Python 3.12 и uv. Локална демонстрация изпълнява и двата рекурсивни режима без идентификационни данни за модела:

Копиране на кодаКопираноИзползване на друг браузър
uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install -e '.[render]'
harness2-demo --output runs/demo --k 2

Изпълненията с модел изискват Node.js 20+, Google Cloud CLI и проект във Vertex AI. LAB изисква Pandoc и Poppler. WorkBuddy-Bench изисква Docker. По подразбиране изпълнителите са OpenCode, или Codex с --substrate cx.

Основни изводи

  • Harness² пренаписва рамката на агента по време на тестване; теглата остават замразени.
  • 1 стъпка повиши GLM-5 с 11.5 точки на WorkBuddy-Bench.
  • „Предложи, Провери, Композирай“ заменя етикетите от истината с поведенчески контрасти.
  • Библиотека с поуки пренася подобренията към бъдещи задачи.
  • Очаквайте допълнителни изпълнения за всяка задача и го тествайте в собствена пясъчника.

Вижте статията, GitHub хранилището, статията и страницата на проекта. Всички заслуги са за изследователя на този проект. Също така, не се колебайте да ни последвате в Twitter и не забравяйте да се присъедините към нашия 150k+ ML SubReddit и да се абонирате за нашия бюлетин. Чакайте! В Telegram ли сте? Вече можете да се присъедините към нас и в Telegram.

Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.

Първоначално публикувано от MarkTechPost на

Прочетете оригинала в MarkTechPost ↗

Текстът и изображенията са собственост на MarkTechPost и са възпроизведени тук с посочване на авторството и връзка към оригиналната публикация.

← Към новините

Още новини

Всички последни новини