Блог

GitHub Copilot ашиглан Baby Monitor Timmy аппыг хэрхэн бүтээдэг вэ

AI надад илүү хурдан ажиллахад тусалдаг. Харин Timmy-ийн хариуцлага надад хэвээр.

Baby Monitor Timmy энгийн нэг санаанаас эхэлсэн: гэр доторх хувийн нууцыг хүндэлдэг хүүхэд хянах систем. Үүлэнд бичлэг хадгалахгүй, хүүхдийн өрөөнөөс өгөгдлийг шаардлагагүй газарт дамжуулахгүй. Олон хүн үүнийг мэддэггүй: би Timmy-г Цюрихт ганцаараа хөгжүүлдэг бөгөөд GitHub Copilot миний маш хурдан хамтран код бичигч юм.

Хүн ба AI-ийн ажлын урсгал

Ажлын хуваарилалт тодорхой: би функцуудыг тодорхойлж, тэргүүлэх чиглэлээ тогтоон, архитектурын шийдвэрүүдийг гаргадаг. Copilot хэрэгжүүлэлтэд тусалдаг: код бичих, тест нэмэх, алдааны шалтгааныг нарийсгах, хувилбар гаргах алхмуудыг бэлтгэх зэрэгт.

Миний хувьд ердийн спринт ерөнхийдөө ингэж өрнөдөг:

  1. Функцийн тайлбар: Тухайн функц юу хийх ёстойг, онцгой тохиолдол болон хязгаарлалтын хамт тайлбарлана.
  2. Хэрэгжүүлэлт: Copilot код санал болгож, төслийн одоо мөрдөж буй дүрэм, хэв маягийг дагадаг.
  3. Тест: Автомат E2E тестүүд хоёр эмулятор дээр ажиллаж, хүүхдийн тал болон эцэг эхийн талын төхөөрөмж үнэхээр холбогдож байгааг шалгана.
  4. Түгээлт: Тестүүд амжилттай бол Android, iOS хувилбаруудыг тохирох дэлгүүр болон туршилтын сувгуудад бэлтгэнэ.

Энэ мөчлөг функц болон алдаа засвар бүрт давтагдана. Би мөр бүрийг өөрөө бичдэггүй ч юу бүтээх, яагаад бүтээх, мөн санал Timmy-д нийцэж байгаа эсэхийг би шийддэг.

Санаанаас WebRTC хүртэл

Техникийн гол зорилт эхнээсээ тодорхой байсан: хоёр утасны хооронд бодит цагийн аудио, видео дамжуулах. WebRTC нь илэрхий сонголт байсан ч Flutter-тэй нэгтгэх амаргүй: ICE candidate, SDP тохиролцоо, TURN нөөц холболт болон DataChannel зөв дарааллаар хамт ажиллах ёстой.

Copilot эдгээр хэсгийг алхам алхмаар холбож өгөхөд тусалсан: peer connection-ийг тохируулах, чухал дарааллыг зөв барих (offer-оос өмнө DataChannel, setRemoteDescription-оос өмнө onTrack), мөн signaling-ийг Firebase Firestore дээр байрлуулах. Дараагийн алхам руу орохын өмнө хэсэг бүр хоёр эмулятор дээр ажиллах ёстой байсан.

ECDH ашигласан аюулгүй хослуулах

Хамгийн чухал функцуудын нэг нь аюулгүй хослуулах систем байсан. Төв серверээр хэн болохыг нь батлуулахгүйгээр хоёр төхөөрөмж харилцан итгэлцэл тогтоох шаардлагатай. Шийдэл нь Firebase-ээр дамжуулан ECDH P-256 түлхүүр солилцож, дундаас нь халдах халдлагыг илрүүлэх нүдээр тулган баталгаажуулах дугаар (SAS) ашиглах явдал байв.

