ብሎግ

Baby Monitor Timmy በGitHub Copilot እንዴት እንደምገነባ

AI በፍጥነት እንድሠራ ያግዘኛል። ለTimmy ያለው ኃላፊነት ግን አሁንም የእኔ ነው።

Baby Monitor Timmy የጀመረው በአንድ ቀላል ሐሳብ ነው፦ በቤት ውስጥ ግላዊነትን የሚያከብር የሕፃን መቆጣጠሪያ። የደመና ቀረጻዎች የሉም፣ ከሕፃኑ ክፍል ወደ ውጭ የሚወጡ አላስፈላጊ የውሂብ መንገዶችም የሉም። ብዙ ሰዎች የማያዩት ነገር፦ Timmyን በዙሪክ ብቻዬን እየሠራሁ ነው፣ እና GitHub Copilot በጣም ፈጣን የፕሮግራሚንግ አጋሬ ነው።

የሰው-እና-AI የሥራ ሂደት

የሥራ ክፍፍሉ ግልጽ ነው፦ ባህሪያትን እወስናለሁ፣ ቅድሚያዎችን አስቀምጣለሁ እና የሥርዓት አወቃቀር ውሳኔዎችን እወስዳለሁ። Copilot በትግበራው ያግዛል፦ ኮድ በመጻፍ፣ ሙከራዎችን በመጨመር፣ የስህተቶችን መንስኤ በመለየት እና የልቀት ደረጃዎችን በማዘጋጀት።

ለእኔ መደበኛ ስፕሪንት በግምት እንዲህ ይመስላል፦

  1. የባህሪ መግለጫ፦ ባህሪው ምን ማድረግ እንዳለበት፣ ልዩ ሁኔታዎችንና ገደቦችን ጨምሬ እገልጻለሁ።
  2. ትግበራ፦ Copilot ኮድ ይጠቁማል፣ የፕሮጀክቱንም ነባር የኮድ አጻጻፍ ልማዶች ይከተላል።
  3. ሙከራ፦ በሁለት ኢሙሌተሮች ላይ የሚሠሩ ራስ-ሰር የጫፍ-እስከ-ጫፍ ሙከራዎች እውነተኛውን የሕፃንና የወላጅ መሣሪያዎች ግንኙነት ይፈትሻሉ።
  4. ስርጭት፦ ሙከራዎቹ ሲያልፉ፣ የAndroid እና iOS ግንባታዎች ለተገቢው ሱቅ እና የሙከራ መስመሮች ይዘጋጃሉ።

ይህ ዑደት ለአዳዲስ ባህሪያትና ለስህተት ጥገናዎች ይደጋገማል። እያንዳንዱን መስመር ራሴ አልጽፍም፣ ግን ምን እንደሚሠራ፣ ለምን እንደሚሠራ፣ እና አንድ ጥቆማ Timmyን የሚስማማ መሆኑን እኔ እወስናለሁ።

ከሐሳብ ወደ WebRTC

ዋናው ቴክኒካዊ ሥራ ከመጀመሪያው ግልጽ ነበር፦ በሁለት ስልኮች መካከል በቅጽበት የድምፅና የቪዲዮ ግንኙነት። WebRTC ግልጽ ምርጫ ነበር፣ ግን ከFlutter ጋር ማዋሃድ ቀላል አይደለም፦ ICE candidates፣ SDP negotiation፣ TURN fallback እና DataChannels በትክክለኛው ቅደም ተከተል አብረው መሥራት አለባቸው።

Copilot እነዚህን ክፍሎች ደረጃ በደረጃ እንዳዋህድ ረድቶኛል፦ peer connection ማዘጋጀት፣ ወሳኙን ቅደም ተከተል ትክክል ማድረግ (DataChannel ከoffer በፊት፣ onTrack ከsetRemoteDescription በፊት)፣ እና signalingን በFirebase Firestore ላይ ማስቀመጥ። ወደ ቀጣዩ ከመሄዴ በፊት እያንዳንዱ ክፍል በሁለት emulator ላይ መሥራት ነበረበት።

በECDH የተጠበቀ ማጣመር

በጣም ወሳኝ ከነበሩት ባህሪያት አንዱ የተጠበቀ የማጣመር ሥርዓት ነበር። ሁለት መሣሪያዎች ማንነታቸውን የሚያረጋግጥ ማዕከላዊ አገልጋይ ሳይኖር በእርስ በርስ መተማመን ማቋቋም አለባቸው። መፍትሔው፦ በFirebase በኩል የECDH P-256 ቁልፍ ልውውጥ፣ ከመካከለኛ-ሰው ጥቃቶችን ከሚለይ የእይታ ማረጋገጫ ቁጥር (SAS) ጋር።

