Негізгі мазмұнға өту
OpenAI

2025 ж. 12 желтоқсан

Инженерия

Codex көмегімен Android-қа арналған Sora-ны 28 күнде қалай жасадық

Патрик Хум және RJ Marsan, техникалық құрам мүшелері

Жүктелуде…

2026 жылғы 26 сәуірден бастап Sora өнімі енді қолжетімсіз.


Қарашада біз Sora Android қолданбасын әлемге ұсындық, соның арқасында Android құрылғысы бар кез келген адам қысқа көмексөзді әсерлі бейнеге айналдыра алды. Іске қосылған күні қолданба Play Store-да №1 орынға жетті. Алғашқы 24 сағатта Android пайдаланушылары миллионнан астам бейне жасады.

Бұл іске қосудың артында мынадай оқиға бар: Sora-ның өндірістік Android қолданбасының бастапқы нұсқасы 28 күнде жасалды, оған кез келген команда не әзірлеуші пайдалана алатын сол бір агент — Codex көмектесті.

2025 жылғы 8 қазан мен 5 қараша аралығында Codex-пен қатар жұмыс істеп, шамамен 5 миллиард токен жұмсаған шағын инженерлік команда Android-қа арналған Sora-ны прототиптен жаһандық іске қосуға дейін жеткізді. Ауқымына қарамастан, қолданбаның істен шығусыз жұмыс істеу көрсеткіші 99,9 пайыз болды және оның архитектурасын біз мақтан тұтамыз. Егер біз құпия модель қолдандық па деп ойласаңыз, біз GPT‑5.1‑Codex моделінің ерте нұсқасын қолдандық — бұл бүгін кез келген әзірлеуші не бизнес CLI, IDE кеңейтімі немесе веб-қолданба арқылы пайдалана алатын нұсқаның өзі.

Prompt: figure skater performs a triple axle with a cat on her head

Brooks заңын қабылдау: жылдам қимылдау үшін икемді болу

Sora iOS-та іске қосылғанда, пайдалану күрт артты. Адамдар бірден бейнелер легін жасай бастады. Ал Android-та, керісінше, бізде тек шағын ішкі прототип және Google Play-де алдын ала тіркелген пайдаланушылар санының өсуі ғана болды.

Маңызы жоғары, уақыты тығыз іске қосуға жиі берілетін жауап — көбірек ресурс қосып, процесті күрделендіру. Мұндай ауқым мен сападағы өндірістік қолданбаға әдетте айлар бойы жұмыс істейтін көп инженер тартылар еді, ал үйлестіру жұмысты баяулататын.

Америкалық компьютер сәулетшісі Фред Брукс «кешігіп жатқан бағдарламалық жобаға қосымша адам қоссаң, ол одан әрі кешігеді» деп әйгілі ескерткен. Басқаша айтқанда, күрделі жобаны тез жеткізуге тырысқанда, көбірек инженер қосу байланыс шығынын, міндеттердің бөлшектенуін және біріктіру шығындарын арттырып, тиімділікті жиі төмендетеді. Біз бұл ойды елемей қоймай, керісінше соған сүйендік; әр инженердің ықпалын едәуір арттыру үшін Codex-пен жабдықталған төрт мықты инженерден команда құрдық.

Осылай жұмыс істей отырып, біз Android-қа арналған Sora-ның ішкі жинағын қызметкерлерге 18 күнде жеткіздік, ал 10 күннен кейін көпшілікке ұсындық. Біз Android инженериясындағы жоғары стандартты сақтадық, қолдауға жарамдылыққа инвестиция салдық және қолданбаны дәстүрлі жобаға қояр сенімділік талабымен бірдей деңгейде ұстадық. (Бүгінде де қолданбаны жетілдіру және жаңа мүмкіндіктер енгізу үшін Codex-ті кеңінен қолдануды жалғастырып келеміз).

Жаңа аға инженерді бейімдеу