Copilot криптографийн бүх үе шатыг хэрэгжүүлэхэд тусалсан: түлхүүр үүсгэх, нийтийн түлхүүр солилцох, хамтын нууц түлхүүр гарган авах, SAS тооцоолох, цаашдын бүх дохиоллын өгөгдлийг AES-256-GCM-ээр шифрлэх. Би хослуулах түлхүүрийг арын систем рүү илгээдэггүй; зөвхөн SHA-256 хэшийг нь Firestore баримтын танигч болгон ашигладаг.

Аюулгүй байдлын аудит: эмзэг байдлуудыг илрүүлж, зассан нь

AI-тусламжтай хөгжүүлэлт надад зөвхөн хурдан бичих хэрэгсэл биш. Мөн алдааг системтэй хайхад тусалдаг. Төвлөрсөн аюулгүй байдлын аудитын спринтэд Copilot кодын санг шинжилж, засах шаардлагатай зургаан асуудал илрүүлсэн:

Эдгээр зургаан асуудлыг бүгдийг нь нэг спринтэд зассан. Copilot-ийн давуу тал нь энд харагддаг: олон файл унших, хэв маягуудыг харьцуулах, илүү нягт шалгах шаардлагатай хэсгүүдийг тэмдэглэх.

Давталттай спринтүүд: Апп хэрхэн хөгжсөн бэ

Timmy хурдан боловч тодорхой хязгаартай спринтүүдээр хөгжсөн. Зарим чухал үе шат:

Спринт бүр ижил үндсэн загвартай: зорилгыг тайлбарлах, саналуудыг хянах, автоматаар тестлэх, дараа нь туршигчдад хүргэх.

Төхөөрөмж хоорондын E2E тест

Хүүхэд хянах системийг нэг төхөөрөмж дээр бүрэн тестлэх боломжгүй. Надад хүүхдийн талын нэг төхөөрөмж, эцэг эхийн талын нэг төхөөрөмж хэрэгтэй. Төсөл анх зэрэг ажилладаг хоёр Android эмулятораас эхэлсэн бөгөөд одоо энэ туршилтыг дотоод iOS симулятор болон бодит төхөөрөмж дээрх шалгалтаар нөхөж байна. Android-ийн автомат тестийн скрипт одоо ч:

  1. Аппыг хоёр эмулятор дээр суулгана
  2. Хоёр төхөөрөмж дээр хослуулах үйл явцыг гүйцээнэ
  3. Аудио, видео холболт тогтсоныг баталгаажуулна
  4. Товч дарж ярих, камер удирдах болон бусад функцийг тестлэнэ

Хоёр эмулятор ижил IP хаяг ашигладаг тул (10.0.2.15), STUN ашиглан төхөөрөмжүүдийн хооронд шууд холболт үүсгэх боломжгүй. Тест бүр Cloudflare-ийн TURN дамжуулах серверээр дамжих ёстой. Энэ нь төвөгтэй ч ашигтай: хамгийн нарийн төвөгтэй холболтын замыг тест бүрээр шалгадаг.

Миний сурсан зүйлс

AI хос программисттай бүрэн хэмжээний апп бүтээх явцад би хэдэн зүйл сурсан:

Цаашдаа

Baby Monitor Timmy үргэлжлэн хөгжиж байна. iOS хувилбар тун удахгүй гарна; үүний дараа нэмэлт мэдрэгчийн функцууд болон аюулгүй байдлыг тасралтгүй бэхжүүлэх ажил хийнэ. Ажлын урсгал ижил байна: би чиглэл, хязгаарыг тогтоож, Copilot хурдан хэрэгжүүлж, шалгахад тусална.

Аюулгүй байдалтай холбоотой үндсэн бүрдлүүд одоо тодорхой заагтайгаар нийтэд нээлттэй baby-monitor-timmy-core репозитори-д байрладаг. Хослуулах, дохиолол болон арын системийн интерфэйстэй холбоотой архитектурын шийдвэрүүдийг мөн тэнд баримтжуулсан.


Бусад нийтлэл