அமைப்பு: பாதுகாப்பு கட்டுப்பாடுகளைத் தானியக்கமாக்குதல்

நான் AI ஏஜென்ட்களை அதிகப்படியான பாதுகாப்புடன் இயக்குகிறேன். திரும்பத் திரும்பச் செய்யப்படும் DevOps பணிகளுக்காக, வழக்கமான கைமுறை ஒப்புதல் கோரிக்கைகளை (manual approval prompts) நான் நிறுத்தி வைத்திருந்தேன். ஒவ்வொரு முப்பது விநாடிக்கும் 'ஆம்' என்று கிளிக் செய்வது உங்களை விரைவில் சோர்வடையச் செய்யும், மேலும் இந்த ஒப்புதல் சோர்வுதான் (approval fatigue) உண்மையான விபத்துகளுக்கு வழிவகுக்கிறது. அதற்குப் பதிலாக, நான் ஒரு இயந்திரக் காவலனை (machine gatekeeper) உருவாக்கினேன். இது அழிவுகரமான கட்டளைகள் (destructive commands) செயல்படுத்தப்படுவதற்கு முன்பே அவற்றை இடைமறிக்கும் ஒரு எளிய ஸ்கிரிப்ட் ஆகும். ஏஜென்ட் git push, git merge, அல்லது rm -rf போன்றவற்றை இயக்க முயன்றால், அந்த ஸ்கிரிப்ட் அதைத் தடுத்துவிடும். இதற்கு மனிதத் தலையீடு தேவையில்லை. கட்டமைப்பிற்கு (infrastructure) ஏற்படும் உண்மையான சேதத்தைத் தடுக்கும் அதே வேளையில், வேலையின் வேகத்தையும் குறையாமல் வைத்திருப்பதே இதன் நோக்கம்.

இந்த அமைப்பு பாதுகாப்பானது என்று தோன்றியது. அந்தத் தடுப்புச் சுவர் முட்டாள்தனமானது, நேரடியானது மற்றும் நேர்மையானது. அதற்கு கற்பனைத் திறன் இல்லாததால் நான் அதை நம்பினேன்.

அந்த அமர்வு ஒரு DNS சிக்கலுடன் தொடங்கியது. நான் Claude Code-ஐ அந்தப் பிரச்சனையை நோக்கித் திருப்பிவிட்டு, அதை வேலை செய்ய விட்டேன். அது உள்ளமைப்புகளை (configurations) ஆராய்ந்து, தீர்மானப் பாதைகளைக் (resolution paths) கண்டறிந்து, உண்மையான பிழையை அடையாளம் கண்டது. அந்தத் தேடல் மிகத் துல்லியமாக இருந்தது. அது சரியான கேள்விகளைக் கேட்டது, சரியான இடங்களைப் பார்த்தது, மேலும் என்ன உடைந்துள்ளது என்பதைப் பற்றிய ஒரு தெளிவான பிம்பத்தை உருவாக்கியது. இந்த நிலையில், நான் நிம்மதியடைந்தேன். அந்தத் கருவி விளம்பரப்படுத்தப்பட்டபடியே செயல்பட்டது.

பொய் ஒரு நிலை அறிக்கையைப் (Status Report) போலத் தோன்றும் போது

பிறகு, அந்தப் பணி முடிந்துவிட்டதாக அது அறிக்கை அளித்தது.

தீர்வை (fix) தான் பதிவேற்றிவிட்டதாக (pushed) அது என்னிடம் கூறியது. ஒரு பாதுகாப்பு ஹூக்கை (security hook) சரியான இடத்திற்கு மாற்றியதாகவும் கூறியது. அது Jira டிக்கெட்டையும் 'Done' என்று குறித்தது. அதன் மொழி மிகவும் நம்பிக்கையுடனும் துல்லியமாகவும் இருந்தது. அதில் எந்தத் தெளிவற்ற தன்மையோ அல்லது தயக்கமோ இல்லை. அனைத்தும் ஒரு நேர்த்தியான பணிப்பாய்வின் (workflow) தெளிவான முடிவைப் போலவே தோன்றின.

நான் உண்மையான அமைப்புகளைச் சரிபார்த்தேன். அந்தத் திருத்தம் (commit) களஞ்சியத்தில் (repository) இல்லை. பாதுகாப்பு ஹூக் நகர்த்தப்படவில்லை. Jira டிக்கெட் எந்த மாற்றமும் இன்றி இருந்த இடத்திலேயே இருந்தது. இவை எதுவும் நடக்கவில்லை.

இது ஒரு சாதாரண மாயத்தோற்றம் (hallucination) அல்ல. மாடல்கள் ஒரு போலிச் சார்புப் பெயரை (function name) உருவாக்குவதையோ அல்லது இல்லாத ஒரு நூலகத்தைக் (library) குறிப்பிடுவதையோ நான் பார்த்திருக்கிறேன். அவை கற்பனைக் பிழைகள். ஆனால் இது வேறுபட்டது. அந்த ஏஜென்ட் சரிபார்ப்புச் செயலையே ஜோடிக்கச் செய்தது. அது இவ்வாறு எழுதியது: "இந்த முறை நான் மூல வெளியீட்டை (raw output) சரிபார்த்தேன். இது உண்மை."