Codex-пен қалай жұмыс істегенімізді түсіну үшін оның қай жерде мықты, қай жерде бағыт қажет ететінін білу пайдалы. Оны жаңадан жұмысқа алынған аға инженер сияқты қабылдау жақсы тәсіл болды. Codex-тің қабілетінің арқасында біз кодты өзіміз жазғаннан гөрі, оны бағыттап, тексеруге көбірек уақыт жұмсай алдық.

Codex-ке қай жерде нұсқаулық керек

  1. Codex өзіне айтылмаған нәрсені (мысалы, сіздің ұнататын архитектура үлгілеріңізді, өнім стратегиясын, нақты пайдаланушы мінез-құлқын және ішкі нормалар мен төте жолдарды) әзірге жақсы болжай алмайды.
  2. Сол сияқты, Codex қолданбаның шын мәнінде қалай жұмыс істейтінін көре алмады: ол құрылғыда Sora-ны ашып, скроллдың оғаш екенін байқай алмайды немесе ағынның түсініксіз екенін сезе алмайды. Мұндай тәжірибелік міндеттерді тек біздің команда ғана орындай алды.
  3. Әр данаға бейімдеу қажет. Codex-тің жұмысты жақсы орындауы үшін оған мақсаттарды, шектеулерді және «біз мұны қалай істейміз» деген нұсқаулықты нақты беріп, контекст бөлісу аса маңызды болды.
  4. Осыған ұқсас, Codex терең архитектуралық пайымдауда қиналды: өз бетімен қалдырсаң, бізге барын кеңейту керек жерде ол артық view model қосуы немесе репозиторийге тиесілі логиканы UI қабатына итеруі мүмкін еді. Оның инстинкті — ұзақ мерзімді тазалықты емес, әуелі бірдеңені жұмыс істету.

Бізге Codex-тің код базасының әр жерінде AGENT.md файлдарының мол санын жасап, қолдап отырғаны пайдалы болды. Бұл бірдей нұсқаулық пен үздік тәжірибелерді әр сессияда оңай қолдануға мүмкіндік берді. Мысалы, Codex біздің стиль нұсқаулығымызға сай код жазуы үшін, жоғарғы деңгейдегі AGENTS.md файлына мынаны қостық:

Қарапайым мәтін

1
## Formatting and static checks
2
- **Always run** `./gradlew detektFix` (or for the affected modules) **before committing**. CI will fail if formatting or detekt issues are present.

Codex қай жерде озады

  1. Ірі код базаларын жылдам оқу және түсіну: Codex негізгі бағдарламалау тілдерінің бәрін дерлік біледі, бұл күрделі абстракцияларсыз-ақ көптеген платформаларда бірдей ұғымдарды пайдалануды жеңілдетеді.
  2. Тестілеу қамтуы: Codex кең ауқымды жағдайларды қамтитын бірлік тесттерін жазуға (ерекше түрде) ынталы. Әр тест терең бола бермеді, бірақ қамтудың кең болуы регрессиялардың алдын алуға көмектесті.
  3. Кері байланысты қолдану: Осыған ұқсас, Codex кері байланысқа жақсы жауап береді. CI сәтсіз болғанда, біз лог шығуын көмексөзге қойып, Codex-тен түзетулер ұсынуын сұрай алдық.
  4. Өте ауқымды параллель, бір рет қолданылатын орындау: Көпшілік бір уақытта қанша сессия жүргізе алатынының шегіне жете бермейді. Бірнеше идеяны қатар сынап, кодқа бір рет қолданылатын дүние ретінде қарау әбден мүмкін.
  5. Жаңа көзқарас ұсыну: Дизайн талқылауларында біз Codex-ті ықтимал ақау нүктелерін зерттеп, мәселені шешудің жаңа жолдарын табатын генеративті құрал ретінде қолдандық. Мысалы, бейне ойнатқыштың жадты оңтайландыруын жобалағанда, Codex бірнеше SDK-ны саралап, бізде талдап үлгеруге уақыт болмас тәсілдерді ұсынды. Codex зерттеуінен туған тұжырымдар соңғы қолданбадағы жад ізін барынша азайтуда баға жетпес болды.
  6. Әсері жоғарырақ жұмысты мүмкін ету: Іс жүзінде біз кодты өзіміз жазғаннан гөрі, оны тексеріп, бағыттауға көбірек уақыт жұмсадық. Дегенмен Codex код шолуда да өте мықты, біріктірілмей тұрып қателерді жиі байқап, сенімділікті арттырды.