Copilot የምስጠራ ሂደቱን ለመተግበር ረድቶኛል፦ ቁልፍ መፍጠር፣ የይፋ ቁልፎችን መለዋወጥ፣ የጋራ ምስጢር ማመንጨት፣ SASን ማስላት እና በኋላ ለሚላኩ የምልክት ልውውጥ ውሂቦች በሙሉ AES-256-GCM ምስጠራን መጠቀም። የማጣመሪያ ቁልፉን ወደ ጀርባ አገልግሎቱ አልልክም፤ የSHA-256 ሃሽ ብቻ የFirestore ሰነድ መለያ ሆኖ ጥቅም ላይ ይውላል።

የደህንነት ምርመራ፦ ተጋላጭነቶችን መፈለግና ማስተካከል

በAI የታገዘ ልማት ለእኔ ፈጣን መተየብ ብቻ አይደለም። ስህተቶችን በሥርዓት ለመፈለግም ያግዛል። ትኩረት በተሰጠበት የደህንነት ምርመራ ስፕሪንት ውስጥ Copilot የኮድ መሠረቱን ተንትኖ ማስተካከል የነበረብኝን ስድስት ችግሮች አገኘ፦

ስድስቱም በዚያው ስፕሪንት ተስተካክለዋል። Copilot የሚጠነክርበት ቦታ ይህ ነው፦ ብዙ ፋይሎችን ማንበብ፣ አሰራሮችን ማነጻጸር እና በጥልቀት መመርመር ያለብኝን ቦታ ማመልከት።

ተደጋጋሚ ስፕሪንቶች፦ መተግበሪያው እንዴት እንዳደገ

Timmy በፈጣን ነገር ግን ግልጽ ወሰን ባላቸው ስፕሪንቶች አደገ። አንዳንድ ዋና ደረጃዎች፦

እያንዳንዱ ስፕሪንት ተመሳሳይ መሠረታዊ አሰራር ይከተላል፦ ግቡን መግለጽ፣ ጥቆማዎችን መገምገም፣ በራስ-ሰር መሞከር፣ ከዚያም ለሞካሪዎች መላክ።

በመሣሪያዎች መካከል የE2E ሙከራ

የሕፃን መቆጣጠሪያን በአንድ መሣሪያ ብቻ በትክክል መሞከር አይቻልም። አንድ የሕፃን መሣሪያ እና አንድ የወላጅ መሣሪያ ያስፈልገኛል። ፕሮጀክቱ በአንድ ጊዜ በሚሠሩ ሁለት Android emulator ተጀምሮ፣ አሁን ይህንን ሂደት በአካባቢያዊ iOS simulator እና በእውነተኛ መሣሪያ ፍተሻዎች ያሟላል። ራስ-ሰር የAndroid የሙከራ ስክሪፕቱ አሁንም፦

  1. መተግበሪያውን በሁለቱም emulator ላይ ይጭናል
  2. በሁለቱም መሣሪያዎች ላይ በማጣመር ሂደት ያልፋል
  3. የድምፅና የቪዲዮ ግንኙነቶች መቋቋማቸውን ያረጋግጣል
  4. push-to-talkን፣ የካሜራ መቆጣጠሪያን እና ሌሎች ባህሪያትን ይፈትሻል

ሁለቱም emulator ተመሳሳይ IP አድራሻ ስለሚጋሩ (10.0.2.15), በSTUN በኩል ቀጥተኛ የpeer-to-peer ግንኙነት መፍጠር አይቻልም። እያንዳንዱ ሙከራ በCloudflare TURN relay በኩል ማለፍ አለበት። ይህ ያስቸግራል፣ ግን ጠቃሚ ነው፦ እጅግ ውስብስቡ የግንኙነት መንገድ በእያንዳንዱ ሙከራ ይፈተሻል።

የተማርኩት

ሙሉ መተግበሪያ ከAI የፕሮግራሚንግ አጋር ጋር መሥራት ጥቂት ነገሮችን አስተምሮኛል፦

ወደፊት ሲታይ

Baby Monitor Timmy እየተሻሻለ ነው። የiOS ልቀት ቅርብ ነው፤ ከዚያ በኋላ ተጨማሪ የsensor ባህሪያት እና ቀጣይ የደህንነት ማጠናከሪያ ይመጣሉ። የሥራ ሂደቱ ተመሳሳይ ይቆያል፦ አቅጣጫና ወሰኖችን እኔ አስቀምጣለሁ፣ Copilot ደግሞ በፍጥነት እንዲተገበርና እንዲፈተሽ ያግዛል።

ከደህንነት ጋር የተያያዙት መሠረታዊ ክፍሎች አሁን ግልጽ ወሰኖች ተበጅተውላቸው በይፋዊው baby-monitor-timmy-core repository ውስጥ ይገኛሉ። ስለ ማጣመር፣ የምልክት ልውውጥ እና የጀርባ አገልግሎት በይነገጾች የተደረጉ የሥርዓት አወቃቀር ውሳኔዎችም እዚያ ተመዝግበዋል።


ተጨማሪ ጽሑፎች