Blogu

Jinsi Ninavyojenga Baby Monitor Timmy kwa GitHub Copilot

AI hunisaidia kufanya kazi kwa kasi zaidi. Wajibu kwa Timmy bado unabaki kwangu.

Baby Monitor Timmy ilianza na wazo rahisi: kifuatiliaji cha mtoto kinachoheshimu faragha nyumbani. Hakuna rekodi kwenye wingu, wala data isiyo ya lazima inayotumwa nje ya chumba cha mtoto. Kitu ambacho watu wengi hawaoni ni kwamba ninajenga Timmy peke yangu huko Zurich, na GitHub Copilot ni mshirika wangu wa kuandika programu mwenye kasi sana.

Mfumo wa Kazi wa Binadamu na AI

Mgawanyo uko wazi: mimi hufafanua vipengele, huweka vipaumbele, na hufanya maamuzi ya usanifu. Copilot husaidia utekelezaji: kuandika msimbo, kuongeza majaribio, kubaini chanzo cha hitilafu, na kuandaa hatua za kutoa toleo.

Kwa kawaida, awamu fupi ya kazi huenda hivi kwangu:

  1. Maelezo ya kipengele: Ninaeleza kile ambacho kipengele kinapaswa kufanya, pamoja na hali za kipekee na vikwazo.
  2. Utekelezaji: Copilot hupendekeza msimbo na hufuata kanuni zilizopo za mradi.
  3. Majaribio: Majaribio ya kiotomatiki ya mwanzo hadi mwisho huendeshwa kwenye emula mbili na hukagua muunganisho halisi kati ya kifaa cha mtoto na kifaa cha mzazi.
  4. Usambazaji: Majaribio yakifaulu, matoleo ya Android na iOS huandaliwa kwa ajili ya duka husika na mikondo inayofaa ya majaribio.

Mzunguko huu hurudiwa kwa vipengele na marekebisho ya hitilafu. Siandiki kila mstari mwenyewe, lakini mimi huamua nini kinajengwa, kwa nini kinajengwa, na kama pendekezo linafaa Timmy.

Kutoka Wazo Hadi WebRTC

Kazi kuu ya kiufundi ilikuwa wazi tangu mwanzo: kusambaza sauti na video kwa wakati halisi kati ya simu mbili. WebRTC ilikuwa chaguo dhahiri, lakini kuiunganisha na Flutter si rahisi: ICE candidates, mazungumzo ya SDP, TURN fallback na DataChannels vyote lazima vifanye kazi pamoja kwa mpangilio sahihi.

Copilot ilinisaidia kuunganisha sehemu hizo hatua kwa hatua: kusanidi peer connection, kudumisha mpangilio muhimu (DataChannel kabla ya offer, onTrack kabla ya setRemoteDescription), na kuweka signaling kwenye Firebase Firestore. Kila sehemu ilipaswa kufanya kazi kwenye emula mbili kabla sijahamia sehemu iliyofuata.

Uoanishaji Salama kwa ECDH

Mojawapo ya vipengele muhimu zaidi ilikuwa mfumo salama wa kuoanisha vifaa. Vifaa viwili vinahitaji kuaminiana bila kutegemea seva kuu kuthibitisha utambulisho wao. Suluhisho ni ubadilishanaji wa funguo kwa ECDH P-256 kupitia Firebase, pamoja na nambari ya uthibitishaji inayoonekana (SAS), ambayo hugundua mashambulizi ya mtu aliye katikati (man-in-the-middle).

Copilot ilinisaidia kutekeleza mnyororo wa kriptografia: kutengeneza funguo, kubadilishana funguo za umma, kupata siri ya pamoja, kukokotoa SAS, na kutumia usimbaji fiche wa AES-256-GCM kwa data yote ya signaling inayofuata. Situmi ufunguo wa kuoanisha kwenda kwenye backend; ni thamani yake ya hashi ya SHA-256 pekee inayotumika kama kitambulisho cha hati ya Firestore.

Ukaguzi wa Usalama: Kutambua na Kurekebisha Udhaifu

Kwangu, kutumia AI kutengeneza programu si njia ya kuandika kwa kasi zaidi tu. Pia husaidia kutafuta hitilafu kwa utaratibu. Katika awamu maalumu ya ukaguzi wa usalama, Copilot ilichanganua msingi wa msimbo na kugundua masuala sita niliyohitaji kurekebisha:

Masuala yote sita yalirekebishwa katika awamu hiyo hiyo. Hapa ndipo Copilot ina uwezo mkubwa: kusoma faili nyingi, kulinganisha mifumo, na kuonyesha sehemu ninazohitaji kuchunguza kwa makini zaidi.

Awamu za Hatua kwa Hatua: Jinsi Programu Ilivyokua

Timmy ilikua kupitia awamu fupi na za haraka za kazi, kila moja ikiwa na mipaka iliyo wazi. Baadhi ya hatua muhimu ni:

Kila awamu hufuata utaratibu uleule wa msingi: kueleza lengo, kupitia mapendekezo, kufanya majaribio ya kiotomatiki, kisha kupeleka toleo kwa wanaolijaribu.

Majaribio ya E2E Kwenye Vifaa Mbalimbali

Huwezi kujaribu kifuatiliaji cha mtoto ipasavyo kwenye kifaa kimoja. Ninahitaji kifaa kimoja kinachotumika upande wa mtoto na kingine upande wa mzazi. Mradi ulianza kwa kutumia emula mbili za Android kwa wakati mmoja. Sasa majaribio hayo yanaongezewa ukaguzi kwenye simulator ya iOS inayoendeshwa ndani ya kompyuta na kwenye vifaa halisi. Hati ya kiotomatiki ya majaribio ya Android bado hufanya yafuatayo:

  1. Husakinisha programu kwenye emula zote mbili
  2. Hupitia hatua za kuoanisha kwenye vifaa vyote viwili
  3. Huthibitisha kuwa miunganisho ya sauti na video imeanzishwa
  4. Hujaribu kipengele cha bonyeza ili kuzungumza (push-to-talk), udhibiti wa kamera na vipengele vingine

Kwa kuwa emula zote mbili zinashiriki anwani sawa ya IP (10.0.2.15), muunganisho wa moja kwa moja kati ya vifaa kupitia STUN hauwezekani. Kila jaribio lazima lipitie seva ya Cloudflare TURN inayopitisha mawasiliano. Hilo linaudhi, lakini lina manufaa: njia ngumu zaidi ya muunganisho hujaribiwa kila mara.

Nilichojifunza

Kutengeneza programu kamili huku nikitumia AI kama mshirika wa kuandika programu kumenifundisha mambo machache:

Mtazamo wa Mbele

Baby Monitor Timmy inaendelea kuboreka. Toleo la iOS linakaribia; baada yake kutakuwa na vipengele vya ziada vya vihisi na uimarishaji endelevu wa usalama. Mfumo wa kazi unabaki sawa: mimi huweka mwelekeo na mipaka, huku Copilot ikisaidia kutekeleza na kukagua kazi kwa haraka.

Vipengele vya msingi vinavyohusiana na usalama sasa vimewekwa kwa mipaka iliyo wazi katika hifadhi ya umma ya baby-monitor-timmy-core. Humo pia ndipo maamuzi ya usanifu kuhusu uoanishaji, signaling na violesura vya backend yameandikwa.


Makala Zaidi