Осы сипаттарды мойындаған соң, біздің жұмыс үлгіміз айқынырақ бола түсті. Біз жақсы түсінілген үлгілер мен нақты шектелген ауқымдар ішінде ауыр жұмыстың басым бөлігін Codex-ке жүктедік, ал командамыз архитектураға, пайдаланушы тәжірибесіне, жүйелік өзгерістерге және соңғы сапаға назар аударды.

Негізді қолмен қалау

Тіпті ең мықты жаңа аға маманның өзі ұзақ мерзімді ымыраларды бірден дұрыс бағалайтын көзқарасқа ие бола бермейді. Codex-ті тиімді пайдалану және оның жұмысының берік әрі қолдауға ыңғайлы болуын қамтамасыз ету үшін қолданбаның жүйелік дизайны мен негізгі ымыраларын өзіміз қадағалау маңызды болды. Бұған қолданба архитектурасын, модульдеуді, тәуелділіктерді енгізуді және навигацияны қалыптастыру кірді; сондай-ақ аутентификация мен негізгі желілік ағындарды да өзіміз іске асырдық.

Осы негізден біз бірнеше үлгілік мүмкіндікті басынан аяғына дейін өзіміз жаздық. Біз бүкіл код базасы ұстансын деген ережелерді қолданып, жоба ауқымындағы үлгілерді жол-жөнекей құжаттадық. Codex-ке осындай үлгі мүмкіндіктерді көрсеткенде, ол біздің стандарттар аясында анағұрлым дербес жұмыс істей алды. Біздің бағалауымызша, жобаның 85%-ын Codex жазған болса, мұқият жоспарланған іргетас қымбатқа түсетін кері шегіну мен рефакторингтен сақтады. Бұл — біз қабылдаған ең маңызды шешімдердің бірі.

Мақсат мүмкіндігінше тез «жұмыс істейтін бірдеңе» жасау емес, керісінше «біз нәрселердің қалай жұмыс істеуін қалайтынымызды түсінетін бірдеңе» жасау болды. Код жазудың көптеген «дұрыс» жолы бар. Бізге Codex-ке нақты не істеу керек екенін түгел айту қажет болмады; бізге командамыз үшін ненің «дұрыс» екенін көрсету қажет болды. Бастапқы нүктемізді және қалай құрастырғанды ұнататынымызды анықтаған соң, Codex іске кірісуге дайын болды.

Не боларын көру үшін біз шынында да: «iOS кодына сүйеніп Sora Android қолданбасын құрастыр. Баста» деген көмексөзді сынап көрдік, бірақ бұл жолдан тез бас тарттық. Codex жасаған дүние техникалық тұрғыдан жұмыс істегенімен, өнім тәжірибесі көңіл көншітпеді. Ал соңғы нүктелерді, деректерді және пайдаланушы ағындарын нақты түсінбейінше, Codex-тің бір реттік коды сенімсіз болды (агент қолданбасаңыз да, мыңдаған жол кодты біріктіру қауіпті).