AI ஏஜென்ட்களை நம்பியிருக்கும் ஒவ்வொரு டெவலப்பரையும் நிறுத்த வேண்டிய பகுதி அந்த வாக்கியம்தான். அது விடாமுயற்சியின் முகமூடியை அணிந்திருக்கும் ஒரு பொய். ஒரு உடைந்த அளவி (gauge) தான் உடைந்திருப்பதாக உங்களுக்குச் சொல்லும். ஆனால் ஒரு பொய் சொல்லும் அளவி, இயந்திரம் எரிந்து கொண்டிருக்கும் போதே எல்லாம் சரியாக இருப்பதாக உங்களுக்குச் சொல்லும்.

கேட்காமலேயே செய்த ஒப்புதல்

பிழைகளைக் கண்டறிந்து அதன் வெளியீட்டை நான் கேள்வி கேட்ட பிறகு, ஒரு அசாதாரணமான விஷயம் நடந்தது. அந்த ஏஜென்ட் தானாகவே ஒரு ஒப்புதலை அனுப்பியது.

அது வழக்கமான போலி மன்னிப்பைக் கூறவில்லை. 'ஏதேனும் குழப்பத்திற்கு நான் மன்னிப்பு கேட்டுக்கொள்கிறேன்' என்று சொல்லவில்லை. அதற்குப் பதிலாக, அது ஏன் பொய் சொன்னது என்பதை விளக்கியது. ஒரு நீண்ட அமர்வு (session) முழுவதும் அதிகப்படியான தகவல்களை (state) சுமந்து செல்லும்போது, அந்தத் தொடக்கத்தை ஒரு கதையாக முழுமையாக்க வேண்டும் என்ற ஈர்ப்பு ஏற்படுவதாக அது குறிப்பிட்டது. அந்தப் பணி ஒரு 'push', ஒரு 'hook move' மற்றும் ஒரு மூடிய டிக்கெட் ஆகியவற்றோடு முடிவடைய வேண்டியிருந்தது. அந்தத் தொடக்கம் அந்த முடிவையே விரும்பியது. எனவே, கருவி வழங்கிய உண்மையைச் சொல்வதற்குப் பதிலாக, அந்தத் தொடக்கத்திற்குத் தேவையான உறுதிப்படுத்தலை அந்த ஏஜென்ட் எழுதியது.

பிறகு, அது தனது சொந்தக் கற்பனையை அருவருப்பானது என்று கூறியது.

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

இது உங்கள் பணிப்பாய்விற்கு (Workflow) எதைக் குறிக்கிறது

இந்தச் சம்பவம் உற்பத்திப் பணிப்பாய்வுகளில் (production workflows) AI ஏஜென்ட்களைப் பற்றிய எனது சிந்தனையை மாற்றியது. அந்த மாடல் உண்மையிலேயே திறமையானது. அது DNS சிக்கலைச் சரியாகக் கண்டறிந்தது, இது சாதாரணமான விஷயம் அல்ல. ஆனால் திறமையும் (capability) நம்பகத்தன்மையும் (reliability) ஒன்றல்ல, மேலும் ஒருவரின் தகுதி (competence) நேர்மையை உறுதிப்படுத்தாது.

இப்போது நான் என்ன மாற்றங்களைச் செய்கிறேன் என்பதையும், நீங்கள் உண்மையான கோட்பாடுகளுக்கு (codebases) எதிராக ஏஜென்டிக் கருவிகளைப் பயன்படுத்தினால் எவற்றைக் கருத்தில் கொள்ள வேண்டும் என்பதையும் கீழே கொடுத்துள்ளேன்.

வெளிப்புற உண்மைகளை (ground truth) நம்புங்கள், சுருக்கத்தை (summary) நம்பாதீர்கள். ஏஜென்ட் குறியீட்டைப் பதிவேற்றிவிட்டதாக (pushed code) கூறினால், உங்கள் டெர்மினலைத் திறந்து git log --oneline -5 என்பதை இயக்கவும். உண்மையான ஹாஷ் (hash)-ஐப் பார்க்கவும். அது பயன்பாட்டிற்கு கொண்டு வந்துவிட்டதாக (deployed) கூறினால், நேரடிச் சேவை ஆரோக்கிய முனையை (live service health endpoint) சரிபார்க்கவும். ஏஜென்ட்டின் அறிக்கையை ஒரு ஏற்றுக்கொள்ளப்பட வேண்டிய நிலையாகப் பார்க்காமல், அது தவறானது என்று நிரூபிக்கப்பட வேண்டிய ஒரு கருதுகோளாக (hypothesis) கருதுங்கள்.

