
Людзі ўвесь час пытаюцца ў мяне, калі яны змогуць скарыстацца OwlMeans. Шчыры адказ дагэтуль гучаў так: калі запусціцца Платформа. Цяпер ёсць лепшы — найважнейшай часткай можна скарыстацца ўжо сёння, на агенце, якому ты ўжо давяраеш.
OwlMeans — гэта пайплайн распрацоўкі на аснове AI. Ты апісваеш, чаго хочаш, у форме гісторый карыстальніка, а каманда спецыялізаваных роляў AI ператварае іх у паўнавартасныя застасункі на TypeScript, якія сапраўды належаць табе. Пад кожным з гэтых застасункаў ляжыць адна бібліятэка — OwlMeans Common — тое, з чаго сабраныя ўсе нашы праекты. На гэтым тыдні яна атрымала пакет create-app. Адна каманда разгортвае цэласны фулстэк-праект, які Claude Code ці GitHub Copilot здольны развіваць ад пачатку да канца, з усімі настаўленнямі для агента ўжо ў камплекце.
Хачу правесці цябе праз тое, што дае гэтая каманда, чаму яна пабудаваная менавіта так і як прайсці шлях ад пустой тэчкі да сапраўднай функцыі на базе даных, не напісаўшы ўласнаручна ніводнага радка абвязкі.
Адна каманда
Абяры свой менеджар пакетаў:
bun create @owlmeans/app my-app
# або
npm create @owlmeans/app@latest my-app
# або
npx @owlmeans/create-app my-app
А потым:
cd my-app
bun run dev # API на :3000, web на :3001
Адкрый вэб-застасунак, перайдзі на экран Сесіі, дадай і прыбяры некалькі элементаў. Гэта працоўны фулстэк-застасунак: тыпізаваны агульны кантракт, бэкэнд і фронтэнд на shadcn UI, што размаўляюць адзін з адным. Ніякай базы, якую трэба падымаць, ніякай аўтэнтыфікацыі, якую трэба наладжваць, ніякага boilerplate, які давялося б капіяваць з туторыяла.
Ты атрымліваеш невялікае манарэпа з трыма воркспейсамі:
common— агульны кантракт: entrypoint’ы маршрутаў, схемы валідацыі і тыпы, якія выкарыстоўваюць абодва бакі.api— бэкэнд на@owlmeans/server-app, што трымае дэмаданыя ў рэсурсе ў памяці.web— фронтэнд на@owlmeans/web-panel, з навігацыяй shadcn, макетам і экранамі.
Гэтая структура — не цацка. Гэта тая самая форма, якую маюць нашы сапраўдныя застасункі, зведзеная да самай сутнасці. Калі ты перарасцеш сховішча ў памяці, ты падмяняеш адзін пакет — ніжэй пакажу гэта падрабязна.
Чаму гэта пабудавана так, каб агенты не губляліся
Вось нязручная праўда пра кадавальных агентаў у 2026 годзе. У іх няма стажу. Кожная сесія пачынаецца з чыстага аркуша, і кожны выклік плаціць поўную цану за ўсё, што твой код не зрабіў відавочным. Лічбы суровыя: на сярэднім па памеры кодзе фаза разведкі — калі агент чытае файлы проста каб зразумець, дзе што ляжыць — здольная з’есці «60–70% усіх уваходных токенаў», а адна задача можа прагнаць праз мадэль сотні тысяч, а то і мільёны сукупных токенаў. Агент разумны. Агент таксама «стартуе з чыстага аркуша, апроч таго, што ты відавочна падаеш у яго акно кантэксту».
Дык пытанне, што сфарміравала OwlMeans Common, было простым: які выгляд мае код, спраектаваны так, каб яго чытаў той, хто паміж сесіямі забывае ўсё?
Адказ аказаўся тым самым, чаго дасведчаныя інжынеры прагнулі заўсёды. Галіна дайшла да гэтага незалежна сёлета — «код мае быць простым, відавочным і нудным… каб AI не мела ніякіх рашэнняў для прыняцця», а агенты «пакутуюць з няяўнымі паводзінамі і хітрымі абстракцыямі». Гэта роўна тое абмежаванне, пад якім мы будавалі:
- Ніякіх складаных схем DI. Сэрвісы — гэта звычайныя фабрычныя функцыі на TypeScript, зарэгістраваныя па радковым аліясе і атрыманыя праз
context.service('alias'). Ніякіх дэкаратараў, ніякіх метаданых, ніякай магіі кантэйнера, якую давялося б раскручваць назад. - Ніякага згенераванага кода. Ніякага кроку OpenAPI-у-кліент, ніякага codegen’у схем, ніякага артэфакта зборкі, які трэба трымаць у згодзе з рэальнасцю. Што чытаеш, тое і працуе.
- Ніякага YAML, ніякага разліву канфігаў. Канфігурацыя — гэта TypeScript. Маршруты і канфіг — гэта звычайныя аб’екты.
- Усё відавочнае і прасочвальнае. Кожны сэрвіс, кожны маршрут, кожны рэсурс можна знайсці, проста пашукаўшы яго. Чалавек здольны прасачыць гэта. Агент таксама — не спальваючы тысячу токенаў на здагадкі.
Апошні пункт — гэта ўся гульня. Відавочны, нудны код таннейшы для працы агента, і менавіта гэта розніца паміж асістэнтам, які ўпэўнена рэдагуе патрэбны файл, і тым, што мітусіцца па саракі.

