Галоўная / Артыкулы

Сумнеў у агентным стэку: вектарныя сховішчы, гіперграфы і праца распрацоўшчыка

Тры выпадкі, калі большы агентны стэк не заўважыў сапраўднага вузкага месца: файлавая памяць агента перамагла вектарнае сховішча, гіперграфавы RAG і што такое праца сеньёра.

Выдавец: REACTAPP.TOP12 хв чытання2733 слоў

Крыніцы: The Case Against Your Own Agent Stack: What Contrarians Get Right This Year

Прагненне да дадзе больш

Чытаючы матэрыялы гада пра агентах AI, адзін момент выдзеляецца па-перад усіма індывідуальнымі тверджэннямі: парады працэй практычна завжды радзяць дадзе ўсё новае. Слой памяці. Граф. Фрэймворк кіравання. Сістэму адзыскання з трымі этапамі пераранжавання. Больш агентоў, якія стэжылі бы за тымі, якія ўжо ёсць. У основе гэтага лежыць тыхая перакананне, што высокая складнасць значыць прагрэс, і што сістэма, якая не робіць ніч такога сложнага, як шэсць месцаў таму, атрымлівае задзейніцу.

Значны частка такіх тэхналогічных стакоў, верагодна, была створана і захавана людзьмі, які чытаюць гэты тэкст. Таму варта зупініцца на невелікай групе аргументаў, які ставяць працоўную тэзу пра працэс: складная тэхналогія, яку вы дадалі, верагодна, не заслуговала на свае месца. Большасць контрапартыянскіх тэхнічных статэй ўсё тое ж сама — гіперболізаваныя творы, настолькі ж упэўненыя, настолькі ж без падтрымкі доказаў. Шэсць гэтых прыкладаў разныя, таму што кожны з іх апіраецца на ў чым-небудзь пераканальныя дадзеныя: будзь то рэзультаты тэстаў, структурныя доказы або простая хроніка таго, як праходзіць рабочы дзень чалавека. Гэты стандарт прыменяецца і да іншых тэхналогічных стакоў, укладзеных у гэтыя рамкі, включаючы вашы сопанскі.

Кожны з гэтых прыкладаў — гэта момент, калі галузь прагледзела большай структуры, хоча рэальная проблема часта была ў чымсь менш зрозумелым.

Першы прыклад: памяць агентаў і сховішчы вектараў

Памэц агента ў вектарным сховішчы зазвычай запрацоўвае за апоўну хвіліну. Хтось зазначае, што агенту трэба зберагаць інфармацыю між сесіямі, і тады вырашаецца: уключыць даны, сховаць іх, а потым выкарыстаць пошук за сэмантычным супаданнем. Усі навучальныя матэрыялы працуюць так, таму гэта стала стандартам, і ніхто не перапрацоўваў гэты падход у супараванні з чым-небудзь простым.

У аднай з публікацыяў гэтага года быў адбыты такі тэст. На тэстацыі LoCoMo базовая сістэма, якая складалася з папкі з файламі у простым тэкстовым фармаце і засобу grep, пасягнула вышэйшых рэзультатаў, чым кілька фінансаваных, спецыяльна створаных продуктав для зберагання памяці. Параванне не было аранжаванае. Сістэмы з уключэнням даных, пошукам за сэмантычным супаданнем і інодзе графамі памяці прасіліся перад сістэмай, якую трэба было стварыць за цэлы вечар.

Працюючы з гэтым падзеем, можна зрозумець, што адказ здаецца ясным. Алгорытм пошуку за сэмантычнасцю проста знаходзіць падобныя элементы; ён не працюе на адгукі. Ён добра справляецца з выкарыстоўванням тэксту, які мае блізкы значэнне да запіту. Але ён паслаба справляецца з задачамі, якія выклікаюць патрэбу ў памяці, напрыклад, з розпазнаванням таго, што факт з трохі больш чым трохі тыдзёў тымчасу быў заменены на факт з вчора, або што два зберажаныя факты суперсучасныя і аднаму з іх трэба даць прыорытэт. Індэкс не мае уявлення пра час або пра неабходнасць корэкцый, таму ён вяртае найбліжэйшыя вектары, а модэлю давае можлівасць самаму з’ясавіць, што два з пяці лідэраў суперсучасныя між сабою.

