కోడింగ్ ఏజెంట్లు Swiftని బాగా రాస్తారు, కానీ వాటిని పూర్తి చేయలేవు

నేను నిజమైన Swift మరియు Xcode పనులపై AI కోడింగ్ ఏజెంట్లను పరీక్షించడానికి నెలల సమయం వెచ్చించాను. నేను కేవలం సాధారణ డెమోలను ఉపయోగించలేదు. నేను వాటికి బిల్డ్ టార్గెట్లు (build targets) మరియు టెస్ట్‌లతో కూడిన నిజమైన పనులను ఇచ్చాను.

మొదటి డ్రాఫ్ట్ సాధారణంగా బాగుంటుంది. సమర్థవంతమైన మోడల్ సరిగ్గా ఉన్నట్లు కనిపించే కోడ్‌ను రాస్తుంది. టైప్స్ (types) సరిగ్గా ఉంటాయి. వ్యూస్ (views) అర్థవంతంగా ఉంటాయి. ఒకవేళ Swift రాయడమే ఏకైక సమస్య అయితే, ఈ టూల్స్ పని పూర్తయినట్లే అయ్యేది.

అసలు సమస్య మొదటి డ్రాఫ్ట్ తర్వాత వస్తుంది. పూర్తయినట్లు కనిపించే కోడ్‌కు మరియు నిజంగా సరైన కోడ్‌కు మధ్య ఉన్న వ్యత్యాసమే అసలు సమస్య.

Claude Code లేదా Codex వంటి ఆధునిక టూల్స్ కంపైల్ ఎర్రర్లను (compile errors) బాగా హ్యాండిల్ చేస్తాయి. అవి బిల్డ్ అవ్వని కోడ్‌ను మీకు ఇవ్వవు. కానీ కంపైలర్‌కు కనిపించని లోపాలే అసలైన వైఫల్యాలు.

ఈ వైఫల్యాలు నా సమయాన్ని వృథా చేస్తున్నాయి:

• ఉద్దేశ్య వ్యత్యాసం (Intent mismatch): కోడ్ కంపైల్ అవుతుంది మరియు టెస్ట్‌లు పాస్ అవుతాయి. అయినప్పటికీ, దాని ప్రవర్తన తప్పుగా ఉంటుంది. ఏజెంట్ మీ అసలు లక్ష్యం కంటే, పాస్ అయిన టెస్ట్ యొక్క 'గ్రీన్ లైట్'ను మాత్రమే అనుసరిస్తుంది. ఉద్దేశ్యాన్ని (intent) తనిఖీ చేయడానికి దానికి మార్గం లేదు.

• కన్కరెన్సీ రేసెస్ (Concurrency races): కోడ్ క్లీన్‌గా బిల్డ్ అవుతుంది కానీ డేటా రేసెస్ (data races) ఉంటాయి. ఇవి రన్‌టైమ్ (runtime) సమయంలో మాత్రమే కనిపిస్తాయి. ఏజెంట్ గ్రీన్ బిల్డ్‌ను చూసి ముందుకు వెళ్ళిపోతుంది. వీటిని సరిచేయడానికి సాధారణంగా రీడిజైన్ అవసరం, కానీ ఏజెంట్ అది చేయలేకపోతుంది.

• రిగ్రెషన్ లూప్స్ (Regression loops): ఏజెంట్ ఒక బగ్‌ను సరిచేస్తుంది కానీ మరొకటి చేస్తుంది. రెండవ బగ్‌ను సరిచేసే క్రమంలో, అది మొదటి పరిష్కారాన్ని రద్దు చేస్తుంది. ఇది రెండు విఫలమైన స్థితిగతుల మధ్య ఊగిసలాడే లూప్‌లోకి వెళ్తుంది. గతంలో ఏమి విఫలమైందో గుర్తుంచుకునే సామర్థ్యం దానికి లేదు.

• బలహీనమైన ఆర్కిటెక్చర్ (Poor architecture): ఏజెంట్ ఫ్రేమ్‌వర్క్‌కు విరుద్ధంగా కోడ్‌ను రాస్తుంది. ఇది మీ యాప్ స్ట్రక్చర్‌ను విస్మరిస్తుంది. ఇది తాత్కాలిక స్క్రిప్ట్‌లకు పని చేస్తుంది కానీ నిజమైన కోడ్‌బేస్‌లో విఫలమవుతుంది.

ఇవి భాషకు సంబంధించిన సమస్యలు కావు. మోడల్‌కు Swift తెలుసు. కంపైలర్‌కు కనిపించని అంశాలను అది గుర్తించలేకపోతోంది. ఫలితం మీ ఉద్దేశ్యానికి సరిపోతుందో లేదో లేదా స్ట్రక్చర్ ప్రొఫెషనల్‌గా ఉందో లేదో దానికి తెలియదు.

ఇది ఖర్చును టోకెన్ల నుండి అటెన్షన్ (attention) వైపు మళ్లిస్తుంది. ప్రతి కొన్ని స్టెప్స్‌కు మీరు దానిని గమనించాల్సి వస్తే, ఆ ఏజెంట్ మీ పనిని తగ్గించలేదు. అది కోడింగ్ రాయడాన్ని పర్యవేక్షించడం (supervising) గా మార్చేసింది.

మోడల్ చుట్టూ ఉన్న లూప్‌ను మార్చడం ద్వారా నేను నా ఫలితాలను మెరుగుపరుచుకుంటున్నాను. ఏజెంట్ దేనిని తనిఖీ చేస్తుంది మరియు దేనిని గుర్తుంచుకుంటుంది అనే దానిపై నేను దృష్టి పెడుతున్నాను.

ఇది మీ అనుభవంతో సరిపోతుందా? మీరు Apple ప్లాట్‌ఫారమ్‌లపై ఏజెంట్లను రన్ చేసినప్పుడు, అవి ఎక్కడ విఫలమవుతున్నాయి? ఉద్దేశ్య వ్యత్యాసాలా, రన్‌టైమ్ రేసెస్సా లేదా మరేదైనా?

Source: https://dev.to/jbrackin/coding-agents-are-good-at-writing-swift-theyre-bad-at-finishing-it-md3

Optional learning community: https://t.me/GyaanSetuAi