Baby Monitor Timmy ஒரு எளிய யோசனையில் தொடங்கியது: வீட்டில் தனியுரிமையை மதிக்கும் குழந்தை கண்காணிப்பான். கிளவுடில் பதிவுகள் இல்லை; குழந்தை அறையிலிருந்து வெளியே தேவையற்ற தரவுப் பாதைகளும் இல்லை. பலருக்குத் தெரியாத ஒன்று: சூரிக்கில் நான் Timmy-ஐ தனியாக உருவாக்குகிறேன், மேலும் GitHub Copilot எனது மிக வேகமான இணை நிரலாளர்.
மனிதர்-AI பணிப்பாய்வு
பணிப் பிரிவு தெளிவானது: அம்சங்களை நான் வரையறுக்கிறேன், முன்னுரிமைகளை நிர்ணயிக்கிறேன், கட்டமைப்புத் தீர்மானங்களை எடுக்கிறேன். செயல்படுத்துவதில் Copilot உதவுகிறது: குறியீடு எழுதுதல், சோதனைகள் சேர்த்தல், பிழைகளைச் சுருக்கிக் கண்டறிதல், வெளியீட்டு படிகளைத் தயாரித்தல்.
எனது வழக்கமான ஸ்பிரிண்ட் சுமார் இப்படித்தான் இருக்கும்:
- அம்ச விளக்கம்: இந்த அம்சம் என்ன செய்ய வேண்டும் என்பதை, விளிம்பு நிலைகள் மற்றும் கட்டுப்பாடுகளுடன் சேர்த்து விளக்குகிறேன்.
- செயல்படுத்தல்: Copilot குறியீட்டை முன்மொழிந்து, திட்டத்தில் ஏற்கனவே உள்ள நடைமுறைகளைப் பின்பற்றுகிறது.
- சோதனை: தானியங்கி end-to-end சோதனைகள் இரண்டு எமுலேட்டர்களில் இயங்கி, உண்மையான குழந்தை/பெற்றோர் இணைப்பைச் சரிபார்க்கின்றன.
- விநியோகம்: சோதனைகள் வெற்றியடைந்ததும், 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 குறியீட்டுத் தளத்தை ஆய்வு செய்து நான் சரிசெய்ய வேண்டிய ஆறு சிக்கல்களை கண்டறிந்தது:
- signaling தரவுக்கு உள்ளீட்டு சரிபார்ப்பு இல்லாமை
- ICE candidate கையாளுதலில் ஏற்படக்கூடிய race conditions
- சரியாகச் சுத்தம் செய்யப்படாத பழைய session தரவு
- அதிக அனுமதி வழங்கியிருந்த Firestore பாதுகாப்பு விதிகள்
- certificate pinning பரிசீலிக்கப்படாதது
- TURN credential flow-ல் போதிய பிழைக் கையாளுதல் இல்லாமை
ஆறு சிக்கல்களும் அதே ஸ்பிரிண்டில் சரிசெய்யப்பட்டன. இங்குதான் Copilot வலிமையாக உள்ளது: பல கோப்புகளைப் படித்தல், முறைகளை ஒப்பிடுதல், நான் நெருக்கமாக ஆய்வு செய்ய வேண்டிய இடங்களைக் குறித்தல்.
மீள்முறை ஸ்பிரிண்ட்கள்: செயலி எப்படி வளர்ந்தது
Timmy வேகமான ஆனால் தெளிவான வரம்புகளைக் கொண்ட ஸ்பிரிண்ட்கள் மூலம் வளர்ந்தது. சில முக்கிய கட்டங்கள்:
- v1.8: முழுமையான இணைத்தல் மறுவடிவமைப்பு — Firebase வழியாக 4 எழுத்துக்குறிகள் கொண்ட குறியீடும் ECDH P-256 முறையும் பழைய நேரடி-key அணுகுமுறையை மாற்றின.
- v1.10: பாதுகாப்பை வலுப்படுத்திய ஸ்பிரிண்ட் — ஆறு பலவீனங்களின் தணிக்கை மற்றும் சரிசெய்தல் சுழற்சி.
- v1.11: அனைத்துத் திரைகளிலும் இருண்ட பயன்முறை; அதோடு நீங்கள் இப்போது படித்துக்கொண்டிருக்கும் முகப்புப் பக்கமும் வலைப்பதிவும்.
- v1.12: பெற்றோர் திரையில் பெரிய மாற்றம், இரவுப் பார்வைப் பயன்முறை மற்றும் கேமரா படச்சட்டங்களைப் பகுப்பாய்வு செய்வதன் மூலம் அசைவைக் கண்டறிதல்.
ஒவ்வொரு ஸ்பிரிண்டும் இதே அடிப்படை முறையைப் பின்பற்றுகிறது: இலக்கை விளக்குதல், பரிந்துரைகளை மதிப்பாய்வு செய்தல், தானாகச் சோதித்தல், பிறகு சோதனையாளர்களுக்கு வெளியிடுதல்.
சாதனங்கள் முழுவதும் E2E சோதனை
ஒரே சாதனத்தில் குழந்தை கண்காணிப்பானை முறையாகச் சோதிக்க முடியாது. எனக்கு ஒரு குழந்தை சாதனமும் ஒரு பெற்றோர் சாதனமும் தேவை. திட்டம் ஒரே நேரத்தில் இயங்கும் இரண்டு Android எமுலேட்டர்களுடன் தொடங்கியது; இப்போது அந்தச் சுழற்சியுடன் உள்ளூர் iOS simulator மற்றும் உண்மையான சாதனச் சோதனைகளும் சேர்க்கப்பட்டுள்ளன. தானியங்கி Android சோதனை script இன்னும்:
- இரண்டு எமுலேட்டர்களிலும் செயலியை நிறுவுகிறது
- இரண்டு சாதனங்களிலும் இணைத்தல் செயல்முறையை வழிநடத்துகிறது
- ஆடியோ மற்றும் வீடியோ இணைப்புகள் ஏற்படுத்தப்பட்டுள்ளனவா எனச் சரிபார்க்கிறது
- push-to-talk, கேமரா கட்டுப்பாடு மற்றும் பிற அம்சங்களைச் சோதிக்கிறது
இரண்டு எமுலேட்டர்களும் ஒரே IP முகவரியைப் பகிர்வதால் (10.0.2.15), STUN வழியாக நேரடி peer-to-peer இணைப்பு சாத்தியமில்லை. ஒவ்வொரு சோதனை ஓட்டமும் Cloudflare TURN relay வழியாகச் செல்ல வேண்டும். அது சிரமமானதுதான்; ஆனால் பயனுள்ளது: மிகவும் சிக்கலான இணைப்புப் பாதை ஒவ்வொரு முறையும் சோதிக்கப்படுகிறது.
நான் கற்றுக்கொண்டவை
AI இணை நிரலாளருடன் ஒரு முழுமையான செயலியை உருவாக்கியதில் நான் சில விஷயங்களைக் கற்றுக்கொண்டேன்:
- கட்டமைப்பு இப்போது இன்னும் முக்கியம். தெளிவான நடைமுறைகளும் நன்கு ஆவணப்படுத்தப்பட்ட குறியீட்டுத் தளமும் AI தொடர்ந்து ஒரே மாதிரியான குறியீட்டை முன்மொழிய உதவுகின்றன. தெளிவின்மை விரைவில் அதிகச் செலவாகிறது.
- சோதனை தவிர்க்க முடியாதது. AI உருவாக்கிய குறியீட்டுக்கும் மனிதர் எழுதிய குறியீட்டுக்குச் சமமான கடுமையான சோதனை தேவை. தானியங்கி E2E சோதனைகள் கையால் செய்யும்போது தவறவிட எளிதான சிக்கல்களைக் கண்டுபிடித்தன.
- மனிதரின் மேற்பார்வை தொடர்கிறது. ஒவ்வொரு கட்டமைப்புத் தீர்மானமும், ஒவ்வொரு பாதுகாப்பு சமநிலையும், ஒவ்வொரு தயாரிப்பு வரம்பும் என்னிடமே இருக்கும். AI செயல்படுத்தலை வேகப்படுத்துகிறது; ஆனால் தீர்மானிக்கும் திறனை மாற்றாது.
- வேகம் தரத்தை மேம்படுத்த உதவுகிறது. அம்சங்கள் நாட்களுக்கு பதிலாக மணிநேரங்களில் வெளியிடப்படுவதால், மேம்படுத்தலுக்கும் பிழைதிருத்தத்துக்கும் அதிக மீள்சுழற்சிகள் கிடைக்கின்றன. வேகமானது தானாகவே நல்லது என்று அர்த்தமில்லை.
அடுத்து என்ன
Baby Monitor Timmy தொடர்ந்து மேம்பட்டு வருகிறது. iOS வெளியீடு அருகில் உள்ளது; அதன் பிறகு கூடுதல் சென்சார் அம்சங்களும் தொடர்ச்சியான பாதுகாப்பு வலுப்படுத்தலும் வரும். பணிப்பாய்வு இதேபோலவே இருக்கும்: திசையையும் வரம்புகளையும் நான் அமைக்கிறேன்; Copilot விரைவாகச் செயல்படுத்தவும் சரிபார்க்கவும் உதவுகிறது.
பாதுகாப்பு தொடர்பான அடிப்படை கூறுகள் இப்போது தெளிவான வரம்புகளின் கீழ் பொதுவில் கிடைக்கும் baby-monitor-timmy-core repository-ல் உள்ளன. இணைத்தல், signaling மற்றும் backend interfaces தொடர்பான கட்டமைப்புத் தீர்மானங்களும் அங்கே ஆவணப்படுத்தப்பட்டுள்ளன.