Другая незастосовнасць стосуецца знайомства, а не спроможнасці. Мадэлі былі натрэнаваны на вельмі вялікія об’ёмы матэрыялу пра работу з файламі: ачынэнне, пошук, рэдагаванне, апісанне папак, выявленне імпорту. Файлы ўзмацаныя з матэрыяламі, якія ўжо ў складзе дадзеных для натрэнавання, і цікл чытання файлоў паўтараючы grep выкарыстоўвае іх безпосерэдна. На адміністрацыю, API для вектарных запытанняў відпаведальнага віробніка — гэта тое, што мадэль павінна научыцца выкарыстоўваць эфкасна ў сваёй сопственной вікну кантэксту, без значнага прадзеўнага адносу. У такім разе аддаецца навык, які ёй вядомы, на выкарыстоўванне навыку, які яе павінна апрануць падчас выканання задання, а таксама дадаецца затрымка, вызваная включэннем і выкарыстоўваннем вектарных даных.

Керавальнік выбору для гэтых двух варыянтаў, паказаныя паўнаравна, выглядае так.

WHEN A FILESYSTEM + GREP BASELINE IS ENOUGH        WHEN YOU ACTUALLY NEED A VECTOR STORE
------------------------------------------------   ------------------------------------------------
Single-agent or small-team memory                  Retrieval across a corpus too large to
                                                    fit or scan in context at all
Facts that change over time and need               Cross-document semantic search where
correction, not just accumulation                  keyword overlap is genuinely weak
Memory the model itself writes,                    Centralized memory shared by many agents
manages, and re-reads in its own loop               that needs access control and auditing
Debuggable state, plain text you can                Multi-hop or relational reasoning across
open, diff, and edit by hand                        thousands of entities where similarity
                                                     search is doing real narrowing work

Як выглядае цыкл на адказе файлам

Фраза «Проста прыменіце файлы» здаецца расплывчатай, пакуль гэта не становіцца кодам. Штая версія не патрабуе ніякіх хоставаных служб.

import os
import subprocess
from datetime import datetime
MEMORY_DIR = "agent_memory"
def write_memory(topic: str, content: str) -> str:
    os.makedirs(MEMORY_DIR, exist_ok=True)
    path = os.path.join(MEMORY_DIR, f"{topic}.md")
    timestamp = datetime.utcnow().isoformat()
    with open(path, "a", encoding="utf-8") as f:
        f.write(f"\n## {timestamp}\n{content}\n")
    return path
def recall(query: str) -> str:
    # ripgrep if you have it, grep -r works fine too
    result = subprocess.run(
        ["rg", "-i", "-C", "2", query, MEMORY_DIR],
        capture_output=True, text=True
    )
    return result.stdout or "no matches"
def list_topics() -> list[str]:
    if not os.path.isdir(MEMORY_DIR):
        return []
    return [f[:-3] for f in os.listdir(MEMORY_DIR) if f.endswith(".md")]

Даюце модэлю гэтыя тры функцыі як інструменты і параджаеце яйці рашыць, калі зберагаць, калі шукаць і калі завантажваць цэлы файл з короткай тэмай. Рэзультат — памяц без дапамогі спецыяльных алгорытмав, без неабяжлівай базы дадзеных, і з станамі, якія можна адкрыць у будзь-ям рэдагары, калі ўсё пайшло не так. Калі такі падход нарэшце стане неэфектывным, прычына будзе конкрэтная — напрыклад, корпус дадзеных занадта вялікі, ўскладнюючы шырокі пошук, або запыт, які не можа быць адпаведзены за дапамогою пошуку па ключоўых словах. Гэта ўзгоджваецца з вікорыстоўваннем векторных баз дадзеных, якія ў багато разоў лепшыя за простае копіювання інструкцый.

Нічога з гэтага не значыць, што векторныя базы дадзеных не павінны існаваць. Гэта значыць, што не трэба яе вжываць раней, чым не перапрацаваць базовы варыант. Спачатку спробуйце вікорыстоўваць полны кантэкст, файловую сістэму і алгорытм grep, і прыйміце платны продукт з памяцю толькі тады, калі ён значна перавышыць базовы варыант, чым пакрыць свою вартасць і втрату можлівасця дэбагавання. Большасці „агентных“ памяцей ніколі не трэба падніматыся да такога рэвэлю.