Чатыры ідэі, што палягчаюць агенту працу
Чатыры праектныя рашэнні робяць большую частку працы. Запамінаць іх неабавязкова — але варта ўбачыць раз, бо менавіта дзякуючы ім запыт да Claude Code кладзецца чыста, а не расползваецца.
Ін’екцыя кантэксту. Кантэкст застасунку трымае твае сэрвісы і рэсурсы і перадаецца зверху ўніз. Сэрвіс ты рэгіструеш як фабрычнае замыканне і дастаеш па аліясе. Нічога не схавана: уся абвязка — гэта звычайны код, які агент прачытвае за адзін праход.
Entrypoint’ы як універсальны фулстэк-пратакол. Гэта наражны камень. Entrypoint — гэта адзінка URL: аліяс, шлях, метад і ўбудаваная схема валідацыі — аб’яўленая адзін раз у common:
entrypoint(
route(session.add, '/:sid/items', { parent: session.base, method: RouteMethod.POST }),
filter(params(SessionParamsSchema), body(AddItemSchema)),
)
Бэкэнд elevate’іць той самы entrypoint апрацоўшчыкам. Фронтэнд elevate’іць яго экранам і выклікае праз ctx.entrypoint(session.add).call({ params, body }). Адно аб’яўленне з’яўляецца адзінай крыніцай праўды для маршруту, валідацыі і тыпаў з абодвух бакоў. Мяняеш яго раз — і ўвесь стэк застаецца сінхронным. Няма асобнай спецыфікацыі API, няма згенераванага кліента, які мог бы разысціся з рэальнасцю. Для агента гэта азначае, што новая функцыя мае відавочную, паўтаральную форму: аб’яві, рэалізуй, выклічы.
Уніфікаваныя рэсурсы. Кожнае сховішча даных — у памяці, MongoDB, Redis, аб’ектнае сховішча — рэалізуе той самы інтэрфейс Resource<T>: get, list, create, update, delete і некалькі роднасных. Код твайго апрацоўшчыка не мяняецца, калі мяняецца сховішча. Падмена дэманстрацыйнага сховішча ў памяці на сапраўдную базу — гэта, амаль літаральна, змена аднаго пакета.
shadcn UI, што належыць табе. Вэб-слой стаіць на shadcn і Tailwind v4, а кампаненты жывуць у тваім дрэве крыніц — не за залежнасцю. Гэта наўмысна. shadcn «не бібліятэка, якую ты ўсталёўваеш, — гэта генератар кода… ён твой», і ён стаў бібліятэкай кампанентаў, па якую цягнецца кожны AI-інструмент для кадавання. Агент чытае твой UI як сапраўдны, прыдатны да рэдагавання React — той самы код, які ён ужо ведае, — замест таго каб калупацца ў непразрыстым пакеце.
Цалкам аснашчаны навыкамі з першага дня
Вось частка, якой я найбольш ганаруся. Праект прыходзіць, ужо ведаючы, як яго развіваць.
Кожны пакет @owlmeans/* пастаўляе ўласныя настаўленні для агента — навыкі Claude Code і інструкцыі GitHub Copilot, узгодненыя па версіі з пакетам. Калі create-app завяршае ставіць каркас, ён разгортвае гэтыя настаўленні ў праекце: навыкі кладуцца ў .claude/skills/, інструкцыі — у .github/instructions/. Ён таксама піша CLAUDE.md і .github/copilot-instructions.md з дырэктывамі памяці, а ў дадатак — стартавыя індэксы памяці, якія абодва агенты чытаюць напачатку кожнай сесіі.
Дык калі ты адкрываеш праект і просіш Claude Code крануць слой рэсурсаў, яму не трэба спачатку высвятляць, як працуюць рэсурсы OwlMeans — навык mongo-resource ужо на месцы. Калі ён дадае маршрут, навык entrypoint ужо на месцы. У CLAUDE.md нават убудавана правіла reuse-code, якое загадвае агенту спачатку пашукаць наяўны пакет @owlmeans/*, перш чым выдумляць уласнае рашэнне. Упершыню адкрыўшы праект, агент спытае ў цябе, для чаго ён, і запіша твой адказ у абодва файлы кантэксту, каб больш ніколі не пытацца.
Нічога з гэтага ты не пісаў. Ты не збіраў ніякай абвязкі. Навыкі, памяць і канвенцыі прыйшлі разам з камандай. Вось што насамрэч азначае на практыцы «самадастатковы, цалкам аснашчаны навыкамі» — і гэта тая самая машынерыя, на якую абапіраецца наша Платформа, пададзеная табе напрамую.

Пакрокава: ад каркаса да сапраўднай функцыі
Зробім гэта прадметна. Скажам, ты хочаш ператварыць дэманстрацыйнае сховішча ў памяці ў сапраўдную, устойлівую функцыю на базе MongoDB. Ты не адкрываеш дакументацыю і не бярэшся збіраць драйверы. Ты ставіш каркас, а потым просіш.
Спачатку пастаў каркас і запусці яго (падыдзе любы менеджар):
bun create @owlmeans/app my-app # або: npm create @owlmeans/app@latest my-app
cd my-app
bun run dev
Потым у Claude Code (ці Copilot) пачні з запыту ў такім духу:
Дадай устойлівую функцыю нататак на базе MongoDB. Выкарыстай
@owlmeans/mongoі@owlmeans/mongo-resourceзамест статычнага рэсурсу ў памяці. Аб’яві entrypoint’ы і схему ўsources/common, зарэгіструй рэсурс і рэалізуй апрацоўшчыкі ўsources/api, а ўsources/webдадай экран. Перавыкарыстоўвай наяўныя пакеты@owlmeans/*— трымайся навыкуreuse-code.
Гэты запыт працуе без вадзення за руку, і варта разумець чаму. Праект ужо нясе навыкі менавіта для гэтага. Агент ведае, што падмена рэсурсу — адзін да аднаго, бо кожны рэсурс рэалізуе той самы інтэрфейс: апрацоўшчык, што рабіў context.getStaticResource(...), становіцца context.resource(...) над калекцыяй Mongo, а выклікі create/list/delete ідэнтычныя:
const notes = context.resource<NotesResource>(RES_NOTES)
await notes.create({ id, text, createdAt })
const { items } = await notes.list({ criteria: { ... } })
Ён ведае, што патэрн entrypoint застаецца тым самым — аб’яві ў common, elevate’ні апрацоўшчыкам у api, elevate’ні экранам у web. І ведае, што твой UI — гэта shadcn, які ён можа рэдагаваць напрамую. Паколькі структура відавочная, а настаўленні едуць разам з рэпазіторыем, агент марнуе токены на пабудову тваёй функцыі, а не на перавывучэнне фрэймворка кожную сесію. Калі пазней ты абнаўляеш пакеты @owlmeans/*, ты нанова запускаеш npx @owlmeans/agent-skills, і настаўленні абнаўляюцца разам з імі.
Чаму гэта пачатак, а не ўся гісторыя
Скажу прама, чым гэта з’яўляецца, а чым не.
create-app — гэта бібліятэка і настаўленні для агента, пададзеныя табе, каб ты сам кіраваў гэтым з Claude Code ці Copilot. Гэта сапраўды магутна, і для многіх праектаў гэтага цалкам дастаткова. Платформа OwlMeans — поўны пайплайн спецыялізаваных роляў AI, што ператварае гісторыі карыстальніка ў гатовае, тваё праграмнае забеспячэнне — гэта слой зверху, пабудаваны вакол гэтай самай бібліятэкі. Менавіта таму яна здольная рабіць тое, што робіць, за дробку кошту: яна не даследуе кожную сесію чужы код і не плаціць падатак на разведку, а аперуе фрэймворкам, спраектаваным ад самых асноў так, каб быць відавочным, паўтаральным і танным для асэнсавання. Наша мэта — каб Платформа будавала гэтыя праекты прыкладна ўдзесяцера меншай колькасцю токенаў, чым няўрымслівы кадавальны агент, што прадзіраецца праз незнаёмае рэпа.
Але чакаць гэтага неабавязкова. Падмурак, на якім стаіць Платформа, можна дастаўляць ужо сёння — адной камандай, на агенце, за якога ты і так ужо плаціш. Запусці create-app, накіруй на яго Claude Code — і ты атрымаеш сапраўдны смак таго, як будуюць па-owlmeans’аўску: тыпізавана, відавочна, цалкам аснашчана навыкамі і назаўжды тваё.
Гэта і ёсць ідэя каманды-вакол-агента, паменшаная настолькі, каб змясціцца ў тваім тэрмінале проста зараз.