Не као метафора. Kortix пројекат је git repo, а тај repo је компанија: њени агенти, вештине које је изградила, све што је научила и дефиниција машина на којима све то ради. Версионирано. Погодно за diff. У потпуном власништву.
skill: reconcile-invoices — обрада делимичних повраћаја
skills/reconcile-invoices/SKILL.md
9f4c2b7e → main · отворено од стране invoice-clerk
kortix.yaml је Kortix слој: машина на којој се покрећу сесије, connector-и, trigger-и, имена тајни и оно што сваки агент сме да додирне. OpenCode конфигурација је runtime у ком агенти размишљају. Све после та два фајла су фајлови у repo-у.
# Верзија шеме 2. Runtime је OpenCode.kortix_version: 2runtime: opencode project: name: Northwind # Агент који одговара када ниједан није наведен.default_agent: kortix # Где се налази runtime конфигурација. После овога: фајлови.opencode: config_dir: harnesses/opencode # Само ИМЕНА тајни. Вредности су шифроване на# платформи и убацују се при покретању машине.env: required: [STRIPE_API_KEY] optional: [LINEAR_API_KEY] # Машина на којој се покреће сесија.sandbox: default: python templates:- slug: python image: python:3.12-slim cpu: 2 memory: 4 # Приступ спољном свету. Дефиниција је у# git-у. Кредентијали нису.connectors:- slug: gmail-read provider: pipedream app: gmail authorization_strategy: user # Управљање: шта сваки агент сме да додирне — никада шта# каже. Изостављено одобрење значи none.agents: kortix: connectors: all secrets: all skills: all kortix_permissions: all invoice-clerk: sandbox: python connectors: [gmail-read] secrets: [STRIPE_API_KEY] skills: [reconcile-invoices] kortix_permissions: [project.cr.open]Kortix слој — један фајл у корену repo-а.
{ // Документација: https://opencode.ai/docs/ "$schema": "https://opencode.ai/config.json", "theme": "system", "default_agent": "kortix", // Сесија је већ изолована машина на // привремена грана, па агент почиње потпуно отворен. // Овде ограничите приступ по алату када желите строжију // политику. "permission": "allow"}Runtime — модели, алати, дозволе.
---description: Усклађује фактуре са уплатама.mode: primarypermission: bash: ask--- Ви сте службеник за фактуре компаније Northwind. Упарите сваку уплату са фактуром по броју, никадапо износу. Када не можете, отворите захтев за изменуи тачно наведите шта нисте могли да ускладите.Агент — стандардна OpenCode датотека агента. Њен садржај је овде.
Која машина, који конектори, које тајне, које вештине, које CLI радње. Само управљање. Ако изоставите доделу, она се тумачи као да је нема — агент добија оно што сте му дали и ништа више.
Упите, моделе, алате, додатке и дозволе. Агент је стандардни OpenCode агент — markdown датотека као основа, а затим алати, додаци и конфигурација модела који се налазе поред ње у истом репозиторијуму. Прочитајте директоријум и тачно ћете знати шта ће агент радити.
Манифест наводи тајне и додељује их сваком агенту. Вредности су шифроване на платформи, убацују се у машину током рада и никада се не уписују у репозиторијум или записе.
Агенти, вештине и меморија нису редови у бази података коју не можете да видите. То су markdown датотеке поред вашег кода, клониране у сваку сесију, читљиве људима и изменљиве од стране агента.
Не постоји скривени слој о ком треба питати. Свако уверење, свака дозвола и свако упутство су ред у датотеци, а алати које већ користите дају одговор.
# шта компанија мисли о ценама?$ grep -ri "annual" memoryMEMORY.md: никада не наводи годишњу цену пре безбедносне провере # ко сме да приступи Stripe кључу?$ grep -n "STRIPE_API_KEY" kortix.yaml18: обавезно: [STRIPE_API_KEY]48: тајне: [STRIPE_API_KEY] # ко је променио службеника за фактуре и када?$ git log --oneline agents/8f2a1c4 invoice-clerk: престани да нагађаш о повраћајима1d90b73 invoice-clerk: први нацрт персонеСваки упит агента, свака вештина, свака запамћена чињеница и свака додела су текст у једном репозиторијуму. Нема конзоле кроз коју треба кликтати нити извоза који треба затражити.
Свака измена агента, вештине или датотеке меморије је commit са аутором, временском ознаком и разликом. Ништа не нестаје и ништа се не дешава у мраку.
Лоше упутство је додато у уторак? Прочитајте diff, поништите commit и отворите захтев за измену. Компанија се враћа на претходно стање.
Када агент осмисли бољи начин за обављање посла, он га не памти тихо. Измени вештину, направи commit на сопственој грани и отвори захтев за измену. Особа чита diff и одлучује.
## Упаривање уплате са фактуром 1. Преузмите фактуру по броју, никада по износу.2. Ако се износи разликују, означите је за проверу особи.2. Ако разлика одговара повраћају који је већ евидентиран, затворите је као делимични повраћај и забележите ID повраћаја на фактури.3. Ако се разликују из било ког другог разлога, означите је за проверу особи и наведите шта сте проверили. Никада сами не издајте повраћај.Када агент препише сопствена упутства, то се обрађује као миграција базе података: грана, commit, diff, рецензент. Компанија има један процес прегледа, не два.
Машина може да предложи. Особа одлучује. Рад стиже у main само кроз захтев за измену који је неко одобрио, па компанија не може да се неприметно промени док не гледате.
Агент може да прочита сопствену конфигурацију, измени је и предложи промену. Подесите распоред и репозиторијум ће постајати све бољи као ваша компанија док сви спавају.
agents: memory-reflector: # може да отвори захтев за измену. Ништа друго. kortix_permissions: [project.cr.open] triggers:- slug: memory-reflectorиме: Рефлектор меморије type: cron agent: memory-reflector enabled: falsecron: "0 0 3 * * *" timezone: UTC prompt: | Осврни се на последња 24 часа активности пројекта. Прегледај git историју, спојене захтеве за измену и сажетке сесија. Ажурирај memory/ и отвори један захтев за измену под називом `memory: ...`. Заврши без њега када нема трајног знања.Из почетног шаблона. Сваки нови пројекат га добија, искљученог.
Поставите enabled на true и покренуће се у 03:00 UTC, без надзора. Окидачи су cron распореди и потписани webhook-ови, наведени у истој датотеци као и све остало.
Добија сопствени cloud рачунар и сопствену грану, са тачно једном дозволом коју му је манифест доделио: да отвори захтев за измену.
Чита git историју и сесије последњег дана, затим уписује научено у memory/ као обичан markdown.
Ујутру вас чека један захтев за измену. Спојите га и компанија зна нешто ново. Затворите га и ништа се није догодило.
Нема тока извоза, тикета за подршку нити власничког формата који треба дешифровати. Компанија је већ текст на грани, па је можете клонирати, форковати, поништити и понети са собом.
# претворите било који директоријум у Kortix$ kortix init # проверите да ли се компајлира, затражите недостајуће тајне,# отпремите га и покрените цео систем$ kortix ship # одатле је то само репозиторијум$ git clone git@github.com:northwind/northwind.git$ git revert 8f2a1c4$ kortix crПочните са једним послом и ширите се одатле.