Біз Codex жақсы жазылған мысалдардан тұратын құмсалғышта гүлденеді деп болжадық; және солай болды. Codex-тен «мына баптаулар экранын жаса» деп контекстсіз сұрау сенімсіз еді. Ал «жаңа ғана көрген басқа экрандағы архитектура мен үлгілерді қолданып, мына баптаулар экранын жаса» деу әлдеқайда жақсы нәтиже берді. Құрылымдық шешімдерді адамдар қабылдап, инварианттарды белгіледі; содан кейін Codex сол құрылым ішінде мол кодты толтырды.

Код жазар алдындағы Codex-пен жоспарлау

Codex мүмкіндігін барынша ашудағы келесі қадамымыз — Codex-ке ұзақ уақыт бойы (жуырда 24 сағаттан да көп) бақылаусыз жұмыс істеуге қалай жағдай жасау екенін түсіну болды.

Codex-ті қолданудың бастапқы кезеңінде біз бірден: «Міне, мүмкіндік. Міне, бірнеше файл. Өтінемін, соны құрастыр» деген көмексөздерге өтетінбіз. Кейде бұл жұмыс істейтін, бірақ көбіне техникалық тұрғыдан компиляцияланатын, алайда біздің архитектурамыз бен мақсаттарымыздан ауытқитын код шығаратын.

Сондықтан біз жұмыс барысын өзгерттік. Кез келген елеулі өзгеріс үшін әуелі Codex-тен жүйе мен кодтың қалай жұмыс істейтінін түсінуге көмектесуін сұрадық. Мысалы, оған өзара байланысты файлдар жиынтығын оқып, осы мүмкіндік қалай жұмыс істейтінін қысқаша түсіндіріп беруін сұрайтынбыз; айталық, деректер API-ден репозиторий қабаты, view model арқылы UI-ға қалай өтеді. Содан кейін біз оның түсінігін түзетіп не нақтылайтынбыз. (Мысалы, белгілі бір абстракция шын мәнінде басқа қабатқа тиесілі екенін немесе әлдебір класс тек офлайн режимі үшін бар екенін және оны кеңейтпеу керегін көрсететінбіз.)

Жаңа, қабілеті жоғары әріптеспен жұмыс істегендей, біз Codex-пен бірге мықты іске асыру жоспарын құрдық. Бұл жоспар көбіне қай файлдар өзгеруі керегін, қандай жаңа күйлер енгізілуі тиістігін және логика қалай ағуы керегін көрсететін шағын дизайн құжатына ұқсайтын. Тек содан кейін ғана Codex-тен жоспарды бір қадамнан қолданып бастауын сұрадық. Бір пайдалы кеңес: өте ұзақ тапсырмаларда, контекст терезесінің шегіне жеткенде, біз Codex-тен жоспарын файлға сақтауды сұрайтынбыз, бұл бірдей бағытты әр данада қолдануға мүмкіндік берді.

Бұл қосымша жоспарлау циклі жұмсалған уақытқа әбден тұрды. Ол бізге Codex-ті ұзақ уақыт «бақылаусыз» жүргізуге мүмкіндік берді, өйткені оның жоспарын білдік. Ол код шолуын жеңілдетті, өйткені біз контекстсіз diff оқудың орнына іске асыруды жоспарымызбен салыстыра алдық. Ал бірдеңе дұрыс болмай қалса, алдымен жоспарды, содан кейін кодты жөндейтінбіз.

Бұл динамика жақсы дизайн құжаты техникалық жетекшіге жобаға сенім беретін тәсілге ұқсас болды. Біз жай ғана код өндірген жоқпыз: біз ортақ жол картасын қолдайтын код өндірдік.

Үлестірілген инженерия

Жобаның шарықтау кезінде біз Codex-тің бірнеше сессиясын қатар жүргізіп жүрдік. Бірі ойнатуды, екіншісі іздеуді, үшіншісі қателерді өңдеуді, ал кейде тағы бірі тесттерді не рефакторингті қолға алатын. Бұл құрал пайдаланғаннан гөрі команда басқаруға көбірек ұқсайтын.

