Codex Fixing Codex: ਇੱਕ ਸਹਿਮਤੀ ਲੂਪ
ਮੈਂ ਇੱਕ ਅਜਿਹਾ ਏਜੰਟ ਲੂਪ ਬਣਾਇਆ ਹੈ ਜੋ ਸਿਰਫ਼ ਕੋਡ ਸੁਝਾਉਣ ਤੋਂ ਕਿਤੇ ਵੱਧ ਕਰਦਾ ਹੈ। ਇਹ ਕੋਡ ਲਿਖਦਾ ਹੈ, ਉਸਦੀ ਸਮੀਖਿਆ ਕਰਦਾ ਹੈ, ਅਤੇ ਆਪਣੇ ਪੁੱਲ ਰਿਕੁਐਸਟਾਂ (pull requests) ਨੂੰ ਖੁਦ ਮਰਜ ਕਰਦਾ ਹੈ।
ਇਸਦੀ ਜਾਂਚ ਕਰਨ ਲਈ, ਮੈਂ ਲੂਪ ਨੂੰ codex CLI ਦੇ ਇੱਕ ਫੋਰਕ (fork) ਵੱਲ ਮੋੜ ਦਿੱਤਾ। ਮੈਂ ਏਜੰਟਾਂ ਨੂੰ ਖੁਦ ਸੌਫਟਵੇਅਰ ਨੂੰ ਠੀਕ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਦਿੱਤੀ। ਇਹ ਇੱਕ ਸ਼ੁੱਧ ਪ੍ਰਯੋਗ ਹੈ। ਇਸ ਫੋਰਕ ਦੇ ਕੋਈ ਯੂਜ਼ਰਸ ਅਤੇ ਕੋਈ ਸਟਾਰਸ ਨਹੀਂ ਹਨ। ਇਹ ਇੱਕ ਮਕੈਨਿਜ਼ਮ ਬਾਰੇ ਹੈ, ਕਿਸੇ ਉਤਪਾਦ ਬਾਰੇ ਨਹੀਂ।
ਲੂਪ ਇਸ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ:
- ਇਨਟੇਕ (Intake): ਇੱਕ ਅੱਪਸਟ੍ਰੀਮ ਬੱਗ (upstream bug) ਫੋਰਕ ਵਿੱਚ ਇੱਕ ਇਸ਼ੂ (issue) ਬਣ ਜਾਂਦਾ ਹੈ। ਲੂਪ ਸਿਰਫ਼ ਉਹਨਾਂ ਛੋਟੇ, ਮਕੈਨੀਕਲ ਬੱਗਾਂ ਨੂੰ ਚੁਣਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਉਹ ਪੂਰਾ ਕਰ ਸਕਦਾ ਹੈ।
- ਸੋਲਵਰਜ਼ ਵਿਚਾਰ-ਵਟਾਂਦਰਾ ਕਰਦੇ ਹਨ (Solvers Argue): ਕਈ ਏਜੰਟ ਵੱਖ-ਵੱਖ ਫਿਕਸ ਪ੍ਰਸਤਾਵਿਤ ਕਰਦੇ ਹਨ। ਇੱਕ ਸੋਲਵਰ ਸਭ ਤੋਂ ਛੋਟਾ ਬਦਲਾਅ ਚਾਹੁੰਦਾ ਹੈ। ਦੂਜਾ ਸਾਫ਼ ਸਟ੍ਰਕਚਰ ਚਾਹੁੰਦਾ ਹੈ। ਤੀਜਾ ਕੋਡ ਨੂੰ ਜੋੜਨ ਦੀ ਬਜਾਏ ਉਸਨੂੰ ਡਿਲੀਟ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ। ਉਹ ਅਸਹਿਮਤ ਹੁੰਦੇ ਹਨ।
- ਜੱਜ ਫੈਸਲਾ ਕਰਦਾ ਹੈ (Judge Arbitrates): ਇੱਕ ਜੱਜ ਬਹਿਸ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ। ਜੇਕਰ ਸੋਲਵਰਜ਼ ਅਸਹਿਮਤ ਹੁੰਦੇ ਹਨ, ਤਾਂ ਜੱਜ ਉਹਨਾਂ ਨੂੰ ਹੋਰ ਰਾਊਂਡਾਂ ਲਈ ਵਾਪਸ ਭੇਜ ਦਿੰਦਾ ਹੈ। ਜੱਜ ਇਹ ਵੀ ਰਿਕਾਰਡ ਕਰਦਾ ਹੈ ਕਿ ਉਸਨੇ ਕੁਝ ਵਿਚਾਰਾਂ ਨੂੰ ਕਿਉਂ ਰੱਦ ਕੀਤਾ।
- ਲਾਗੂ ਕਰਨਾ ਅਤੇ ਮਰਜ ਕਰਨਾ (Implement and Merge): ਇੱਕ ਵਾਰ ਜਦੋਂ ਉਹ ਸਹਿਮਤੀ 'ਤੇ ਪਹੁੰਚ ਜਾਂਦੇ ਹਨ, ਤਾਂ ਲੂਪ ਪੈਚ ਲਿਖਦਾ ਹੈ, ਟੈਸਟ ਚਲਾਉਂਦਾ ਹੈ, ਅਤੇ ਇੱਕ PR ਖੋਲ੍ਹਦਾ ਹੈ। ਜੇਕਰ ਟੈਸਟ ਪਾਸ ਹੋ ਜਾਂਦੇ ਹਨ, ਤਾਂ ਇਹ ਆਪਣੇ ਆਪ ਨੂੰ ਮਰਜ ਕਰ ਲੈਂਦਾ ਹੈ।
ਤੁਸੀਂ ਇਸਨੂੰ ਇਸ਼ੂ #34 ਵਿੱਚ ਦੇਖ ਸਕਦੇ ਹੋ। ਏਜੰਟਾਂ ਨੇ ਕੰਕਰੈਂਸੀ ਬੱਗ (concurrency bug) 'ਤੇ ਬਹਿਸ ਕੀਤੀ। ਫੈਸਲੇ 'ਤੇ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਉਹਨਾਂ ਨੇ ਤਿੰਨ ਰਾਊਂਡਾਂ ਦੀ ਅਰਬਿਟਰੇਸ਼ਨ ਵਿੱਚੋਂ ਗੁਜ਼ਰਿਆ। ਲੂਪ ਨੇ ਕਿਸੇ ਇਨਸਾਨ ਦੁਆਰਾ ਕੋਡ ਦੀ ਇੱਕ ਲਾਈਨ ਵੀ ਟਾਈਪ ਕੀਤੇ ਬਿਨਾਂ ਇੱਕ ਅਸਲੀ ਫਿਕਸ ਅਤੇ ਰੈਗਰੈਸ਼ਨ ਟੈਸਟ ਤਿਆਰ ਕੀਤਾ।
ਇੱਕ ਦਿਲਚਸਪ ਨਤੀਜਾ PR #16 ਵਿੱਚ ਦੇਖਣ ਨੂੰ ਮਿਲਿਆ। ਲੂਪ ਰਿਪੋਰਟ ਕੀਤੇ ਗਏ ਬੱਗ ਨੂੰ ਦੁਬਾਰਾ ਪੈਦਾ (reproduce) ਨਹੀਂ ਕਰ ਸਕਿਆ। ਇੱਕ ਫੇਕ ਫਿਕਸ ਬਣਾਉਣ ਦੀ ਬਜਾਏ, ਇਸਨੇ ਸਿਰਫ਼ ਵਿਵਹਾਰ ਨੂੰ ਲਾਕ ਕਰਨ ਲਈ ਇੱਕ ਟੈਸਟ ਜੋੜਿਆ ਅਤੇ ਰੁਕ ਗਿਆ। ਇੱਕ ਅਜਿਹਾ ਲੂਪ ਜੋ ਜਾਣਦਾ ਹੈ ਕਿ ਕਦੋਂ ਪੈਚ ਨਹੀਂ ਕਰਨਾ ਹੈ, ਉਹ ਉਸ ਲੂਪ ਨਾਲੋਂ ਵਧੇਰੇ ਉਪਯੋਗੀ ਹੈ ਜੋ ਹਮੇਸ਼ਾ ਇੱਕ ਡਿਫ (diff) ਪੈਦਾ ਕਰਦਾ ਹੈ।
ਲੂਪ ਨੇ ਹੁਣ ਤੱਕ ਲਗਭਗ 16 PRs ਮਰਜ ਕੀਤੇ ਹਨ। ਇਹ UTF-8 ਹੈਂਡਲਿੰਗ ਅਤੇ ਕਮਾਂਡ ਫਿਕਸ ਵਰਗੇ ਛੋਟੇ ਕੰਮਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ। ਇਹ ਪੂਰੇ ਕੋਡਬੇਸ ਨੂੰ ਬਰਕਰਾਰ ਨਹੀਂ ਰੱਖਦਾ, ਪਰ ਇਹ ਸ਼ੁਰੂ ਤੋਂ ਅੰਤ ਤੱਕ ਛੋਟੇ, ਸੀਮਤ ਬੱਗਾਂ ਨੂੰ ਬੰਦ ਕਰਦਾ ਹੈ।
ਇਨਸਾਨ ਅਜੇ ਵੀ ਨਿਯਮ ਤੈਅ ਕਰਦੇ ਹਨ ਅਤੇ ਕੰਮ ਦੀ ਸਮੀਖਿਆ ਕਰਦੇ ਹਨ। ਅਸੀਂ ਅਜੇ ਵੀ ਹਰ PR ਦੀ ਜਾਂਚ ਕਰਦੇ ਹਾਂ। ਕੋਡ ਆਟੋਮੈਟਿਕ ਹੈ, ਪਰ ਧਿਆਨ ਇਨਸਾਨੀ ਹੈ।
ਤੁਸੀਂ ਪੂਰੀ ਪ੍ਰਕਿਰਿਆ GitHub 'ਤੇ ਦੇਖ ਸਕਦੇ ਹੋ। ਬਹਿਸ ਦੇਖਣ ਲਈ ਇਸ਼ੂ #34 ਅਤੇ PR #37 ਨੂੰ ਦੇਖੋ।
ਵਿਕਲਪਿਕ ਲਰਨਿੰਗ ਕਮਿਊਨਿਟੀ: https://t.me/GyaanSetuAi