Другі варыянт: гіперграфы ў RAG

Мінулага гада стандартам была векторная база дадзеных. Цяго гада — графавая RAG, а гіперграфы выкорыстоўваюцца тады, калі каманда сачувае, што звычны граф знанняў не можа адобразыць достатню колькасць інформацыі. Гэты падход здаецца разумным. Звычны рэглі ўз’яздзі два вузлы, але багато фактамі ўчаствуюць больш за два элементы. Возьмем прыклад затверджэння віток: адна особа падпісвае справаздача колегі, які практыкуецца з квартальнага бюджэту на маркетынг, ад імені фінансовага аддзела. У аднам факце ўчаствуюць пяць учаснікаў. Калі спробаваць адобразыць гэта ў пары, то альбо гэты факт перастае быць атомным запісам, альбо ён роздзеляецца на калькі бінарных рэглаў, якія запіты павінны знову з’едыніць. Гіперрэглі можа з’яўляцца між будзь-колькімі вузламі адразу, таму ён выглядае як найболей адпаведны спосаб для зберагчэння такіх фактов, і каманды ствараюць RAG на адваротах гіперграфаў, спадзяючыся, што гэта падыграе павышэнню точнасці пошуку.

Іншая артыкул практычна пераканалілася гэтымя прыяваннямі, працаваючы з фактычным кодам дапрацоўкі Hypergraph RAG у замест на ўзагляд, і знайшла ўсё гэта майжэ камічным. HyperGraphRAG, створаны для падтрымкі натыўных гіперкраёў, зберагае усё ў звычнай базе дадзенаў графа з бінарнымі краёмі. Яе самія автары паказалі, што ператварэнне кожнага гіперкраю на калькі бінарных краёў навакол узгаданага вузла для падзеі не прыносіць ніякіх втырок, таму кожную форму можна точна перабудаваць з іншай.

Гэты даклэг перадае весь аргумент. Заўважкім, што натыўны гіперканец і рэфіціяваны кластэр бінарных канэцоў маюць абоўсоўна тую ж структуру інцыдэнцій, і адны з іх можа без жадных зусілей стварыць другі. У такім случае выбір між імі не мае наследкаў для мадэлявання і сводзіцца да выбору фармата зберагача. Адны з каментатараў стысла паўтарыў матэматыку: гэтыя два варыянты — то ж структура інцыдэнцій, а шырыню гіпердрэва змініць на сталяю велічыну можна толькі тады, калі колькасць узлоў ў межах. Шырыню гіпердрэва і ўсё рашае, насколькі дорогі будзе запіт. Колькасць пераходаў не мае значэння, як і колькасць учаснікаў, якія знаходзяцца ў адным канцы. Пераканвертуйце сваю рэпрэзентацыю, змяніце гэты показнік на сталяю велічыну, прыменяйце межу для колькасці учаснікаў у кожным факце (пяць чалавек, якія затверджуюць выдатак, а не пяцьсот), і складнасць запіта застанецца тая ж.

Чаму гэта падводзіць людзей

Гэта лёгкая памятная парадокс. Колькасць перахоў здаецца прыродной, адколькі большая колькасць вузлаў межы запытаннем і адпаведзеннем здаецца абавязкова складнейшым запытаннем. Шырыню гіпердрэва значна меней легка зрозумець: яна належыць да тэорыі задовольнення абмежэнняў і складнасці запытанняў і разлічаецца ад колькасці перахоў таму, што гэта стае зрозумела толькі пасля дакладнага аналізу. Можна дадаць структуру, якая зменшыць колькасць перахоў для аднаго прыкладнага запытання, не вплываючы, або нават слегка пагоршаючы, характэрыстыкі класу складнасці, да якога належыць запытанне. Прыклады, практыкуемыя ў статыце, можуць выглядаць вражаюча, але ўсё равна не розкрываюць ніч пра меру, якая керуе загальным случаем.

Перш чым выбраць звычную граф, граф у вялікай меры аб’ектуваны чы адпрацоўваны хыперграф, такія порэвананні дапамагаюць у прыняцці рашэння.

