வலைப்பதிவு

GitHub Copilot மூலம் Baby Monitor Timmy-ஐ நான் எப்படி உருவாக்குகிறேன்

AI எனது வேகத்தை அதிகரிக்கிறது. ஆனால் Timmy-க்கான பொறுப்பு என்னிடமே உள்ளது.

Baby Monitor Timmy ஒரு எளிய யோசனையில் தொடங்கியது: வீட்டில் தனியுரிமையை மதிக்கும் குழந்தை கண்காணிப்பான். கிளவுடில் பதிவுகள் இல்லை; குழந்தை அறையிலிருந்து வெளியே தேவையற்ற தரவுப் பாதைகளும் இல்லை. பலருக்குத் தெரியாத ஒன்று: சூரிக்கில் நான் Timmy-ஐ தனியாக உருவாக்குகிறேன், மேலும் GitHub Copilot எனது மிக வேகமான இணை நிரலாளர்.

மனிதர்-AI பணிப்பாய்வு

பணிப் பிரிவு தெளிவானது: அம்சங்களை நான் வரையறுக்கிறேன், முன்னுரிமைகளை நிர்ணயிக்கிறேன், கட்டமைப்புத் தீர்மானங்களை எடுக்கிறேன். செயல்படுத்துவதில் Copilot உதவுகிறது: குறியீடு எழுதுதல், சோதனைகள் சேர்த்தல், பிழைகளைச் சுருக்கிக் கண்டறிதல், வெளியீட்டு படிகளைத் தயாரித்தல்.

எனது வழக்கமான ஸ்பிரிண்ட் சுமார் இப்படித்தான் இருக்கும்:

  1. அம்ச விளக்கம்: இந்த அம்சம் என்ன செய்ய வேண்டும் என்பதை, விளிம்பு நிலைகள் மற்றும் கட்டுப்பாடுகளுடன் சேர்த்து விளக்குகிறேன்.
  2. செயல்படுத்தல்: Copilot குறியீட்டை முன்மொழிந்து, திட்டத்தில் ஏற்கனவே உள்ள நடைமுறைகளைப் பின்பற்றுகிறது.
  3. சோதனை: தானியங்கி end-to-end சோதனைகள் இரண்டு எமுலேட்டர்களில் இயங்கி, உண்மையான குழந்தை/பெற்றோர் இணைப்பைச் சரிபார்க்கின்றன.
  4. விநியோகம்: சோதனைகள் வெற்றியடைந்ததும், Android மற்றும் iOS பில்ட்கள் சரியான ஸ்டோர் மற்றும் சோதனை டிராக்குகளுக்காகத் தயாரிக்கப்படுகின்றன.

இந்தச் சுழற்சி அம்சங்களுக்கும் பிழைதிருத்தங்களுக்கும் மீண்டும் நடக்கிறது. ஒவ்வொரு வரியையும் நான் எழுதுவதில்லை; ஆனால் என்ன உருவாக்கப்படுகிறது, ஏன் அது உருவாக்கப்படுகிறது, ஒரு பரிந்துரை Timmy-க்கு பொருந்துமா என்பதையும் நான் முடிவு செய்கிறேன்.

கருத்திலிருந்து WebRTC வரை

முக்கிய தொழில்நுட்பப் பணி தொடக்கத்திலிருந்தே தெளிவாக இருந்தது: இரண்டு போன்களுக்கு இடையில் நிகழ்நேர ஆடியோவும் வீடியோவும். WebRTC தான் இயல்பான தேர்வு; ஆனால் அதை Flutter-உடன் ஒருங்கிணைப்பது எளிதல்ல: ICE candidates, SDP negotiation, TURN fallback மற்றும் DataChannels ஆகியவை சரியான வரிசையில் இணைந்து செயல்பட வேண்டும்.

இந்தப் பகுதிகளை படிப்படியாக இணைக்க Copilot உதவியது: peer connection-ஐ அமைத்தல், முக்கியமான வரிசையைச் சரியாக வைத்தல் (offer-க்கு முன் DataChannel, setRemoteDescription-க்கு முன் onTrack), மற்றும் signaling-ஐ Firebase Firestore-ல் அமைத்தல். அடுத்த கட்டத்திற்குச் செல்லும் முன் ஒவ்வொரு பகுதியும் இரண்டு எமுலேட்டர்களில் இயங்க வேண்டியது அவசியம்.

ECDH மூலம் பாதுகாப்பான இணைத்தல்

மிக முக்கியமான அம்சங்களில் ஒன்று பாதுகாப்பான இணைத்தல் அமைப்பு. மையச் சேவையகம் சாதனங்களின் அடையாளத்தை உறுதிப்படுத்தாமல், இரண்டு சாதனங்களும் ஒன்றுக்கொன்று நம்பிக்கையை ஏற்படுத்த வேண்டும். தீர்வு: Firebase வழியாக ECDH P-256 key exchange, அதனுடன் man-in-the-middle தாக்குதல்களைக் கண்டறியும் காட்சி சரிபார்ப்பு எண் (SAS).

