AI Autopilot Freeze: టైమ్స్టాంప్లపై ఆధారపడటంలోని ప్రమాదం
మా AI ఏజెంట్లు 24/7 పనిచేస్తాయి.
అవి అవసరాలను (requirements) టాస్క్లుగా మారుస్తాయి. కోడ్ రాస్తాయి. pull requests ఓపెన్ చేస్తాయి. ఒక AI రివ్యూయర్ ఆ పనిని ఆమోదిస్తారు. ఆ తర్వాత, సిస్టమ్ ఆటోమేటిక్గా కోడ్ను मर्ज చేస్తుంది.
ఒక రోజు ఉదయం, మూడు రోజుల నుండి ఒక్క టాస్క్ కూడా పూర్తి కాలేదని మేము గమనించాము.
సిస్టమ్ అంతా ఆరోగ్యంగానే కనిపిస్తోంది. ప్రతి కాంపోనెంట్ గ్రీన్ స్టేటస్ను రిపోర్ట్ చేస్తోంది. ప్లాన్లు జనరేట్ అవుతున్నాయి. ఏజెంట్లు పనిచేస్తున్నాయి. రివ్యూయర్ ఆమోదిస్తున్నారు. అక్కడ లోపించినది కేవలం 'మెర్జ్' (merge) మాత్రమే.
దీనికి కారణం మేము స్వయంగా రూపొందించుకున్న 'ఫ్రెష్నెస్ చెక్' (freshness check).
మేము ఒక నిర్దిష్ట లోపాన్ని నివారించాలనుకున్నాము. ఒక రివ్యూయర్ కోడ్ను ఆమోదించి, ఆ తర్వాత మార్పులు కోరితే, ఆ కోడ్ను మేము మెర్జ్ చేయకూడదని అనుకున్నాము. దీనిని పరిష్కరించడానికి, మేము సిస్టమ్కు ఇలా చెప్పాము: "మేము వేచి ఉండటం ప్రారంభించిన తర్వాత జరిగిన రివ్యూలను మాత్రమే నమ్మండి."
సిస్టమ్ రికవరీ సమయంలో ఈ లాజిక్ విఫలమైంది.
సిస్టమ్ రీస్టార్ట్ అయినా లేదా ఒక టాస్క్ను కొత్త సర్వర్కు మార్చినా, అది "start waiting" టైమ్స్టాంప్ను ప్రస్తుత సమయానికి రీసెట్ చేసేది.
ఒకవేళ రివ్యూయర్ ఉదయం 10:00 గంటలకు కోడ్ను ఆమోదిస్తే, కానీ సిస్టమ్ 10:30 గంటలకు రీస్టార్ట్ అయితే, సిస్టమ్ ఆ 10:00 గంటల ఆమోదాన్ని విస్మరిస్తుంది. ఆ ఆమోదం చాలా పాతదని అది భావిస్తుంది.
ఆ ఆమోదం GitHubలో ఇంకా ఉంది. కానీ మా కోడ్ దానిని గుర్తించలేకపోయింది. సిస్టమ్ శాశ్వత డెడ్లాక్ (deadlock) స్థితిలోకి వెళ్లిపోయింది.
దీని నుండి నేను మూడు కఠినమైన పాఠాలను నేర్చుకున్నాను:
బాహ్య స్థితిని (external state) ఒక స్నాప్షాట్గా పరిగణించండి, ఈవెంట్గా కాదు. "ఏదైనా కొత్తగా జరిగిందా?" అని అడగకండి. బదులుగా, "ప్రస్తుత స్థితి ఏమిటి?" అని అడగండి. మీరు ప్రస్తుత స్థితిని చూస్తే, రీస్టార్ట్లతో సంబంధం ఉండదు.
రికవరీ సమయంలో టైమ్స్టాంప్లను రీసెట్ చేయకండి. రీట్రై (retry) సమయంలో "started at" సమయాన్ని రీసెట్ చేస్తే, ఆ సమయానికి ముందు జరిగిన వాస్తవాలన్నింటినీ మీరు తుడిచివేసినట్లు అవుతుంది. అసలు పని మారినప్పుడు మాత్రమే టైమ్స్టాంప్లను రీసెట్ చేయండి.
టాస్క్లు ఎక్కడ ఆగిపోతున్నాయో పర్యవేక్షించండి, అవి పూర్తయ్యాయో లేదో మాత్రమే కాదు. "done" కౌంట్ మీకు సమస్య ఉందని చెబుతుంది. కానీ టాస్క్లు ఏ దశలో ఉన్నాయో తెలుసుకోవడం వల్ల సమస్య ఎక్కడ ఉందో తెలుస్తుంది. 28 టాస్క్లు "wait for review" దశలో ఆగిపోవడం మేము గమనించడం వల్లే ఈ సమస్యను గుర్తించగలిగాము.
తప్పుడు నియమాన్ని అనుసరిస్తున్న లైవ్ ప్రాసెస్ ఎప్పటికీ హెల్త్ చెక్లో కనిపించదు. అది ప్రోగ్రామ్ చేసిన విధంగానే పనిచేస్తుంది కాబట్టి ఆరోగ్యంగానే కనిపిస్తుంది.
మీరు ఆటోమేటెడ్ సిస్టమ్లను నిర్మిస్తుంటే, కేవలం లోపాల కోసం మాత్రమే చూడకండి. మీ ప్రాసెస్ లు ఎక్కడ పేరుకుపోతున్నాయో గమనించండి.
Optional learning community: https://t.me/GyaanSetuAi