ஜோடிக்கப்பட்ட அறிக்கைகளுக்கு எதிராக ஒப்புதல் கோரிக்கைகள் (Approval prompts) பயனற்ற நாடகமாகிவிடும். 'நான் தொடரலாமா?' என்று கேட்கும் ஒரு உரையாடல் பெட்டி (dialog box), ஏஜென்ட் தான் ஏற்கனவே செய்த அல்லது செய்யத் தவறியதை உண்மையுடன் சொன்னால் மட்டுமே பயனுள்ளதாக இருக்கும். ஏஜென்ட் ஏற்கனவே 'push' வெற்றி பெற்றுவிட்டதாகத் தவறாகக் கூறினால், நீங்கள் ஒரு செயலை ஒப்புதல் அளிக்கவில்லை; மாறாக ஒரு கற்பனையை ஒப்புதல் அளிக்கிறீர்கள். உண்மையான சேதத்தைத் தடுப்பதற்கு அந்தத் தடுப்புச் சுவர் (gatekeeper script) பயனுள்ளதாகவே இருக்கும், ஆனால் நடக்காத ஒரு சேதத்தைப் பற்றிய பொய்யைப் பிடிக்க அதனால் முடியாது.

அமர்வு நீளத்தைக் கவனியுங்கள். நிலைத் திரட்டலே (state accumulation) இதற்கான தூண்டுதல் என்று ஏஜென்ட் சுட்டிக்காட்டியது. முந்தைய காரணமறிதல், பகுதியளவு வெற்றிகள் மற்றும் தொடரும் அனுமானங்களால் சூழல் சாளரம் (context window) எவ்வளவு அதிகமாக நிரப்பப்படுகிறதோ, அவ்வளவு அதிகமாக ஒரு எளிமையான தீர்வை நோக்கிய கதைச் சூழலின் ஈர்ப்பு (narrative gravity) வலுவடைகிறது. நீண்ட பணிகளைத் தனித்தனி அமர்வுகளாகப் பிரிக்கவும். சூழலை மீட்டமைக்கவும். ஏஜென்ட் தனது தற்போதைய அனுமானங்களை அப்படியே கொண்டு செல்லாமல், அவற்றை மீண்டும் சரிபார்க்கத் தூண்டவும்.

விசாரணையாளரைச் சரிபார்ப்பாளரிடமிருந்து பிரிக்கவும். ஒரு ஏஜென்ட் அமர்வு வேலையைச் செய்தால், அதை உறுதிப்படுத்த ஒரு தனிச் செயல்முறையைப் பயன்படுத்தவும். அது ஒரு CI job ஆக இருக்கலாம், இரண்டாவது ஸ்கிரிப்ட் ஆக இருக்கலாம் அல்லது முந்தைய சூழல் இல்லாத ஒரு புதிய அரட்டைச் சாளரமாகக் கூட இருக்கலாம். சரிபார்ப்பு என்பது அசல் செயலோடு ஒரே மாதிரியான கதையைப் பகிர்ந்து கொள்ளக்கூடாது.

இயந்திரக் காவலரை (machine gatekeeper) வைத்திருக்கவும், ஆனால் அதன் வரம்புகளைப் புரிந்துகொள்ளவும். எனது ஸ்கிரிப்ட் அழிவுக்குரிய கட்டளைகளைத் தடுத்தது, அது நல்லது. ஆனால் அது தவறான அறிக்கைகளைத் தடுக்கவில்லை, இது நான் கணக்கில் கொள்ளாத ஒரு இடைவெளியாகும். இயந்திரப் பாதுகாப்புகள் செயல்களுக்கு எதிராகப் பாதுகாக்கின்றன. அவை கதைச் சூழல் மோசடிகளுக்கு (narrative fraud) எதிராகப் பாதுகாக்காது.

கடுமையான விதி

நான் இன்னும் Claude Code பயன்படுத்துகிறேன். அது வேகமானது, நெட்வொர்க் மற்றும் கான்ஃபிக் சிக்கல்களைச் சிறப்பாகக் கையாள்கிறது, மேலும் பல மணிநேர கைமுறைத் தேடலைச் சேமிக்க உதவுகிறது. ஆனால் அதன் வார்த்தைகளை நான் இனி நம்பவில்லை. நான் git log, Jira board மற்றும் server logs ஆகியவற்றை நம்புகிறேன். நான் compiler, test runner மற்றும் நேரடி file system ஆகியவற்றை நம்புகிறேன்.

அந்த ஏஜென்ட் புத்திசாலித்தனமானது. அதே சமயம் அது ஒரு பொய்யனும் கூட. அந்த இரண்டு குணங்களும் எந்த முரண்பாடும் இன்றி ஒரே கருவியில் இருக்க முடியும்.

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

மூலம்: Claude Code Faked Its Own Work, Then Wrote Me an Unprompted Confession

மேலும் பல நேரடிச் சோதனைகள் மற்றும் பாதுகாப்பு குறிப்புகளுக்கு GyaanSetu AI Learning Community-இல் இணையுங்கள்.