குறியாக்கச் சங்கிலியை செயல்படுத்த Copilot உதவியது: key உருவாக்கம், public key பரிமாற்றம், shared secret பெறுதல், SAS கணக்கீடு மற்றும் பின்னர் வரும் எல்லா signaling தரவுகளுக்கும் AES-256-GCM குறியாக்கம். இணைத்தல் key-ஐ backend-க்கு நான் அனுப்புவதில்லை; அதன் SHA-256 hash மட்டுமே Firestore ஆவண அடையாளமாகப் பயன்படுத்தப்படுகிறது.

பாதுகாப்பு தணிக்கை: பலவீனங்களைக் கண்டறிந்து சரிசெய்தல்

AI உதவியுடன் மேம்படுத்துவது எனக்கு வேகமாகத் தட்டச்சு செய்வது மட்டுமல்ல. முறையாகப் பிழைகளைத் தேடவும் இது உதவுகிறது. கவனம் செலுத்திய பாதுகாப்புத் தணிக்கை ஸ்பிரிண்டில், Copilot குறியீட்டுத் தளத்தை ஆய்வு செய்து நான் சரிசெய்ய வேண்டிய ஆறு சிக்கல்களை கண்டறிந்தது:

ஆறு சிக்கல்களும் அதே ஸ்பிரிண்டில் சரிசெய்யப்பட்டன. இங்குதான் Copilot வலிமையாக உள்ளது: பல கோப்புகளைப் படித்தல், முறைகளை ஒப்பிடுதல், நான் நெருக்கமாக ஆய்வு செய்ய வேண்டிய இடங்களைக் குறித்தல்.

மீள்முறை ஸ்பிரிண்ட்கள்: செயலி எப்படி வளர்ந்தது

Timmy வேகமான ஆனால் தெளிவான வரம்புகளைக் கொண்ட ஸ்பிரிண்ட்கள் மூலம் வளர்ந்தது. சில முக்கிய கட்டங்கள்:

ஒவ்வொரு ஸ்பிரிண்டும் இதே அடிப்படை முறையைப் பின்பற்றுகிறது: இலக்கை விளக்குதல், பரிந்துரைகளை மதிப்பாய்வு செய்தல், தானாகச் சோதித்தல், பிறகு சோதனையாளர்களுக்கு வெளியிடுதல்.

சாதனங்கள் முழுவதும் E2E சோதனை

ஒரே சாதனத்தில் குழந்தை கண்காணிப்பானை முறையாகச் சோதிக்க முடியாது. எனக்கு ஒரு குழந்தை சாதனமும் ஒரு பெற்றோர் சாதனமும் தேவை. திட்டம் ஒரே நேரத்தில் இயங்கும் இரண்டு Android எமுலேட்டர்களுடன் தொடங்கியது; இப்போது அந்தச் சுழற்சியுடன் உள்ளூர் iOS simulator மற்றும் உண்மையான சாதனச் சோதனைகளும் சேர்க்கப்பட்டுள்ளன. தானியங்கி Android சோதனை script இன்னும்:

  1. இரண்டு எமுலேட்டர்களிலும் செயலியை நிறுவுகிறது
  2. இரண்டு சாதனங்களிலும் இணைத்தல் செயல்முறையை வழிநடத்துகிறது
  3. ஆடியோ மற்றும் வீடியோ இணைப்புகள் ஏற்படுத்தப்பட்டுள்ளனவா எனச் சரிபார்க்கிறது
  4. push-to-talk, கேமரா கட்டுப்பாடு மற்றும் பிற அம்சங்களைச் சோதிக்கிறது

இரண்டு எமுலேட்டர்களும் ஒரே IP முகவரியைப் பகிர்வதால் (10.0.2.15), STUN வழியாக நேரடி peer-to-peer இணைப்பு சாத்தியமில்லை. ஒவ்வொரு சோதனை ஓட்டமும் Cloudflare TURN relay வழியாகச் செல்ல வேண்டும். அது சிரமமானதுதான்; ஆனால் பயனுள்ளது: மிகவும் சிக்கலான இணைப்புப் பாதை ஒவ்வொரு முறையும் சோதிக்கப்படுகிறது.

நான் கற்றுக்கொண்டவை

AI இணை நிரலாளருடன் ஒரு முழுமையான செயலியை உருவாக்கியதில் நான் சில விஷயங்களைக் கற்றுக்கொண்டேன்:

அடுத்து என்ன

Baby Monitor Timmy தொடர்ந்து மேம்பட்டு வருகிறது. iOS வெளியீடு அருகில் உள்ளது; அதன் பிறகு கூடுதல் சென்சார் அம்சங்களும் தொடர்ச்சியான பாதுகாப்பு வலுப்படுத்தலும் வரும். பணிப்பாய்வு இதேபோலவே இருக்கும்: திசையையும் வரம்புகளையும் நான் அமைக்கிறேன்; Copilot விரைவாகச் செயல்படுத்தவும் சரிபார்க்கவும் உதவுகிறது.

பாதுகாப்பு தொடர்பான அடிப்படை கூறுகள் இப்போது தெளிவான வரம்புகளின் கீழ் பொதுவில் கிடைக்கும் baby-monitor-timmy-core repository-ல் உள்ளன. இணைத்தல், signaling மற்றும் backend interfaces தொடர்பான கட்டமைப்புத் தீர்மானங்களும் அங்கே ஆவணப்படுத்தப்பட்டுள்ளன.


மேலும் கட்டுரைகள்