ਮੇਰੇ ਕੋਡਿੰਗ ਏਜੰਟ ਨੇ ਸੈਸ਼ਨ ਯਾਦ ਰੱਖੇ, ਕੰਮ ਨਹੀਂ
ਇੱਕ ਕੋਡਿੰਗ ਏਜੰਟ ਇੱਕ ਥ੍ਰੈਡ (thread) ਨੂੰ ਜਿਉਂਦਾ ਰੱਖ ਸਕਦਾ ਹੈ ਪਰ ਫਿਰ ਵੀ ਭੁੱਲਣ ਵਾਲਾ ਮਹਿਸੂਸ ਹੋ ਸਕਦਾ ਹੈ।
ਮੈਨੂੰ CliGate ਬਣਾਉਂਦੇ ਸਮੇਂ ਇਸ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ। ਮੈਂ ਸੈਸ਼ਨ ਦੀ ਨਿਰੰਤਰਤਾ (session continuity) ਨੂੰ ਠੀਕ ਕਰ ਦਿੱਤਾ, ਪਰ ਵਾਰ-ਵਾਰ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਕੰਮ ਅਜੇ ਵੀ ਬਹੁਤ ਹੌਲੀ ਸਨ।
ਏਜੰਟ ਨੇ ਗੱਲਬਾਤ ਨੂੰ ਯਾਦ ਰੱਖਿਆ, ਪਰ ਉਸਨੇ ਕੰਮ ਨੂੰ ਯਾਦ ਨਹੀਂ ਰੱਖਿਆ।
ਸੈਸ਼ਨ ਦੀ ਨਿਰੰਤਰਤਾ ਇੱਕ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਦੀ ਹੈ। ਇਹ ਅਗਲੇ ਕਮਾਂਡਾਂ (follow-up commands) ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ ਜਿਵੇਂ ਕਿ:
- continue
- ਇਸ ਫਾਈਲ ਲਈ ਵੀ ਇਹੀ ਕਰੋ
- ਉਸਨੂੰ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ
ਇਹ ਉਪਯੋਗੀ ਹੈ। ਪਰ ਜਦੋਂ ਤੁਸੀਂ ਕਈ ਦਿਨਾਂ ਬਾਅਦ ਕਿਸੇ ਵਰਕਫਲੋ (workflow) ਨੂੰ ਦੁਬਾਰਾ ਕਰਦੇ ਹੋ, ਤਾਂ ਇਹ ਮਦਦ ਨਹੀਂ ਕਰਦਾ।
ਇੱਕ ਏਜੰਟ ਨੂੰ ਇਹ ਯਾਦ ਰੱਖਣ ਦੀ ਲੋੜ ਹੈ ਕਿ ਪਿਛਲੀ ਵਾਰ ਕੀ ਚੀਜ਼ ਸਫਲ ਰਹੀ ਸੀ। ਉਸਨੂੰ ਇਹ ਜਾਣਨ ਦੀ ਲੋੜ ਹੈ:
- ਕਿਹੜਾ ਬਟਨ ਕੰਮ ਕਰਦਾ ਹੈ
- ਕਿਹੜਾ ਕਦਮ ਰੁਕਾਵਟ (dead end) ਹੈ
- ਕਿਸ ਫੀਲਡ ਨੂੰ ਵਿਸ਼ੇਸ਼ ਸੰਭਾਲ ਦੀ ਲੋੜ ਹੈ
- ਕਿਹੜਾ ਨਿਯਮ ਤੁਸੀਂ ਹਮੇਸ਼ਾ ਲਾਗੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ
ਪਹਿਲੀ ਵਾਰ ਚਲਾਉਣਾ ਸਭ ਤੋਂ ਮਹਿੰਗਾ ਹੁੰਦਾ ਹੈ। ਇਹ ਉਹ ਸਮਾਂ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਏਜੰਟ ਖੋਜ ਕਰਦਾ ਹੈ ਅਤੇ ਉਹ ਵੇਰਵੇ ਲੱਭਦਾ ਹੈ ਜੋ ਤੁਹਾਡੇ ਪ੍ਰੋਂਪਟ (prompt) ਵਿੱਚ ਨਹੀਂ ਹੁੰਦੇ।
ਮੇਰੇ ਫਿਕਸ ਤੋਂ ਪਹਿਲਾਂ, ਇਹ ਵੇਰਵੇ ਸਿਰਫ਼ ਰੋਅ ਲੌਗਸ (raw logs) ਵਿੱਚ ਸਨ। ਏਜੰਟ ਕੋਲ ਇਤਿਹਾਸ ਸੀ, ਪਰ ਕੋਈ ਮੁੜ ਵਰਤੋਂ ਯੋਗ ਮੈਮੋਰੀ (reusable memory) ਨਹੀਂ ਸੀ। ਉਸਨੂੰ ਹਰ ਵਾਰ ਸਭ ਕੁਝ ਦੁਬਾਰਾ ਲੱਭਣਾ ਪੈਂਦਾ ਸੀ।
ਇਹ ਬੁੱਧੀਮਾਨਤਾ ਨਹੀਂ ਹੈ। ਇਹ ਇੱਕੋ ਡੀਬੱਗਿੰਗ (debugging) ਲਾਗਤ ਦੋ ਵਾਰ ਅਦਾ ਕਰਨਾ ਹੈ।
ਗਲਤ ਤਰੀਕਾ ਵਧੇਰੇ ਇਤਿਹਾਸ ਨੂੰ ਸੇਵ ਕਰਨਾ ਅਤੇ ਉਮੀਦ ਕਰਨਾ ਹੈ ਕਿ ਮਾਡਲ ਇਸਦੀ ਵਰਤੋਂ ਕਰੇਗਾ। ਇਹ ਸ਼ੋਰ (noise) ਪੈਦਾ ਕਰਦਾ ਹੈ।
ਇਸਦੀ ਬਜਾਏ, ਮੈਂ ਇੱਕ ਛੋਟੀ, ਮੁੜ ਵਰਤੋਂ ਯੋਗ ਮੈਮੋਰੀ ਲੇਅਰ (reusable memory layer) ਬਣਾਈ। ਮੈਂ ਇਹਨਾਂ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕੀਤਾ:
- ਪ੍ਰਕਿਰਿਆਵਾਂ (procedures)
- ਤੱਥ (facts)
- ਨਿਰਦੇਸ਼ (directives)
- ਹਵਾਲੇ (references)
ਮੈਂ ਜੋ ਕੁਝ ਵੀ ਹੋਇਆ ਉਸਨੂੰ ਸੇਵ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨੀ ਬੰਦ ਕਰ ਦਿੱਤੀ। ਮੈਂ ਉਹ ਸੇਵ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤਾ ਜੋ ਯਾਦ ਰੱਖਣਾ ਚਾਹੀਦਾ ਸੀ।
ਹੁਣ, ਸਹਾਇਕ (assistant) ਯਾਦ ਕਰਨ ਲਈ ਫਾਈਲ-ਅਧਾਰਤ ਮੈਮੋਰੀ ਲੇਅਰ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ:
- ਇੱਕ ਪ੍ਰਕਿਰਿਆ: ਸਭ ਤੋਂ ਵਧੀਆ ਕਦਮ ਅਤੇ ਜਾਣੇ-ਪਛਾਣੇ ਰੁਕਾਵਟਾਂ
- ਇੱਕ ਤੱਥ: ਇੱਕ URL ਜਾਂ ਇੱਕ ਖਾਸ ਸੈਟਿੰਗ
- ਇੱਕ ਨਿਰਦੇਸ਼: ਤੁਸੀਂ ਚੀਜ਼ਾਂ ਨੂੰ ਕਿਵੇਂ ਕਰਵਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ
- ਇੱਕ ਹਵਾਲਾ: ਡਾਕੂਮੈਂਟੇਸ਼ਨ (documentation) ਕਿੱਥੇ ਹੈ
ਲੋਕ ਇਸੇ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦੇ ਹਨ।
ਮੈਂ ਅਤੀਤ ਦਾ ਇੱਕ ਸੰਪੂਰਨ ਰੀਪਲੇਅ (replay) ਨਹੀਂ ਚਾਹੁੰਦਾ ਕਿਉਂਕਿ ਇੰਟਰਫੇਸ ਬਦਲਦੇ ਹਨ ਅਤੇ ਬਟਨ ਆਪਣੀ ਜਗ੍ਹਾ ਬਦਲਦੇ ਹਨ। ਮੈਂ ਚਾਹੁੰਦਾ ਹਾਂ ਕਿ ਏਜੰਟ:
- ਸਭ ਤੋਂ ਵਧੀਆ ਜਾਣੇ-ਪਛਾਣੇ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਯਾਦ ਕਰੇ
- ਪਹਿਲਾਂ ਇਸਨੂੰ ਅਜ਼ਮਾਵੇ
- ਹਰ ਕਦਮ ਦੀ ਪੁਸ਼ਟੀ ਕਰੇ
- ਜੇਕਰ ਇਹ ਅਸਫਲ ਰਹਿੰਦਾ ਹੈ ਤਾਂ ਦੁਬਾਰਾ ਖੋਜ ਵੱਲ ਵਾਪਸ ਜਾਵੇ
- ਸਫਲਤਾ ਤੋਂ ਬਾਅਦ ਮੈਮੋਰੀ ਨੂੰ ਅਪਡੇਟ ਕਰੇ
ਇਹ ਨਾਜ਼ੁਕ ਆਟੋਮੇਸ਼ਨ (brittle automation) ਨੂੰ ਇੱਕ ਉਪਯੋਗੀ ਸੰਚਾਲਨ ਮੈਮੋਰੀ (operational memory) ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ।
ਮੈਂ ਗੱਲਬਾਤ ਦੇ ਇਤਿਹਾਸ ਤੋਂ ਸਥਾਈ ਨਿਯਮਾਂ ਨੂੰ ਵੀ ਵੱਖ ਕਰ ਦਿੱਤਾ। "ਹਮੇਸ਼ਾ ਚੀਨੀ ਵਿੱਚ ਜਵਾਬ ਦਿਓ" ਜਾਂ "ਪ੍ਰੋਡਕਸ਼ਨ ਡੇਟਾ ਨੂੰ ਨਾ ਛੇੜੋ" ਵਰਗੇ ਨਿਯਮ ਸੈਸ਼ਨ ਕੰਟੈਕਸਟ (session context) ਨਹੀਂ ਹਨ। ਉਹ ਸੰਚਾਲਨ ਨਿਯਮ (operating rules) ਹਨ।
ਇੱਕ ਵਾਰ ਜਦੋਂ ਮੈਂ ਇਹਨਾਂ ਨੂੰ ਵੱਖ ਕਰ ਦਿੱਤਾ, ਤਾਂ ਸਹਾਇਕ ਭਵਿੱਖਬਾਣੀਯੋਗ (predictable) ਹੋ ਗਿਆ। ਹੁਣ ਇਸਨੂੰ ਕਿਸੇ ਕੰਮ ਦੇ ਵਿਚਕਾਰ ਤੁਹਾਡੀਆਂ ਪਸੰਦਾਂ ਨੂੰ ਦੁਬਾਰਾ ਲੱਭਣ ਦੀ ਲੋੜ ਨਹੀਂ ਪੈਂਦੀ।
ਵਾਰ-ਵਾਰ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਕੰਮ ਹੁਣ ਛੋਟੇ ਹਨ। ਸਹਾਇਕ ਤੇਜ਼ੀ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਹਰ ਵਾਰ ਇੱਕ ਖਾਲੀ ਮਾਡਲ ਨਾਲ ਸ਼ੁਰੂ ਨਹੀਂ ਹੁੰਦਾ।
ਇੱਕ ਨਿਰੰਤਰ ਥ੍ਰੈਡ (continuous thread) ਨੂੰ ਸਿੱਖਣ ਵਾਲੇ ਸਿਸਟਮ ਨਾਲ ਉਲਝਣ ਵਿੱਚ ਨਾ ਰਹੋ।
ਇੱਕ ਸੈਸ਼ਨ ਗੱਲਬਾਤ ਨੂੰ ਜਿਉਂਦਾ ਰੱਖਦਾ ਹੈ। ਮੈਮੋਰੀ ਉਪਯੋਗੀ ਸਬਕਾਂ ਨੂੰ ਜਿਉਂਦਾ ਰੱਖਦੀ ਹੈ।
ਜੇਕਰ ਤੁਸੀਂ ਕੋਡਿੰਗ ਏਜੰਟ ਬਣਾਉਂਦੇ ਹੋ, ਤਾਂ ਆਪਣੇ ਆਪ ਨੂੰ ਪੁੱਛੋ: ਕੀ ਤੁਹਾਡਾ ਸਿਸਟਮ ਥ੍ਰੈਡ ਨੂੰ ਯਾਦ ਰੱਖ ਰਿਹਾ ਹੈ, ਜਾਂ ਇਹ ਸਫਲ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਯਾਦ ਰੱਖ ਰਿਹਾ ਹੈ?
ਸਰੋਤ: https://dev.to/codekingai/my-coding-agent-remembered-sessions-not-work-that-was-the-bug-2fig
