ਕੋਡਿੰਗ ਏਜੰਟ Swift ਵਧੀਆ ਲਿਖਦੇ ਹਨ, ਪਰ ਉਹ ਇਸਨੂੰ ਪੂਰਾ ਨਹੀਂ ਕਰ ਸਕਦੇ
ਮੈਂ ਅਸਲ Swift ਅਤੇ Xcode ਕੰਮਾਂ 'ਤੇ AI ਕੋਡਿੰਗ ਏਜੰਟਾਂ ਦੀ ਪਰਖ ਕਰਨ ਵਿੱਚ ਕਈ ਮਹੀਨੇ ਬਿਤਾਏ। ਮੈਂ ਸਿਰਫ਼ ਸਧਾਰਨ ਡੈਮੋ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕੀਤੀ। ਮੈਂ ਉਹਨਾਂ ਨੂੰ ਬਿਲਡ ਟਾਰਗੇਟਸ (build targets) ਅਤੇ ਟੈਸਟਾਂ ਵਾਲੇ ਅਸਲ ਕੰਮ ਦਿੱਤੇ।
ਪਹਿਲਾ ਡਰਾਫਟ ਆਮ ਤੌਰ 'ਤੇ ਠੀਕ ਹੁੰਦਾ ਹੈ। ਇੱਕ ਸਮਰੱਥ ਮਾਡਲ ਅਜਿਹਾ ਕੋਡ ਲਿਖਦਾ ਹੈ ਜੋ ਦੇਖਣ ਵਿੱਚ ਸਹੀ ਲੱਗਦਾ ਹੈ। ਟਾਈਪਸ (types) ਸਹੀ ਹੁੰਦੇ ਹਨ। ਵਿਊਜ਼ (views) ਤਰਕਸੰਗਤ ਹੁੰਦੇ ਹਨ। ਜੇਕਰ ਸਿਰਫ਼ Swift ਲਿਖਣਾ ਹੀ ਇਕਲੌਤੀ ਸਮੱਸਿਆ ਹੁੰਦੀ, ਤਾਂ ਇਹ ਟੂਲ ਪੂਰੀ ਤਰ੍ਹਾਂ ਤਿਆਰ ਹੋ ਚੁੱਕੇ ਹੁੰਦੇ।
ਅਸਲ ਸਮੱਸਿਆ ਪਹਿਲੇ ਡਰਾਫਟ ਤੋਂ ਬਾਅਦ ਆਉਂਦੀ ਹੈ। ਇਹ ਉਸ ਕੋਡ ਵਿਚਕਾਰਲਾ ਪਾੜਾ ਹੈ ਜੋ ਪੂਰਾ ਲੱਗਦਾ ਹੈ ਅਤੇ ਉਹ ਕੋਡ ਜੋ ਅਸਲ ਵਿੱਚ ਸਹੀ ਹੈ।
Claude Code ਜਾਂ Codex ਵਰਗੇ ਆਧੁਨਿਕ ਟੂਲ ਕੰਪਾਈਲ ਐਰਰਸ (compile errors) ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਸੰਭਾਲ ਲੈਂਦੇ ਹਨ। ਉਹ ਤੁਹਾਨੂੰ ਅਜਿਹਾ ਕੋਡ ਨਹੀਂ ਦਿੰਦੇ ਜੋ ਬਿਲਡ ਹੋਣ ਵਿੱਚ ਅਸਫਲ ਹੋ ਜਾਵੇ। ਅਸਲ ਅਸਫਲਤਾਵਾਂ ਉਹ ਹੁੰਦੀਆਂ ਹਨ ਜੋ ਕੰਪਾਈਲਰ ਨਹੀਂ ਦੇਖ ਸਕਦਾ।
ਇਹ ਅਸਫਲਤਾਵਾਂ ਮੇਰਾ ਸਮਾਂ ਬਰਬਾਦ ਕਰਦੀਆਂ ਹਨ:
• Intent mismatch (ਇਰਾਦੇ ਦਾ ਮੇਲ ਨਾ ਹੋਣਾ): ਕੋਡ ਕੰਪਾਈਲ ਹੁੰਦਾ ਹੈ ਅਤੇ ਟੈਸਟ ਪਾਸ ਹੋ ਜਾਂਦੇ ਹਨ। ਹਾਲਾਂਕਿ, ਵਿਵਹਾਰ (behavior) ਗਲਤ ਹੁੰਦਾ ਹੈ। ਏਜੰਟ ਤੁਹਾਡੇ ਅਸਲ ਟੀਚੇ ਦੀ ਬਜਾਏ ਪਾਸ ਹੋ ਰਹੇ ਟੈਸਟ ਦੇ 'ਗ੍ਰੀਨ ਲਾਈਟ' ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ। ਇਸ ਕੋਲ ਇਰਾਦੇ ਦੀ ਜਾਂਚ ਕਰਨ ਦਾ ਕੋਈ ਤਰੀਕਾ ਨਹੀਂ ਹੁੰਦਾ।
• Concurrency races: ਕੋਡ ਬਿਲਡ ਤਾਂ ਸਾਫ਼ ਹੁੰਦਾ ਹੈ ਪਰ ਇਸ ਵਿੱਚ data races ਹੁੰਦੀਆਂ ਹਨ। ਇਹ ਸਿਰਫ਼ runtime ਦੌਰਾਨ ਹੀ ਦਿਖਾਈ ਦਿੰਦੀਆਂ ਹਨ। ਏਜੰਟ ਇੱਕ 'ਗ੍ਰੀਨ ਬਿਲਡ' ਦੇਖਦਾ ਹੈ ਅਤੇ ਅੱਗੇ ਵਧ ਜਾਂਦਾ ਹੈ। ਇਹਨਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਆਮ ਤੌਰ 'ਤੇ ਰੀ-ਡਿਜ਼ਾਈਨ (redesign) ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜੋ ਕਿ ਏਜੰਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਹਿੰਦਾ ਹੈ।
• Regression loops: ਏਜੰਟ ਇੱਕ ਬੱਗ (bug) ਨੂੰ ਠੀਕ ਕਰਦਾ ਹੈ ਪਰ ਦੂਜਾ ਤੋੜ ਦਿੰਦਾ ਹੈ। ਦੂਜੇ ਬੱਗ ਨੂੰ ਠੀਕ ਕਰਦੇ ਸਮੇਂ, ਇਹ ਪਹਿਲੇ ਫਿਕਸ ਨੂੰ ਖਤਮ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਹ ਇੱਕ ਅਜਿਹੇ ਲੂਪ ਵਿੱਚ ਫਸ ਜਾਂਦਾ ਹੈ ਜਿੱਥੇ ਇਹ ਦੋ ਟੁੱਟੀਆਂ ਹੋਈਆਂ ਸਥਿਤੀਆਂ ਦੇ ਵਿਚਕਾਰ ਘੁੰਮਦਾ ਰਹਿੰਦਾ ਹੈ। ਇਸ ਕੋਲ ਇਸ ਗੱਲ ਦੀ ਯਾਦਦਾਸ਼ਤ ਨਹੀਂ ਹੁੰਦੀ ਕਿ ਪਹਿਲਾਂ ਕੀ ਅਸਫਲ ਰਿਹਾ ਸੀ।
• Poor architecture (ਮਾੜੀ ਆਰਕੀਟੈਕਚਰ): ਏਜੰਟ ਅਜਿਹਾ ਕੋਡ ਲਿਖਦਾ ਹੈ ਜੋ ਫਰੇਮਵਰਕ (framework) ਦੇ ਵਿਰੁੱਧ ਜਾਂਦਾ ਹੈ। ਇਹ ਤੁਹਾਡੇ ਐਪ ਦੇ ਢਾਂਚੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਹ ਇੱਕ ਅਸਥਾਈ ਸਕ੍ਰਿਪਟ ਲਈ ਤਾਂ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ ਪਰ ਅਸਲ codebase ਵਿੱਚ ਅਸਫਲ ਰਹਿੰਦਾ ਹੈ।
ਇਹ ਭਾਸ਼ਾ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਨਹੀਂ ਹਨ। ਮਾਡਲ Swift ਜਾਣਦਾ ਹੈ। ਇਹ ਉਸ ਚੀਜ਼ ਨੂੰ miss ਕਰ ਦਿੰਦਾ ਹੈ ਜੋ ਕੰਪਾਈਲਰ ਨਹੀਂ ਦੇਖ ਸਕਦਾ। ਇਸਨੂੰ ਇਹ ਨਹੀਂ ਪਤਾ ਹੁੰਦਾ ਕਿ ਨਤੀਜਾ ਤੁਹਾਡੇ ਇਰਾਦੇ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ ਜਾਂ ਨਹੀਂ, ਜਾਂ ਕੀ ਢਾਂਚਾ ਪੇਸ਼ੇਵਰ (professional) ਹੈ।
ਇਹ ਲਾਗਤ ਨੂੰ tokens ਤੋਂ ਹਟਾ ਕੇ attention (ਧਿਆਨ) 'ਤੇ ਲਿਆ ਆਉਂਦਾ ਹੈ। ਇੱਕ ਅਜਿਹਾ ਏਜੰਟ ਜਿਸ ਲਈ ਤੁਹਾਨੂੰ ਹਰ ਕੁਝ ਮੋੜਾਂ ਬਾਅਦ ਉਸ 'ਤੇ ਨਜ਼ਰ ਰੱਖਣ ਦੀ ਲੋੜ ਪਵੇ, ਉਸਨੇ ਤੁਹਾਡਾ ਕੰਮ ਬਚਾਇਆ ਨਹੀਂ ਹੈ। ਉਸਨੇ ਲਿਖਣ ਦੇ ਕੰਮ ਨੂੰ ਨਿਗਰਾਨੀ (supervising) ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ ਹੈ।
ਮੈਂ ਮਾਡਲ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਲੂਪ ਨੂੰ ਬਦਲ ਕੇ ਆਪਣੇ ਨਤੀਜਿਆਂ ਵਿੱਚ ਸੁਧਾਰ ਕਰ ਰਿਹਾ ਹਾਂ। ਮੈਂ ਇਸ ਗੱਲ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦਾ ਹਾਂ ਕਿ ਏਜੰਟ ਕੀ ਚੈੱਕ ਕਰਦਾ ਹੈ ਅਤੇ ਕੀ ਯਾਦ ਰੱਖਦਾ ਹੈ।
ਕੀ ਇਹ ਤੁਹਾਡੇ ਅਨੁਭਵ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ? ਜਦੋਂ ਤੁਸੀਂ Apple platforms 'ਤੇ ਏਜੰਟ ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ ਇਹ ਕਿੱਥੇ ਫੇਲ੍ਹ ਹੁੰਦਾ ਹੈ? ਕੀ ਇਹ intent mismatches ਹਨ, runtime races ਹਨ, ਜਾਂ ਕੁਝ ਹੋਰ?
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
