Sonraíocht foinse oscailte le haghaidh orchestrú Codex: Symphony
Le Alex Kotliarskyi, Victor Zhu, agus Zach Brock
Sé mhí ó shin, agus muid ag obair ar uirlis táirgiúlachta inmheánach, rinne ár bhfoireann cinneadh conspóideach (ag an am): thógfaimis ár stór cód gan aon chód scríofa ag duine. B’éigean do gach líne i stór ár dtionscadail a bheith ginte ag Codex.
Chun go n-oibreodh sé sin, rinneamar ár sreabhadh oibre innealtóireachta a athdhearadh ón mbun aníos. Thógamar stór a bhí oiriúnach do ghníomhairí, d’infheistíomar go mór i dtástálacha uathoibrithe agus i ráillí cosanta, agus chaitheamar le Codex mar bhall foirne ceart. Rinneamar an turas sin a dhoiciméadú inár blagmhír roimhe seo faoi innealtóireacht úim.
Agus d’oibrigh sé, ach ansin thángamar ar an gcéad bhac eile: athrú comhthéacs.
Chun an fhadhb nua seo a réiteach, thógamar córas ar a dtugtar Symphony. Is comhordaitheoir gníomhairí é Symphony(osclaíonn i bhfuinneog nua) a iompaíonn clár bainistíochta tionscadail cosúil le Linear ina phlána rialaithe do ghníomhairí códaithe. Sanntar gníomhaire do gach tasc oscailte, ritheann gníomhairí go leanúnach, agus déanann daoine athbhreithniú ar na torthaí.
Míníonn an t-alt seo conas a chruthaíomar Symphony—rud a d’fhág méadú 500% ar líon na pull request a cumascadh ar roinnt foirne—agus conas é a úsáid chun do rianaire saincheisteanna féin a iompú ina chomhordaitheoir gníomhairí atá i gcónaí ar siúl.
Uasteorainn na ngníomhairí códaithe idirghníomhacha
Fiú agus gníomhairí códaithe ag éirí níos éasca le húsáid—bíodh rochtain orthu trí aipeanna gréasáin nó tríd an CLI—is uirlisí idirghníomhacha fós iad.
De réir mar a mhéadaigh scála na hoibre gníomhaireachta ag OpenAI, thángamar ar chineál nua ualaigh. Ba ghnách le gach innealtóir cúpla seisiún Codex a oscailt, tascanna a shannadh, an t-aschur a athbhreithniú, an gníomhaire a threorú, agus é sin a dhéanamh arís. Sa chleachtas, d’fhéadfadh formhór na ndaoine trí go cúig sheisiún a bhainistiú go compordach ag an am céanna sula n-éireodh athrú comhthéacs pianmhar. Ina dhiaidh sin, thit an táirgiúlacht. Dhéanfaimis dearmad ar an méid a bhí á dhéanamh ag na seisiúin uile, léimimis idir teirminéil chun gníomhairí a chur ar ais ar an mbóthar ceart, agus dhífhabhtóimis tascanna a bhí ar siúl le fada a chuaigh i bhfostú leath bealaigh tríd.
Bhí na gníomhairí tapa, ach bhí bacainn chórais againn: aird dhaonna. Go bunúsach, bhí foireann d’innealtóirí sóisearacha thar a bheith cumasacha curtha le chéile againn, agus ansin chuireamar ár n-innealtóirí daonna i mbun micribhainistíochta orthu. Ní raibh sé sin chun scálú.
Athrú peirspictíochta
Thuigeamar go raibh an rud mícheart á optamú againn. Bhíomar ag lárú ár gcórais timpeall ar sheisiúin chódaithe agus PRs cumaiscthe, cé nach bhfuil i PRs agus i seisiúin, i ndáiríre, ach bealach chun sprioc a bhaint amach. Eagraítear sreafaí oibre bogearraí den chuid is mó thart ar inseachadtaí: saincheisteanna, tascanna, ticéid, garspriocanna.
Mar sin, d’fhiafraíomar dínn féin cad a tharlódh dá scoirfimis de ghníomhairí a mhaoirsiú go díreach agus, ina ionad sin, dá ligfimis dóibh obair a tharraingt ónár rianaitheoir tascanna.
B’as an smaoineamh sin a tháinig Symphony, sonraíocht scríofa a fheidhmíonn mar mhaoirseoir chun obair ghníomhaireach a chomhordú.
Ag iompú ár rianaire saincheisteanna ina chomhordaitheoir gníomhairí
Thosaigh Symphony le coincheap simplí: ba cheart d’aon ghníomhaire tasc oscailte a ghlacadh agus a chur i gcrích. In ionad seisiúin Codex a bhainistiú i gcluaisíní iolracha, rinneamar ár rianaire saincheisteanna mar an t-ardán rialaithe.
Sa chumrú seo, mapáiltear gach saincheist Linear oscailte chuig spás oibre gníomhaire tiomnaithe. Bíonn Symphony ag féachaint go leanúnach ar an gclár tascanna agus cinntíonn sé go mbíonn gníomhaire ag rith do gach tasc gníomhach go dtí go mbíonn sé críochnaithe. Má chliseann gníomhaire nó má théann sé i bhfostú, atosaíonn Symphony é. Má thagann obair nua chun cinn, tugann Symphony faoi agus tosaíonn sé á heagrú.
Thógamar ár sreabhadh oibre bunaithe ar stádais na dticéad, agus Linear á úsáid againn mar mheaisín stáit.
Go praiticiúil, scarann Symphony obair ó sheisiúin agus ó pull request. Gineann roinnt saincheisteanna roinnt PRanna ar fud repoanna; is imscrúdú nó anailís amháin atá i gceist le cinn eile nach mbaintear leis an mbunachar cóid riamh.
Nuair a theibítear obair ar an mbealach seo, is féidir le ticéid aonaid oibre i bhfad níos mó a léiriú.
Bainimid úsáid rialta as Symphony chun gnéithe casta agus imirceanna bonneagair a chomhordú. Mar shampla, d’fhéadfaimis tasc a chomhdú ina n-iarrtar ar an ngníomhaire an bunchód, Slack nó Notion a anailísiú agus plean cur chun feidhme a tháirgeadh. Nuair a bheidh muid sásta leis an bplean, gineann an gníomhaire crann tascanna, ag roinnt na hoibre ina céimeanna agus ag sainiú na spleáchas idir tascanna.
Ní thosaíonn gníomhairí ag obair ach ar thascanna nach bhfuil bac orthu, mar sin tarlaíonn an forghníomhú go nádúrtha agus go barrmhaith i gcomhthreo don DAG seo (seicheamh céimeanna forghníomhaithe). Mar shampla, mharcálamar uasghrádú React mar bhlocáilte go dtí go ndéanfaí imirce go Vite. Mar a bhíothas ag súil leis, níor thosaigh gníomhairí ar React a uasghrádú go dtí go raibh an imirce go Vite críochnaithe.
Is féidir le gníomhairí obair a chruthú iad féin freisin. Le linn an chur i bhfeidhm nó an athbhreithnithe, is minic a thugann siad faoi deara feabhsuithe atá lasmuigh de raon feidhme an taisc reatha: fadhb feidhmíochta, deis athfhachtóirithe, nó ailtireacht níos fearr. Nuair a tharlaíonn sé sin, ní dhéanann siad ach saincheist nua a chur isteach ar féidir linn í a mheas agus a sceidealú níos déanaí—glacann gníomhairí le go leor de na tascanna leantacha seo freisin. Agus muid ag déanamh maoirseachta ar an bpróiseas seo, fanann gníomhairí eagraithe agus coinníonn siad an obair ag dul ar aghaidh.
Laghdaíonn an modh oibre seo go mór an costas cognaíoch a bhaineann le hobair neamhchinnte a thosú. Má dhéanann an gníomhaire botún, is eolas úsáideach fós é sin, agus tá an costas dúinn beagnach nialasach. Is féidir linn ticéid a chur isteach ar chostas an-íseal chun go rachaidh an gníomhaire i mbun fréamhshamhlaithe agus iniúchta, agus aon iniúchtaí nach dtaitníonn linn a dhiúltú.
Ós rud é go ritheann an comhordaitheoir ar devboxes agus nach gcodlaíonn sé riamh, is féidir linn tascanna a chur leis ó áit ar bith agus a bheith cinnte go nglacfaidh gníomhaire le ceann acu. Mar shampla, rinne innealtóir amháin ar ár bhfoireann trí athrú shuntasacha san aip Linear ar a ghuthán, agus é i gcábán cluthar le Wi‑Fi lag.
Méadú ar an iniúchadh de bharr oibriú ar an mbealach seo
Nuair a breathnaíodh ar éifeachtaí na hoibre le Symphony, ba é an t-athrú ba shoiléire ná an t-aschur. I measc roinnt foirne ag OpenAI, chonaiceamar méadú 500% ar líon na PRanna a comhtháthaíodh sna chéad trí seachtaine. Lasmuigh de OpenAI, tharraing bunaitheoir Linear, Karri Saarinen, aird ar bhorradh i líon na spásanna oibre a cruthaíodh(osclaíonn i bhfuinneog nua) nuair a sheolamar Symphony. Mar sin féin, is é an t-athrú is doimhne ná an chaoi a smaoiníonn foirne faoi obair.
Nuair nach gcaitheann ár n-innealtóirí am a thuilleadh ag maoirsiú seisiúin Codex, athraíonn eacnamaíocht an chóid go hiomlán. Laghdaíonn costas braite gach athraithe toisc nach bhfuilimid ag infheistiú iarracht dhaonna a thuilleadh i stiúradh an chur i bhfeidhm féin.
D’athraigh sé sin ár n-iompar. Tá sé éirithe ina rud fánach tascanna amhantracha a chur ar bun in Symphony. Bain triail as smaoineamh, fiosraigh athfhachtóiriú, tástáil hipitéis, agus ná coinnigh ach na torthaí a bhfuil gealladh fúthu.
Leathnaíonn sé freisin cé atá in ann obair a thionscnamh. Is féidir lenár mbainisteoir táirgí agus lenár ndearthóir iarratais ar ghnéithe a chur isteach go díreach in Symphony anois. Ní gá dóibh an stór cód a sheiceáil amach ná seisiún Codex a bhainistiú. Déanann siad cur síos ar an ngné agus faigheann siad ar ais pacáiste athbhreithnithe ina bhfuil físeán treorach céim ar chéim den ghné ag feidhmiú laistigh den táirge iarbhír.
Bíonn Symphony ag lonrú freisin i monorepos móra (cosúil leis an gceann atá againn ag OpenAI), áit a mbíonn an chéim dheireanach chun PR a thabhairt isteach mall agus leochaileach. Déanann an córas monatóireacht ar CI, déanann sé rebase nuair is gá, réitíonn sé coinbhleachtaí, déanann sé atriail ar sheiceálacha neamhchobhsaí, agus go ginearálta treoraíonn sé athruithe tríd an bpíblíne. Faoin am a shroicheann ticéad Cumasc, tá ard-mhuinín againn go rachaidh an t-athrú isteach sa phríomhbhrainse gan mhaoirseacht dhaonna leanúnach.
Tar éis Symphony a chur i bhfeidhm, tarmligimid níos mó oibre chuig na ngníomhairí agus dírímid ar thascanna níos deacra agus níos fiosraithe.
Tagann fadhbanna nua agus éagsúla le dul chun cinn
Tá comhbhabhtálacha ag baint le hoibriú ag an leibhéal seo. Nuair a d’aistríomar ó bheith ag stiúradh gníomhairí go hidirghníomhach go hobair a shannadh dóibh ag leibhéal an ticéid, chailleamar an cumas iad a threorú go réidh go leanúnach i lár an phróisis agus an cúrsa a cheartú nuair ba ghá. Uaireanta tháirg an gníomhaire rud éigin a bhí go hiomlán ar strae. Bhí sé sin úsáideach—nocht na teipeanna sin bearnaí sa chóras agus chabhraigh siad linn é a dhéanamh níos athléimní.
In ionad an toradh a phaisteáil de láimh, chuireamar guardrails agus scileanna leis ionas go bhféadfadh na gníomhairí éirí leo an chéad uair eile. Le himeacht ama, thug sé seo orainn cumais nua a chur lenár gcreat tástála, amhail tástálacha ó cheann go ceann a rith, an aip a rialú trí Chrome DevTools, agus tástálacha deataigh QA a bhainistiú. D’fheabhsaíomar ár ndoiciméadú go suntasach agus shoiléiríomar cén chuma atá ar dhea-chaighdeán.
Ní bhíonn gach tasc oiriúnach do stíl oibre Symphony. Tá gá fós le hinnealtóirí a bheith ag obair go díreach le seisiúin idirghníomhacha Codex i gcás roinnt fadhbanna, go háirithe fadhbanna débhríocha nó obair a éilíonn breithiúnas fónta agus saineolas. Sa chleachtas, is iondúil gurb iad seo na tascanna is suimiúla agus is taitneamhaí dár n-innealtóirí am a chaitheamh orthu.
Is é an difríocht ná gur féidir le Symphony an chuid is mó den obair ghnáthaimh maidir le cur chun feidhme a láimhseáil. Ligeann sé sin d’innealtóirí díriú ar fhadhb dheacair amháin ag an am, seachas a bheith ag athrú comhthéacs i gcónaí idir tascanna níos lú.
D’fhoghlaimíomar freisin nach n-oibríonn sé go maith gníomhairí a chóireáil mar nóid righne i meaisín staide. Éiríonn samhlacha níos cliste agus is féidir leo fadhbanna níos mó a réiteach ná an bosca a ndéanaimid iarracht iad a fheistiú ann. Sna leaganacha luatha dár n-obair le gníomhairí, ní dheineamar ach iarraidh ar Codex an tasc a chur i bhfeidhm. Ba léir go raibh an cur chuige sin ró-theoranta. Tá Codex lán-in ann PRanna a chruthú, chomh maith le haiseolas athbhreithnithe a léamh agus freagairt dó. Mar sin thugamar uirlisí dó—gh CLI, scileanna chun logaí CI a léamh, srl.—agus anois is féidir linn a iarraidh ar Codex níos mó a dhéanamh, amhail sean-PRanna a dhúnadh nó tuarascálacha a tharraingt ar obair chríochnaithe i gcoinne obair thréigthe. Bhí na cineálacha tascanna seo i bhfad lasmuigh de raon feidhme an chéad chur i bhfeidhm ar an ngné.
Mar sin, sa deireadh, bhogamar i dtreo cuspóirí a thabhairt do ghníomhairí seachas athruithe dochta, ar nós mar a leagfadh bainisteoir maith sprioc síos do dhuine ar a bhfoireann a thuairiscíonn go díreach dóibh. Tagann cumhacht na samhlacha óna gcumas réasúnaíocht a dhéanamh, mar sin tabhair uirlisí agus comhthéacs dóibh agus lig dóibh a gcuid oibre a dhéanamh.
Symphony a úsáid chun Symphony a thógáil
Nuair a osclaíonn tú stór Symphony,(osclaíonn i bhfuinneog nua) is é an chéad rud a thabharfaidh tú faoi deara ná nach bhfuil in Symphony, ó thaobh teicniúil de, ach comhad SPEC.md —sainmhíniú ar an bhfadhb agus ar an réiteach atá beartaithe. In áit córas maoirseachta casta a thógáil, shainmhíníomar an fhadhb agus na réitigh a bhí beartaithe againn, rud a thug stiúradh ardleibhéil do ghníomhairí.
Tá an cur chun feidhme tagartha scríofa in Elixir—mar nuair atá cód go bunúsach saor ó chostas, is féidir leat teangacha a roghnú de réir a láidreachtaí, amhail comhrith Elixir—ach is féidir an bunsmaoineamh a chur in iúl i ndoiciméad simplí Markdown. Molaimid duit féin do ghníomhaire códaithe is fearr leat a dhíriú ar an tsonraíocht agus a leagan féin a chur i bhfeidhm.
Ní raibh sa chéad leagan de Symphony ach seisiún Codex a bhí ag rith in tmux, ag déanamh faireachán ar Linear agus ag ghiniúint fo-ghníomhairí do thascanna nua. D’oibrigh sé, ach ní raibh sé thar a bheith iontaofa. Bhí an dara leagan lonnaithe laistigh dár stór tionscadail, a tógadh le gníomhairí san áireamh. Bhí creat na ngníomhairí tógtha againn cheana chun na scileanna agus an comhthéacs a thabhairt do ghníomhairí chun obair ardchaighdeáin a dhéanamh sa stór seo, mar sin ní dhéanann Symphony ach é ar fad a nascadh.
A luaithe a bhí an fheidhmiúlacht bhunúsach ann, d’úsáideamar Symphony chun Symphony a thógáil.
Nuair a chuireamar an córas i láthair go hinmheánach, agus é ag bainistiú tascanna agus ag ceangal a fhíseáin cruthúnais oibre, bhí an fhreagairt thar a bheith dearfach: d’fhás ár gcainéal tionscadail Symphony, agus thosaigh foirne ar fud na heagraíochta á úsáid de réir a chéile. Ag OpenAI, tá oiriúnacht táirge don mhargadh go hinmheánach ina réamhriachtanas roimh sheoladh seachtrach. Bunaithe ar an úsáid a chonaiceamar ag OpenAI, tháinig sé chun solais gur cheart dúinn Symphony a roinnt lasmuigh de bhallaí na cuideachta.
Mar sin, chuireamar an smaoineamh i SPEC.md neamhspleách agus d’iarramar ar Codex é a chur i bhfeidhm. Maidir leis an gcur i bhfeidhm tagartha, roghnaíomar Elixir, teanga sách speisialaithe a bhfuil bunghnéithe den scoth aici chun próisis chomhreathacha a chomhordú agus a mhaoirsiú. Chuir Codex an cur i bhfeidhm Elixir le chéile in aon iarracht amháin, agus leanamar orainn ag atriallú ar an tsonraíocht agus ar an gcur i bhfeidhm araon as sin amach. D’fhonn an tsonraíocht a shnasú, d’iarramar fiú ar Codex í a chur chun feidhme i roinnt teangacha ríomhchlárúcháin eile—TypeScript, Go, Rust, Java, Python—agus d’úsáideamar na torthaí chun débhríochtaí a shainaithint agus an córas a shimpliú. D’éirigh leis i ngach teanga.
Le linn dúinn Symphony a thógáil, bhaineamar go leor den chastacht theagmhasach, amhail spleáchais ar stórtha ar leith nó Linear MCP. Níl Symphony ag brath a thuilleadh ar ár stórtha inmheánacha ná ar ár sreafaí oibre. D’éirigh an cur chuige lárnach simplí:
I gcás gach tasc oscailte, cinntigh go bhfuil gníomhaire ag rith ina spás oibre féin.
Chomh maith le cuidiú leis an obair ghníomhach, tá an sreabhadh oibre forbartha anois ar eolas ag gníomhairí agus leanann siad é. Tá an sreabhadh oibre forbartha—oibriú ar shaincheist, stór cód a fhiosrú, é a chur ar siúl ionas go mbeidh a fhios ag an PM go bhfuil obair ar siúl air, an PR a chur leis, é a bhogadh chuig an stádas Athbhreithniú, físeáin a cheangal, srl.— anois i gcomhad simplí WORKFLOW.md. Is próiseas é seo ar fad a lean daoine, ach níor doiciméadaíodh riamh é. Seachas a bheith ag brath ar an tsraith intuigthe céimeanna seo, táimid á dhoiciméadú anois, agus cinntíonn Symphony go leanann gníomhairí í. Ligeann sé seo dúinn gníomhairí a thógáil a oibríonn in éineacht linn. Má chinnimid gur cheart do ghníomhairí féinmhachnamh a cheangal le hobair chríochnaithe freisin, cuirfimid é sin leis an WORKFLOW.md, agus treoróidh Symphony na gníomhairí chuig an gcéim sin.
Bhí deis againn freisin Codex a úsáid i mód freastalaí aipe(osclaíonn i bhfuinneog nua), mód ionsuite gan chomhéadan úsáideora le haghaidh Codex. Thug an mód seo deis dúinn Codex a rith agus cumarsáid a dhéanamh leis go ríomhchláraithe trí API JSON-RPC dea-dhoiciméadaithe, le haghaidh rudaí ar nós snáithe a thosú nó freagairt do shealanna. Tá sé níos áisiúla agus níos inscálaithe ná iarracht a dhéanamh idirghníomhú le Codex trí CLI nó trí sheisiúin bheo tmux.
Bhí Freastalaí Aipe Codex oiriúnach go foirfe dár gcás úsáide: bainimid leas as an gcreat a sholáthraíonn Codex, agus roghanna cumraíochta agus pointí ceangail againn chun nascadh leo. Mar shampla, chun téacschomhartha rochtana Linear a sheachaint ó bheith nochta d’fho-ghníomhairí, úsáidimid glaonna dinimiciúla uirlisí(osclaíonn i bhfuinneog nua) chun an fheidhm amh linear_graphql a nochtadh, feidhm a fhorghníomhaíonn iarratais threallacha ar Linear, gan brath ar MCP ná an téacschomhartha rochtana a nochtadh do choimeádáin.
Cad atá romhainn
Is ciseal comhordaithe íosta é Symphony. Táimid á chur ar fáil mar fhoinse oscailte chun cumhacht Codex App Server a léiriú nuair a chomhcheanglaítear é le huirlisí éagsúla sreafa oibre, amhail Linear. Dá bhrí sin, níl sé beartaithe againn Symphony a chothabháil mar tháirge neamhspleách. Smaoinigh air mar chur i bhfeidhm tagartha. Cosúil leis an gcaoi ar threoraigh go leor forbróirí a ngníomhairí códaithe chuig an alt innealtóireachta Harness chun creatlach a chur ar bun dá stórtha, tá súil againn go dtreoróidh sibh an gníomhaire códaithe is fearr libh chuig sonraíocht(osclaíonn i bhfuinneog nua) agus stór(osclaíonn i bhfuinneog nua) Symphony chun bhur leaganacha féin a thógáil, oiriúnaithe do bhur dtimpeallachtaí.
Tagann an chumhacht ó Codex agus óna fhreastalaí aipe. Ba bhealach é Symphony chun Codex a nascadh le Linear, dhá rud a bhíomar in úsáid cheana féin, chun fadhb na bainistíochta oibre a réiteach. De réir mar a éiríonn gníomhairí códaithe níos fearr ag réasúnaíocht agus ag leanúint treoracha, is dóigh linn go n-aistreoidh an bac i gcomhlachtaí eile freisin ó chód a scríobh i dtreo obair gníomhairí a bhainistiú. Is é an rud spreagúil ná go bhfuil an bac ar thurgnamh a dhéanamh leis na córais gníomhairí códaithe seo chomh íseal anois go gcuireadh sé ionadh ort. Is féidir leat rudaí a chruthú go simplí le Codex.
Aitheantais phobail
Táimid thar a bheith sásta an pobal innealtóireachta a fheiceáil ag úsáid Symphony sna seachtainí ó eisíodh é, agus breis agus 15K réalta GitHub(osclaíonn i bhfuinneog nua) bailithe aige amhail an 23 Aibreán.