ਇੱਕ ਡਿਵੈਲਪਰ ਨੇ ਤਿੰਨ-ਪੱਧਰੀ ਕੋਡ-ਬੇਸ ਮੈਪ (code-base map) ਲਾਂਚ ਕੀਤਾ ਹੈ ਜੋ AI ਕੋਡਿੰਗ ਏਜੰਟਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਸੈਸ਼ਨਾਂ ਦੌਰਾਨ ਸਥਾਨ ਦਾ ਅਹਿਸਾਸ ਬਣਾਈ ਰੱਖਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।
AI ਏਜੰਟਾਂ ਨੂੰ ਮੈਪ ਦੀ ਲੋੜ ਕਿਉਂ ਹੈ
ਚੈਟ-ਅਧਾਰਤ ਕੋਡਿੰਗ ਸਹਾਇਕ (coding assistants) ਰੈਪੋਜ਼ੀਟਰੀ (repository) ਦਾ ਮਾਨਸਿਕ ਮਾਡਲ ਸਿਰਫ਼ ਉਦੋਂ ਤੱਕ ਬਣਾਉਂਦੇ ਹਨ ਜਦੋਂ ਤੱਕ ਪ੍ਰੋਂਪਟ ਵਿੰਡੋ ਖੁੱਲ੍ਹੀ ਰਹਿੰਦੀ ਹੈ। ਜਦੋਂ ਕੰਟੈਕਸਟ ਵਿੰਡੋ (context window) ਬੰਦ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਉਹ ਮਾਡਲ ਖ਼ਤਮ ਹੋ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਏਜੰਟ ਨੂੰ ਸਿੰਬਲ (symbols), ਇੰਪੋਰਟਸ (imports) ਅਤੇ ਫਾਈਲ ਰਿਸ਼ਤਿਆਂ ਨੂੰ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਤੋਂ ਲੱਭਣਾ ਪੈਂਦਾ ਹੈ। ਇਹ ਵਾਰ-ਵਾਰ ਹੋਣ ਵਾਲੀ ਪ੍ਰਕਿਰਿਆ ਕੰਪਿਊਟ ਸਾਈਕਲਜ਼ (compute cycles) ਨੂੰ ਬਰਬਾਦ ਕਰਦੀ ਹੈ ਅਤੇ ਜਦੋਂ ਕੋਈ ਡਿਵੈਲਪਰ ਫਾਈਲਾਂ ਦੇ ਵਿਚਕਾਰ ਬਦਲਦਾ ਹੈ ਜਾਂ ਕਿਸੇ ਬ੍ਰੇਕ ਤੋਂ ਬਾਅਦ ਪ੍ਰੋਜੈਕਟ 'ਤੇ ਵਾਪਸ ਆਉਂਦਾ ਹੈ, ਤਾਂ ਏਜੰਟ ਦੀ ਮਦਦ ਘੱਟ ਹੋ ਜਾਂਦੀ ਹੈ।
ਮੈਪ ਬਣਾਉਣ ਵਾਲੇ ਤਿੰਨ ਪੱਧਰ
- ਸਟ੍ਰਕਚਰਲ ਲੇਅਰ (Structural layer) – ਸਿੰਬਲ, ਫੰਕਸ਼ਨ ਕਾਲਜ਼ ਅਤੇ ਇੰਪੋਰਟ ਸਟੇਟਮੈਂਟਾਂ ਦੀ ਇੱਕ ਕੈਟਾਲੌਗ। ਇਹ ਸਥਿਰ ਸਵਾਲ ਦਾ ਜਵਾਬ ਦਿੰਦੀ ਹੈ ਕਿ "ਕੀ ਕਿਸ ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ।"
- ਟੈਂਪੋਰਲ ਲੇਅਰ (Temporal layer) – git ਤੋਂ ਪ੍ਰਾਪਤ ਸੰਕੇਤ ਜਿਵੇਂ ਕਿ ਫਾਈਲ ਚਰਨ ਰੇਟ (file churn rates) ਅਤੇ ਮਾਲਕੀ ਦਾ ਇਤਿਹਾਸ। ਇਹ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਕੋਡ ਦੇ ਕਿਹੜੇ ਹਿੱਸੇ ਸਭ ਤੋਂ ਵੱਧ ਬਦਲਦੇ ਹਨ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਕੌਣ ਬਦਲਦਾ ਹੈ।
- ਬਿਹੇਵੀਅਰਲ ਲੇਅਰ (Behavioral layer) – ਏਜੰਟ ਦੇ ਆਪਣੇ ਐਡਿਟ ਅਤੇ ਨੈਵੀਗੇਸ਼ਨ ਇਤਿਹਾਸ ਤੋਂ ਕੱਢਿਆ ਗਿਆ ਅਸਲ-ਦੁਨੀਆ ਦਾ ਵਰਤੋਂ ਪੈਟਰਨ। ਇਹ ਦੱਸਦਾ ਹੈ ਕਿ ਕੋਡਿੰਗ ਸੈਸ਼ਨ ਦੌਰਾਨ ਅਸਲ ਵਿੱਚ ਕਿਹੜੀਆਂ ਫਾਈਲਾਂ ਇਕੱਠੀਆਂ ਖੋਲ੍ਹੀਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਜਿਸ ਨਾਲ ਉਹ "ਅਸਲ ਗੁਆਂਢੀ" (true neighbors) ਸਾਹਮਣੇ ਆਉਂਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ ਸਟੈਟਿਕ ਐਨਾਲਸਿਸ (static analysis) ਨਹੀਂ ਲੱਭ ਸਕਦਾ।
ਬਿਹੇਵੀਅਰਲ ਲੇਅਰ ਸਭ ਤੋਂ ਵੱਧ ਮਹੱਤਵ ਰੱਖਦੀ ਹੈ ਕਿਉਂਕਿ ਇਹ ਦਰਸਾਉਂਦੀ ਹੈ ਕਿ ਡਿਵੈਲਪਰ (ਅਤੇ ਏਜੰਟ) ਅਸਲ ਵਿੱਚ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ, ਨਾ ਕਿ ਸਿਰਫ਼ ਇਹ ਕਿ ਕੋਡ ਕਿਵੇਂ ਜੁੜਿਆ ਹੋਇਆ ਹੈ।
ਏਜੰਟ ਨੂੰ ਮੈਪ ਦੇਣ ਦੇ ਦੋ ਤਰੀਕੇ
- ਐਂਬੀਅੰਟ ਪਾਥ (Ambient Path) – ਹਰ ਇੰਟਰੈਕਸ਼ਨ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਇੱਕ ਸੰਖੇਪ ਸਾਰ। ਇਹ ਏਜੰਟ ਨੂੰ ਬਿਨਾਂ ਕਿਸੇ ਵਾਧੂ ਕਾਲ ਦੇ ਤੁਰੰਤ ਇੱਕ "ਤੁਸੀਂ X ਮੋਡਿਊਲ ਵਿੱਚ ਹੋ, ਇਹ ਸਿੰਬਲ ਨੇੜੇ ਹਨ" ਵਰਗਾ ਸਨੈਪਸ਼ੌਟ ਦਿੰਦਾ ਹੈ।
- ਡੀਪ ਪਾਥ (Deep Path) – ਲੋੜ ਅਨੁਸਾਰ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਕੁਐਰੀ ਟੂਲਸ (query tools) ਜਿਨ੍ਹਾਂ ਨੂੰ ਏਜੰਟ ਵਧੇਰੇ ਵਿਸਤਾਰ ਦੀ ਲੋੜ ਹੋਣ 'ਤੇ ਵਰਤ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਅਕਸਰ ਇਕੱਠੀਆਂ ਬਦਲਣ ਵਾਲੀਆਂ ਫਾਈਲਾਂ ਦੀ ਸੂਚੀ ਜਾਂ ਹਾਲੀਆ ਮਾਲਕੀ ਦੀ ਟਾਈਮਲਾਈਨ।
ਐਂਬੀਅੰਟ ਅਤੇ ਡੀਪ ਜਾਣਕਾਰੀ ਨੂੰ ਵੱਖ ਰੱਖਣ ਨਾਲ ਰੁਟੀਨ ਪ੍ਰੋਂਪਟ ਹਲਕਾ ਰਹਿੰਦਾ ਹੈ ਅਤੇ ਲੋੜ ਪੈਣ 'ਤੇ ਡੂੰਘਾਈ ਵੀ ਮਿਲਦੀ ਹੈ।
ਡਿਜ਼ਾਈਨ ਨਿਯਮ ਜੋ ਸਿਸਟਮ ਨੂੰ ਹਲਕਾ ਰੱਖਦੇ ਹਨ
- ਭਾਰੀ ਲੈਂਗੂਏਜ ਸਰਵਰਾਂ (language servers) ਨੂੰ ਛੱਡ ਦਿਓ। ਮੈਪ ਪੂਰੇ ਟਾਈਪ ਇਨਫਰੈਂਸ (type inference) ਦੀ ਬਜਾਏ ਸ਼ੈਲੋ ਪਾਰਸਿੰਗ (shallow parsing) 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਮਕਸਦ ਮੈਚੋਰ ਸਟੈਟਿਕ ਐਨਾਲਾਈਜ਼ਰਾਂ ਨਾਲੋਂ ਬਿਹਤਰ ਇੰਜਣ ਬਣਾਉਣਾ ਨਹੀਂ ਹੈ, ਸਗੋਂ ਬਿਹੇਵੀਅਰਲ ਇਨਸਾਈਟ (behavioral insight) ਨਾਲ ਉਹਨਾਂ ਨੂੰ ਪੂਰਾ ਕਰਨਾ ਹੈ।
- ਗ੍ਰਾਫ ਨੂੰ ਪ੍ਰੋਜੈਕਟ ਤੱਕ ਸੀਮਤ ਰੱਖੋ। ਸਿਸਟਮ ਵੱਖ-ਵੱਖ ਰੈਪੋਜ਼ੀਟਰੀਆਂ ਵਿੱਚ ਇੱਕ ਗਲੋਬਲ ਡਿਪੈਂਡੈਂਸੀ ਗ੍ਰਾਫ (dependency graph) ਨਹੀਂ ਬਣਾਉਂਦਾ। ਇਹ ਸੀਮਾਵਾਂ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ ਘਟਾਉਂਦੀਆਂ ਹਨ ਅਤੇ ਅੱਪਡੇਟਸ ਦੀ ਰਫ਼ਤਾਰ ਵਧਾਉਂਦੀਆਂ ਹਨ।
- ਮੌਜੂਦਾ ਮੈਮੋਰੀ ਸਟੋਰ ਦੀ ਮੁੜ ਵਰਤੋਂ ਕਰੋ। ਫਾਈਲ-ਬਦਲਾਅ ਲੌਗ ਏਜੰਟ ਦੇ ਆਪਣੇ ਟੂਲ ਕਾਲਜ਼ ਦੇ ਮੈਮੋਰੀ ਤੋਂ ਆਉਂਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਡੁਪਲੀਕੇਟ ਸ
