Baby Monitor Timmy жөнөкөй идеядан башталган: үйдө купуялуулукту сыйлаган ымыркай монитору. Булутка эч нерсе жазылбайт жана баланын бөлмөсүндөгү маалыматтар сыртка керексиз жөнөтүлбөйт. Көптөр биле бербеген жагы: Timmy'ди Цюрихте жалгыз өзүм түзөм, ал эми GitHub Copilot мага кошулуп иштеген абдан ыкчам программист.
Адам менен AI бирге иштеген процесс
Милдеттер так бөлүнгөн: функцияларды мен аныктайм, артыкчылыктарды белгилейм жана архитектуралык чечимдерди кабыл алам. Copilot аларды ишке ашырууга жардам берет: код жазат, тесттерди кошот, мүчүлүштүктөрдүн себептерин аныктоого көмөктөшөт жана релиз кадамдарын даярдайт.
Менин кадимки спринтим болжол менен мындай өтөт:
- Функциянын сүрөттөлүшү: Функция эмне кылышы керек экенин, анын ичинде өзгөчө учурларды жана чектөөлөрдү сүрөттөйм.
- Ишке ашыруу: Copilot кодду сунуштайт жана долбоордогу калыптанган эрежелерди карманат.
- Тестирлөө: Автоматташтырылган башынан аягына чейинки тесттер эки эмулятордо иштеп, бала тараптагы түзмөк менен ата-эне тараптагы түзмөктүн чыныгы байланышын текшерет.
- Релизге чыгаруу: Тесттер ийгиликтүү өтсө, Android жана iOS версиялары тиешелүү колдонмолор дүкөнүнө жана тестирлөө каналдарына чыгарууга даярдалат.
Бул цикл функциялар жана мүчүлүштүктөрдү оңдоо үчүн кайталанат. Ар бир сапты өзүм жазбайм, бирок эмне куруларын, эмне үчүн куруларын жана сунуш Timmy'ге туура келерин мен чечем.
Концепциядан WebRTC'ге чейин
Негизги техникалык милдет башынан эле так болчу: эки телефондун ортосунда аудио менен видеону реалдуу убакытта өткөрүү. WebRTC айкын тандоо эле, бирок аны Flutter менен интеграциялоо оңой эмес: ICE талапкерлери, SDP макулдашуусу, TURN резервдик байланышы жана DataChannel каналдары туура тартипте чогуу иштеши керек.
Copilot бул бөлүктөрдү кадам-кадам менен бириктирүүгө жардам берди: peer connection'ду орнотуу, маанилүү тартипти сактоо (offer'ден мурун DataChannel, setRemoteDescription'ден мурун onTrack), жана сигналдаштырууну Firebase Firestore'го жайгаштыруу. Кийинки кадамга өтөрдөн мурун ар бир бөлүк эки эмулятордо иштеши керек болчу.
ECDH менен коопсуз жупташтыруу
Эң маанилүү функциялардын бири коопсуз жупташтыруу системасы. Эки түзмөк өздүгүн ырастоо үчүн борбордук серверге таянбастан, бири-бирине ишеним түзүшү керек. Чечим — Firebase аркылуу ECDH P-256 ачкыч алмашуусун ортодогу адам чабуулун аныктоочу визуалдык текшерүү номери (SAS) менен айкалыштыруу.
Copilot криптографиялык чынжырды ишке ашырууга жардам берди: ачкычтарды түзүү, ачык ачкычтарды алмашуу, орток сырды алуу, SAS эсептөө жана мындан кийинки бардык сигналдаштыруу маалыматтарын AES-256-GCM менен шифрлөө. Жупташтыруу ачкычын серверге жөнөтпөйм; анын SHA-256 хэши гана Firestore документинин идентификатору катары колдонулат.
Коопсуздук аудити: алсыздыктарды табуу жана оңдоо
AI жардамындагы иштеп чыгуу мен үчүн жөн гана ылдамыраак терүү эмес. Ал мүчүлүштүктөрдү системалуу издөөгө да жардам берет. Коопсуздукка багытталган аудит спринтинде Copilot код базасын талдап, оңдошум керек болгон алты көйгөйдү тапты:
- Сигналдаштыруу маалыматтарынын киргизилишинин текшерилбегени
- ICE талапкерлерин иштетүүдө жарыш абалынын келип чыгуу ыктымалдыгы
- Туура тазаланбай калган эски сессия маалыматтары
- Өтө уруксатчыл Firestore коопсуздук эрежелери
- Сертификатты бекитүү зарылдыгынын эске алынбаганы
- TURN кирүү маалыматтарын алуу процессиндеги каталардын жетишсиз иштетилиши
Алты көйгөйдүн баары ошол эле спринтте оңдолду. Copilot ушул жерде күчтүү: көп файлды окуйт, үлгүлөрдү салыштырат жана мен жакшылап карашым керек болгон жерлерди белгилейт.
Итерациялык спринттер: колдонмо кантип өнүктү
Timmy ыкчам, бирок так чектелген спринттер аркылуу өстү. Айрым маанилүү этаптар:
- v1.8: Жупташтырууну толук кайра иштеп чыгуу — эски түз ачкыч ыкмасынын ордуна 4 белгиден турган код + Firebase аркылуу ECDH P-256 келди.
- v1.10: Коопсуздукту бекемдөө спринти — алты алсыздык боюнча аудит жана оңдоо цикли.
- v1.11: Бардык экрандар үчүн караңгы режим, ошондой эле сиз азыр окуп жаткан башкы бет менен блог.
- v1.12: Ата-эне экранын олуттуу жаңылоо, түнкү көрүү режими жана камера кадрларын талдоо аркылуу кыймылды аныктоо.
Ар бир спринт бир эле негизги тартипте өтөт: максатты сүрөттөө, сунуштарды карап чыгуу, автоматтык түрдө тестирлөө, андан соң сыноочуларга чыгаруу.
Түзмөктөр арасындагы E2E тестирлөө
Ымыркай мониторун бир эле түзмөктө туура тестирлөө мүмкүн эмес. Мага бала тараптагы бир түзмөк жана ата-эне тараптагы бир түзмөк керек. Долбоор бир убакта иштеген эки Android эмулятору менен башталган. Эми бул цикл жергиликтүү iOS симуляторундагы жана чыныгы түзмөктөрдөгү текшерүүлөр менен толукталат. Автоматташтырылган Android тест скрипти дагы эле төмөнкүлөрдү аткарат:
- Колдонмону эки эмуляторго тең орнотот
- Эки түзмөктө тең жупташтыруу кадамдарынан өтөт
- Аудио жана видео байланыштары түзүлгөнүн текшерет
- Басып сүйлөө, камераны башкаруу жана башка функцияларды тестирлейт
Эки эмулятор тең бир IP даректи бөлүшкөндүктөн (10.0.2.15), STUN аркылуу түзмөктөн түзмөккө түз байланыш түзүү мүмкүн эмес. Ар бир тест Cloudflare TURN релеси аркылуу өтүшү керек. Бул ыңгайсыз, бирок пайдалуу: эң татаал туташуу жолу ар бир тестте текшерилет.
Үйрөнгөндөрүм
AI жуп программисти менен толук кандуу колдонмо куруу мага бир нече нерсени үйрөттү:
- Архитектура мурдагыдан да маанилүү. Так эрежелер жана жакшы документтештирилген код базасы AI'га ырааттуу код сунуштоого жардам берет. Бүдөмүк талаптар тез эле көп убакыт жана күч талап кылат.
- Тестирлөө милдеттүү. AI жараткан код да адам жазган код сыяктуу эле катуу тестирлөөнү талап кылат. Автоматташтырылган E2E тесттер кол менен текшергенде оңой байкалбай кала турган көйгөйлөрдү тапты.
- Адам процессте калат. Ар бир архитектуралык чечим, коопсуздукка байланыштуу ар бир компромисс жана продуктунун ар бир чеги менин жоопкерчилигимде калат. AI ишке ашырууну тездетет, бирок адамдын ой-пикирин алмаштырбайт.
- Ылдамдык сапатка шарт түзөт. Функциялар күндөрдүн ордуна бир нече саатта чыгарылгандыктан, аларды дагы жакшыртууга жана мүчүлүштүктөрдү оңдоого көбүрөөк мүмкүнчүлүк калат. Ылдамдык өзүнөн өзү сапатка кепилдик бербейт.
Алдыга карай
Baby Monitor Timmy өнүгүүсүн улантууда. iOS релизи жакындап калды; андан кийин сенсорлорго байланыштуу кошумча функциялар кошулуп, коопсуздук мындан ары да бекемделет. Иш процесси мурдагыдай калат: багытты жана чектерди мен аныктайм, Copilot болсо аларды ыкчам ишке ашырууга жана текшерүүгө жардам берет.
Коопсуздукка тиешелүү негизги компоненттер эми так аныкталган чектердин ичинде жалпыга ачык baby-monitor-timmy-core репозиторийиндежайгашкан. Ал жерде жупташтыруу, сигналдаштыруу жана сервердик интерфейстер боюнча архитектуралык чечимдер да документтештирилген.