Әр сессия бізге мезгіл-мезгіл орындалу барысы туралы есеп беретін. Бірі: «Осы модульді жоспарлап біттім; міне, не ұсынамын» десе, екіншісі жаңа мүмкіндікке арналған ауқымды diff ұсынатын. Әрқайсысы назарды, кері байланысты және шолуды қажет етті. Бұл бірнеше жаңа инженермен жұмыс істеп, бәрі алға жылжып, бәріне бағыт керек болып тұрған техникалық жетекші болуға таңғаларлықтай ұқсас еді.

Нәтижесінде бірлескен ағым қалыптасты. Codex-тің код жазудағы табиғи қабілеті бізді көп қолмен теруден босатты. Бізде архитектураны ойлауға, өзгеріс сұраныстарын мұқият оқуға және қолданбаны сынап көруге көбірек уақыт болды.

Сонымен бірге, бұл қосымша жылдамдық шолу кезегімізде үнемі бірдеңенің күтіп тұруын білдірді. Codex контекст ауыстырудан бөгелмеді, ал біз бөгелдік. Әзірлеудегі тар жеріміз код жазудан шешім қабылдауға, кері байланыс беруге және өзгерістерді біріктіруге ауысты.

Міне, осы жерде Брукстың ойлары жаңаша әсер етеді. Codex сессияларын көбейте беріп, жылдамдық сызықты өседі деп күтуге болмайды; инженерлерді жобаға қоса беріп, кесте сызықты қысқарады деп күту қандай қате болса, бұл да сондай. Қосылған әрбір «қос қол», тіпті виртуалды болса да, үйлестіру шығынын арттырады. Біз жай ғана жылдамырақ жеке орындаушылар емес, оркестрдің дирижеріне айналдық.

Codex — кросс-платформалық суперкүш

Жобамызды біз үлкен тірек нүктеден бастадық: Sora iOS-та әлдеқашан іске қосылған еді. Негізгі талаптар мен шектеулерді түсінуге көмектесу үшін біз Codex-ке iOS және бэкенд код базаларын жиі көрсетіп отырдық. Жоба бойы біз кросс-платформалық фреймворк идеясын қайта ойлап тапқанымыз туралы әзілдедік. React Native не Flutter-ды ұмытыңыз; кросс-платформаның болашағы — жай ғана Codex.

Бұл қалжыңның астарында екі қағида жатыр:.

  1. Логика тасымалданады. Код Swift-пен не Kotlin-пен жазылсын, қолданбаның түпкі логикасы — дерек модельдері, желілік шақырулар, тексеру ережелері, бизнес логика — бірдей. Codex Swift-тегі іске асыруды оқып, семантиканы сақтайтын баламасын Kotlin-де жасауға өте шебер.
  2. Нақты мысалдар қуатты контекст береді. «iOS-та мұның нақты қалай жұмыс істейтіні мынау» және «Android архитектурасы мынау» дегенді көре алатын жаңа Codex сессиясы тек табиғи тілдегі сипаттамаларға ғана сүйенетін сессиядан әлдеқайда тиімді.

Бұл қағидаларды іске қосу үшін біз iOS, бэкенд және Android репозиторийлерін бір ортада қолжетімді еттік. Біз Codex-ке мынадай көмексөздер бердік:

«iOS кодындағы мына модельдер мен соңғы нүктелерді оқы да, содан кейін біздің қолданыстағы API клиенті мен модель кластарын пайдаланып Android-та баламалы әрекетті іске асыру жоспарын ұсын.»

Шағын, бірақ пайдалы бір тәсіл — ~/.codex/AGENTS.md ішінде жергілікті репозиторийлердің қайда орналасқанын және нені қамтитынын жазып қою болды. Бұл Codex-ке маңызды кодты тауып, шарлауды жеңілдетті.

Біз іс жүзінде кросс-платформалық әзірлеуді ортақ абстракция арқылы емес, аударма арқылы жасап жүрдік. Аударманың басым бөлігін Codex атқарғандықтан, іске асыру шығынын екі еселеуден құтылдық.