REPRESENTATION          WHAT IT ADDS                     WHAT IT ACTUALLY CHANGES
---------------------   -------------------------------  --------------------------------
Plain binary graph       Simplest to build and query      Baseline; loses atomicity of
                         with standard graph tooling      multi-participant facts
Reified binary graph     Recovers atomicity via an        Same incidence structure as a
(event node + roles)     explicit "event" node             hyperedge; hypertree width
                                                            shifts by a constant only
Native hypergraph        Hyperedges as first-class         No reduction in query
store                    objects, arguably cleaner          complexity class over a
                         to write against                   reified graph; new storage
                                                             engine to run and maintain

Гэта не робіць структуру графа безпрагматычной для RAG. Багатоэтапны пошук за дапамою адносінаў даскледжвае перавагі графаў працоўнае пахідным пошукам у вектарнай форме, і ніхто не спрачывае інако. Аргументы стосуюцца дадатковага пераходу з графа ў гіперграф. Калі доказы заменяюць аргументы, такі пераход дае болей апрантныя мадэлі дадзеных, дагаўляе новы тып інфраструктуры для ўпрацоўкі і не паўтараееся ў аспектах, якія вялікія запыты будуць шырокімі чы роўнымі. Калі пошук слабкі, адпаведныя заходы, падкрэпленыя доказамі, зазвычай — гэта крашчая структурацыя графа чы болей розумная стратэгія пошуку ў вялікім графе, а не якісь экзотычныя тыпы рэгуляў.

Трэці случай: што на самай працы являе сабою працу старшагінжынера

Оба пакананыя случаю прыменяюцца да архітэктуры пошуку. Апошнія ж разлічаецца, таму што тут не выбір інструмента, а пытанне пра тое, з чаго складаецца праца старшагінжынера.

Тэхнічны керавань, які керуе командай з пяці чалавек у компаніі, якая налічвае больш чым тысячу працавальнікаў, напісаў, што штучны інтэлект не можа выконваць 95% яго працы. Ён пачынае з таго, што здаецца як паставка: напісанне коду займае найменшую частку яго часу, і то з вялікай перапаўною. Яго команда працуе за прынцыпом „ты стварыў, ты і керуеш“, таму адпаведальнасць за працаванне ўсіх сістэм несу яго сэрвісні інжынеры, а не окрэмая група аператыўнага аддзелу, якая могла б ставіцца да працы як да чужой проблемы. Ёго ранак пачынаецца о 8:30 з перагляду запрошэнняў да змін. Код, які надходзіць, большая частка якога напісана агентамі штучнага інтэлекту, явна ў лепшым стане, чым той, які ён пераглядаў два гады раней. Ён не ставіць пад сумнев, што штучны інтэлект можа пісаць хорашы код. Ён цэлкам гэта прыймае, а потым зазначае, як мало гэта зміняе працу, яку ён на самай працоўнай аддзеле выкананае.

Эта тэза ставіць пад сумнев распалоўкуючую думку, паўзункуючую ў розумаванні стакаў агентаў, адносна таго, што самэ можлівасці вялі калічыню аўтаматызацыі. Яктарыя ўважаюць, што калі мадэль стварае правільны код, то для напісання коду больш не патрэбны людзі, а аўтаматызацыя задачы відпавядае той частцы працы, якая прыходзіцца на стварэнне коду. Тэхнічны керавальнік кажа, што такая тэорыя ніколі не была правдзівай, і што ШЫ проста робіць недагоды віднымі. Яго работа не складалася пераважна з напісання коду. Яна больш заўсёды была прыкладнай: выбіранне таго, што трэба стварыць, і ў якой спраўе, пераговоры па меркамах з людзьмі, чыя прыорытэты суперсечаюцца, перагляд і падтрымка рашэнняў, якія прымалі іншыя, кераванне моладзёй інжынераў, а таксама медыяцыя межы запатранняў заінтэрэсаваных сторон і таго, што сістэма можа безпечна падтрымаць. Ніякая з гэтых задач не ўжо ўскладнена напісаннем коду.