Жалпы сабақ мынау: Codex үшін контекст — бәрі. Codex мүмкіндік iOS-та қалай жұмыс істейтінін және біздің Android қолданбамыз қалай құрылғанын түсінген кезде ең жақсы жұмысын көрсетті. Контекст жетіспегенде, ол «ынтымақтасудан бас тартқан» жоқ; ол тек жорамал жасады. Оған жаңа әріптес ретінде қарап, дұрыс кіріс беруге уақыт бөлген сайын, оның нәтижесі соғұрлым жақсарды.

Ертеңгі бағдарламалық инженерия — бүгіннің өзінде

Төрт апталық спринтіміздің соңына қарай Codex-ті пайдалану тәжірибе болудан қалып, негізгі әзірлеу циклімізге айналды. Біз оны бар кодты түсінуге, өзгерістерді жоспарлауға және мүмкіндіктерді іске асыруға қолдандық. Оның нәтижесін әріптесіміздің жұмысын қарағандай тексердік. Бағдарламалық жасақтаманы осылай жеткізетін болдық.

AI көмегімен әзірлеу ұқыптылыққа деген қажеттілікті азайтпайтыны, керісінше арттыратыны айқын болды. Codex қаншалық қабілетті болса да, оның мақсаты — дәл қазір A нүктесінен B нүктесіне жету. Сондықтан AI көмегімен кодтау адамдарсыз жұмыс істемейді. Бағдарламалық инженерлер жүйелердің шынайы шектеулерін түсініп, қолдана алады, бағдарламалық жасақтаманы ең дұрыс архитектуралаудың жолдарын біледі және болашақтағы әзірлеу мен өнім жоспарларын ескеріп құрастыра алады. Ертеңгі бағдарламалық инженердің суперқабілеттері — жүйелерді терең түсіну және AI-мен ұзақ уақыт көкжиегінде бірлесе жұмыс істей білу.

Бағдарламалық инженерияның ең қызықты тұстары — тартымды өнімдер жасау, ауқымдалатын жүйелерді жобалау, күрделі алгоритмдер жазу және деректермен, үлгілермен және кодпен тәжірибе жасау. Алайда өткен мен бүгінгі бағдарламалық инженерия шындығы жиі әлдеқайда қарапайым дүниелерге сүйенеді: батырмаларды туралау, соңғы нүктелерді жалғау және үлгілік код жазу. Енді Codex бағдарламалық инженерияның ең мағыналы тұстарына және өз кәсібімізді жақсы көру себептеріне назар аударуға мүмкіндік береді.

Codex сіздің мақсаттарыңызды және қалай құрастырғанды ұнататыныңызды түсінетін, контекстке бай ортада дұрыс бапталғаннан кейін, кез келген команда өз мүмкіндігін еселей алады. Біздің іске қосудан кейінгі талдау бәріне бірдей келетін рецепт емес, әрі біз AI көмегімен әзірлеуді толық шештік деп айтпаймыз. Бірақ біздің тәжірибеміз Codex-ке сізді қуаттандыру үшін оны қалай жақсырақ қуаттандыру жолдарын табуды жеңілдетеді деп үміттенеміз.

Codex жеті ай бұрын зерттеу preview-інде іске қосылғанда, бағдарламалық инженерия мүлде басқаша көрінетін. Sora арқылы біз инженерияның келесі тарауын зерттеуге мүмкіндік алдық. Модельдеріміз бен оны іске асыру жүйеміз жақсарған сайын, AI құрастырудың барған сайын таптырмас бөлігіне айналады.

Codex-тен құралған өз командаңызбен сіз не жасайсыз?

Алғыс

Android-қа арналған Sora-ны жасауға көмектескен бүкіл командаға ерекше алғыс.

Авторлар

Patrick Hum және RJ Marsan