Гэта можа быць найболей занедбаная тэма ў дыялогах агентаў за год, больш за будзь-якіі іншы показнік, калі бачыць, што гэта пояснюе, чаму значна лепшыя рэйтынгі практыкавання коду і значна простэйшая праца не супакоўваюцца адно з іншым для багато вышэйшых інжынераў, нават для актыўных ўседзённых корыстувачаў. Тое, што рэйтынгі SWE-bench зрастаюць з одназначных цыфр да сямдзяцяго паветра за калькі лет, — гэта рэальны і значны крок. Але гэта не значыць, што працы становіцца на 70% менш, калі ўжо сама стварэння коду ніколі не станавіла 70% працы, тым болей калі на адповідную паслявушчу належыць таксама варушэння ў рэжыме нарадчыка, планаванне развіцця і прыемка патрэсаў.

Адзін застэрэжны момент: трэці пункт пры застосоўцы да іншых настройкаў не праіснавае так чыста, як першыя два. Тэзы пра базы дадзеных вектарных дадзеных і гіперграфах можна пераканацца, супорачыць іх з крэдытамі або доказамі. Разлік межы коордынацыі і напісання коду ў тыдзені старшагінжынера зменяецца залежна ад розмеру компаніі, зрэласці каманды, таго, чы ўскладнення ўскладнююць работу чы ёсць неабходным элементам, а таксама ад ступеня кваліфікаціі самага спецыяліста. Каманда з пяці чалавек у компаніі з тысячай працавальнікаў, якая прыменяе політ «создай і запрацавай», — гэта аднаго роду праца, і яна не апісвае ўсіх інжынерскіх паслявоў. Напрамак корэкцыі яшчэ ўзагалі выглядае правым. Магчымасці агента абмежваюць тое, насколькі частка напісання коду можа быць автаматызаваная, і яны практычна нічога не гавораць пра частку коордынацыі, якая ніколі не залежала ад швальнасці набірання тэксту чы якосці коду.

Аднаковы шаблон

Як толькі трыя кейсы будуць разам, урок не будзе спецыяльна прысвечаны базам дадзэнай вектароў, гіперграфам чы рэзультатам работы ШЫ. Ён будзе прысвечаны розніцы межы там, дзе аддзел сачываў, што ёсць вузькія месцы, і там, дзе яны на самай працоўвалі.

CASE                WHERE COMPLEXITY WAS ADDED         WHERE THE REAL BOTTLENECK WAS
------------------  ----------------------------------  --------------------------------
Agent memory         Vector embeddings, similarity       Whether the model can use a
                     search, sometimes a graph layer      retrieval method it already
                     on top of that                        has deep fluency with
RAG structure         Native hyperedges, a new             The complexity class governing
                      storage engine, more                  query cost, which the fancier
                      elaborate graph modeling               structure barely touches
"How much of the      An assumption that model             Whether the job was ever
job gets automated"   capability alone predicts             mostly about the thing the
                       the automatable fraction              model is good at

Няхай існуюць усе гэтыя складныя аптэкты — гэта не ўсё ж такі абэранце. У вектарных базах дадзеных ёсць рэальныя прызначэнні, гіперграфы можаць стаць каліткай там, дзе ніхто ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўсё ўс

Спісак пераконтролу пры перадаўжэнні

Короткі спіс, які варта пераглянуць для кожнага стака пры дадзенні новага слоя:

1. Have I benchmarked the boring baseline, not just assumed it loses?
   (full-context, grep, a plain graph, a human doing the coordination)
2. Does the new structure change the metric that actually governs cost
   or quality, or does it just look more sophisticated on a diagram?
3. Am I reaching for this because a benchmark or proof told me to,
   or because it's what the tutorials and the funded products default to?
4. If I strip this layer back out, what specifically breaks?
   If I can't name it precisely, I probably don't need the layer yet.
5. Am I solving the bottleneck I actually have, or the bottleneck
   that's most interesting to build a sophisticated solution for?

Нічыя з гэтых пунктов не спактуюць за зменшэнне колькасці інжынерных зусіль. Яны спактуюць за тое, каб інжынерныя зусілі былі спрамаваны на выявленне месца узькага месца раней, чым будуецца ствараць складны прылад, які прыпускае, што адказ вядомы. Шырокія групы дадзеных не былі выбраны проста так. Яны адрабатавалі нелёгкія пераконтрольванні, і рэзультаты гэтых пераконтроў не паспактавалі з стандартнымі наследжэннямі. Гэта значна вышэйшы стандарт, чым проста яркая думка з гучным загаловкам, і самэў гэтага стандарта павінен адпавядаць кожны стак.