Codex ਓਰਕੈਸਟ੍ਰੇਸ਼ਨ ਲਈ ਇੱਕ ਓਪਨ-ਸੋਰਸ ਸਪੈਸੀਫਿਕੇਸ਼ਨ: Symphony
Alex Kotliarskyi, Victor Zhu, ਅਤੇ Zach Brock ਵੱਲੋਂ
ਛੇ ਮਹੀਨੇ ਪਹਿਲਾਂ, ਇੱਕ ਅੰਦਰੂਨੀ ਉਤਪਾਦਕਤਾ ਟੂਲ 'ਤੇ ਕੰਮ ਕਰਦੇ ਹੋਏ, ਸਾਡੀ ਟੀਮ ਨੇ ਇੱਕ (ਉਸ ਵੇਲੇ) ਵਿਵਾਦਪੂਰਨ ਫੈਸਲਾ ਕੀਤਾ: ਅਸੀਂ ਆਪਣੀ ਰਿਪੋ ਬਿਨ੍ਹਾਂ ਕਿਸੇ ਮਨੁੱਖ ਵੱਲੋਂ ਲਿਖੇ ਕੋਡ ਦੇ ਬਣਾਵਾਂਗੇ। ਸਾਡੀ ਪ੍ਰੋਜੈਕਟ ਰਿਪੋਜ਼ਟਰੀ ਦੀ ਹਰ ਲਾਈਨ Codex ਦੁਆਰਾ ਜਨਰੇਟ ਕੀਤੀ ਜਾਣੀ ਲਾਜ਼ਮੀ ਸੀ।
ਇਸਨੂੰ ਕਾਰਗਰ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਆਪਣੇ ਇੰਜੀਨੀਅਰਿੰਗ ਵਰਕਫਲੋ ਨੂੰ ਬਿਲਕੁਲ ਨਵੇਂ ਸਿਰੇ ਤੋਂ ਮੁੜ ਡਿਜ਼ਾਈਨ ਕੀਤਾ। ਅਸੀਂ ਇੱਕ ਏਜੰਟ-ਅਨੁਕੂਲ ਰਿਪੋਜ਼ਟਰੀ ਬਣਾਈ, ਆਟੋਮੇਟਡ ਟੈਸਟਾਂ ਅਤੇ ਸੁਰੱਖਿਆ ਨਿਯਮਾਂ ਵਿੱਚ ਵੱਡਾ ਨਿਵੇਸ਼ ਕੀਤਾ, ਅਤੇ Codex ਨੂੰ ਟੀਮ ਦੇ ਪੂਰੇ ਮੈਂਬਰ ਵਜੋਂ ਮੰਨਿਆ। ਅਸੀਂ ਉਸ ਯਾਤਰਾ ਨੂੰ ਆਪਣੀ ਪਿਛਲੀ ਹਾਰਨੈੱਸ ਇੰਜੀਨੀਅਰਿੰਗ ਬਾਰੇ ਬਲੌਗ ਪੋਸਟ ਵਿੱਚ ਦਰਜ ਕੀਤਾ ਸੀ।
ਅਤੇ ਇਹ ਕੰਮ ਕਰ ਗਿਆ, ਪਰ ਫਿਰ ਸਾਡੇ ਸਾਹਮਣੇ ਅਗਲੀ ਰੁਕਾਵਟ ਆ ਗਈ: ਸੰਦਰਭ ਬਦਲਣਾ।
ਇਸ ਨਵੀਂ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ, ਅਸੀਂ Symphony ਨਾਮਕ ਸਿਸਟਮ ਬਣਾਇਆ। Symphony(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਇੱਕ ਏਜੰਟ ਓਰਕੈਸਟ੍ਰੇਟਰ ਹੈ, ਜੋ Linear ਵਰਗੇ ਪ੍ਰੋਜੈਕਟ-ਮੈਨੇਜਮੈਂਟ ਬੋਰਡ ਨੂੰ ਕੋਡਿੰਗ ਏਜੰਟਾਂ ਲਈ ਕੰਟਰੋਲ ਪਲੇਨ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਹਰ ਖੁੱਲ੍ਹੇ ਕੰਮ ਨੂੰ ਇੱਕ ਏਜੰਟ ਮਿਲਦਾ ਹੈ, ਏਜੰਟ ਲਗਾਤਾਰ ਚੱਲਦੇ ਹਨ, ਅਤੇ ਮਨੁੱਖ ਨਤੀਜਿਆਂ ਦੀ ਸਮੀਖਿਆ ਕਰਦੇ ਹਨ।
ਇਹ ਪੋਸਟ ਸਮਝਾਉਂਦੀ ਹੈ ਕਿ ਅਸੀਂ Symphony ਕਿਵੇਂ ਬਣਾਇਆ—ਜਿਸ ਨਾਲ ਕੁਝ ਟੀਮਾਂ ਵਿੱਚ ਲੈਂਡ ਕੀਤੀਆਂ pull requests ਵਿੱਚ 500% ਵਾਧਾ ਹੋਇਆ—ਅਤੇ ਇਸਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣੇ ਇਸ਼ੂ ਟ੍ਰੈਕਰ ਨੂੰ ਇੱਕ ਹਮੇਸ਼ਾਂ-ਚਾਲੂ ਏਜੰਟ ਓਰਕੈਸਟ੍ਰੇਟਰ ਵਿੱਚ ਕਿਵੇਂ ਬਦਲਣਾ ਹੈ।
ਇੰਟਰੈਕਟਿਵ ਕੋਡਿੰਗ ਏਜੰਟਾਂ ਦੀ ਉੱਚਤਮ ਸੀਮਾ
ਭਾਵੇਂ ਇਹ ਵਰਤਣ ਵਿੱਚ ਹੋਰ ਆਸਾਨ ਹੁੰਦੇ ਜਾ ਰਹੇ ਹਨ, ਕੋਡਿੰਗ ਏਜੰਟ—ਚਾਹੇ ਵੈੱਬ ਐਪਾਂ ਰਾਹੀਂ ਐਕਸੈੱਸ ਕੀਤੇ ਜਾਣ ਜਾਂ CLI ਰਾਹੀਂ—ਫਿਰ ਵੀ ਇੰਟਰਐਕਟਿਵ ਟੂਲ ਹਨ।
ਜਿਵੇਂ-ਜਿਵੇਂ OpenAI ਵਿੱਚ ਏਜੰਟਿਕ ਕੰਮ ਦਾ ਪੈਮਾਨਾ ਵਧਿਆ, ਸਾਨੂੰ ਇੱਕ ਨਵੀਂ ਕਿਸਮ ਦਾ ਬੋਝ ਮਹਿਸੂਸ ਹੋਇਆ। ਹਰ ਇੰਜੀਨੀਅਰ ਕੁਝ Codex ਸੈਸ਼ਨ ਖੋਲ੍ਹਦਾ, ਟਾਸਕ ਸੌਂਪਦਾ, ਆਉਟਪੁੱਟ ਦੀ ਸਮੀਖਿਆ ਕਰਦਾ, ਏਜੰਟ ਨੂੰ ਦਿਸ਼ਾ ਦਿੰਦਾ, ਅਤੇ ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਦੁਹਰਾਉਂਦਾ। ਵਿਹਾਰਕ ਤੌਰ 'ਤੇ, ਜ਼ਿਆਦਾਤਰ ਲੋਕ ਸੰਦਰਭ ਬਦਲਣ ਦੀ ਖੇਚਲ ਮਹਿਸੂਸ ਕੀਤੇ ਬਿਨ੍ਹਾਂ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਤਿੰਨ ਤੋਂ ਪੰਜ ਸੈਸ਼ਨਾਂ ਨੂੰ ਆਰਾਮ ਨਾਲ ਸੰਭਾਲ ਸਕਦੇ ਹਨ। ਉਸ ਤੋਂ ਅੱਗੇ, ਉਤਪਾਦਕਤਾ ਘੱਟ ਗਈ। ਅਸੀਂ ਭੁੱਲ ਜਾਂਦੇ ਸੀ ਕਿ ਕਿਹੜਾ ਸੈਸ਼ਨ ਕੀ ਕਰ ਰਿਹਾ ਸੀ, ਏਜੰਟਾਂ ਨੂੰ ਮੁੜ੍ਹ ਸਹੀ ਰਾਹ ’ਤੇ ਲਿਆਉਣ ਲਈ ਟਰਮੀਨਲਾਂ ਵਿਚਕਾਰ ਜਾਂਦੇ ਰਹਿੰਦੇ ਸੀ, ਅਤੇ ਵਿਚਕਾਰ ਹੀ ਅਟਕ ਜਾਣ ਵਾਲੇ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਚੱਲਣ ਵਾਲੇ ਕੰਮਾਂ ਨੂੰ ਡੀਬੱਗ ਕਰਦੇ ਰਹਿੰਦੇ ਸੀ।
ਏਜੰਟ ਤੇਜ਼ ਸਨ, ਪਰ ਸਾਡੇ ਸਿਸਟਮ ਵਿੱਚ ਇੱਕ ਰੁਕਾਵਟ ਸੀ: ਮਨੁੱਖੀ ਧਿਆਨ। ਅਸੀਂ ਅਸਲ ਵਿੱਚ ਬੇਹੱਦ ਸਮਰੱਥ ਜੂਨੀਅਰ ਇੰਜੀਨੀਅਰਾਂ ਦੀ ਇੱਕ ਟੀਮ ਬਣਾ ਲਈ ਸੀ, ਫਿਰ ਆਪਣੇ ਮਨੁੱਖੀ ਇੰਜੀਨੀਅਰਾਂ ਨੂੰ ਉਹਨਾਂ ਦੀ ਹਰ ਛੋਟੀ ਗੱਲ ਦੀ ਨਿਗਰਾਨੀ ਕਰਨ ਲਈ ਲਾ ਦਿੱਤਾ। ਉਹ ਸਕੇਲ ਕਰਨ ਲਾਇਕ ਨਹੀਂ ਸੀ।
ਨਜ਼ਰੀਏ ਵਿੱਚ ਬਦਲਾਅ
ਸਾਨੂੰ ਅਹਿਸਾਸ ਹੋਇਆ ਕਿ ਅਸੀਂ ਗਲਤ ਚੀਜ਼ ਨੂੰ ਠੀਕ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਸੀ।ਮ ਅਸੀਂ ਆਪਣੇ ਸਿਸਟਮ ਨੂੰ ਕੋਡਿੰਗ ਸੈਸ਼ਨਾਂ ਅਤੇ ਮਰਜ ਕੀਤੀਆਂ PRs ਦੇ ਆਲੇ-ਦੁਆਲੇ ਕੇਂਦਰਿਤ ਕਰ ਰਹੇ ਸਾਂ, ਜਦਕਿ ਅਸਲ ਵਿੱਚ PRs ਅਤੇ ਸੈਸ਼ਨ ਸਿਰਫ਼ ਇੱਕ ਮਕਸਦ ਤੱਕ ਪਹੁੰਚਣ ਦੇ ਸਾਧਨ ਹਨ। ਸੌਫਟਵੇਅਰ ਵਰਕਫ਼ਲੋ ਮੁੱਖ ਤੌਰ 'ਤੇ ਡਿਲੀਵਰੇਬਲਾਂ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਸੰਗਠਿਤ ਹੁੰਦੇ ਹਨ: ਇਸ਼ੂਜ਼, ਟਾਸਕ, ਟਿਕਟਾਂ, ਮੀਲ ਪੱਥਰ।
ਇਸ ਲਈ ਅਸੀਂ ਆਪਣੇ ਆਪ ਤੋਂ ਪੁੱਛਿਆ ਕਿ ਜੇ ਅਸੀਂ ਏਜੰਟਾਂ ਦੀ ਸਿੱਧੀ ਨਿਗਰਾਨੀ ਕਰਨੀ ਬੰਦ ਕਰ ਦਈਏ ਅਤੇ ਇਸ ਦੀ ਬਜਾਏ ਉਹਨਾਂ ਨੂੰ ਸਾਡੇ ਟਾਸਕ ਟ੍ਰੈਕਰ ਤੋਂ ਕੰਮ ਲੈਣ ਦਈਏ ਤਾਂ ਕੀ ਹੋਵੇਗਾ।
ਉਹ ਵਿਚਾਰ Symphony ਬਣ ਗਿਆ, ਇੱਕ ਲਿਖਤੀ ਸਪੈਸੀਫਿਕੇਸ਼ਨ ਜੋ ਏਜੰਟਿਕ ਕੰਮ ਨੂੰ ਓਰਕੈਸਟ੍ਰੇਟ ਕਰਨ ਲਈ ਸੁਪਰਵਾਈਜ਼ਰ ਵਜੋਂ ਕੰਮ ਕਰਦੀ ਹੈ।
ਸਾਡੇ ਇਸ਼ੂ ਟ੍ਰੈਕਰ ਨੂੰ ਇੱਕ ਏਜੰਟ ਓਰਕੈਸਟਰੇਟਰ ਵਿੱਚ ਬਦਲਣਾ
Symphony ਦੀ ਸ਼ੁਰੂਆਤ ਇੱਕ ਸਧਾਰਨ ਧਾਰਨਾ ਨਾਲ ਹੋਈ: ਕੋਈ ਵੀ ਖੁੱਲ੍ਹਾ ਕੰਮ ਕਿਸੇ ਏਜੰਟ ਵੱਲੋਂ ਸੰਭਾਲਿਆ ਅਤੇ ਪੂਰਾ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਕਈ ਟੈਬਾਂ ਵਿੱਚ Codex ਸੈਸ਼ਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਬਜਾਏ, ਅਸੀਂ ਆਪਣੇ ਇਸ਼ੂ ਟ੍ਰੈਕਰ ਨੂੰ ਹੀ ਕੰਟਰੋਲ ਪਲੇਨ ਬਣਾ ਦਿੱਤਾ।
ਇਸ ਸੈੱਟਅੱਪ ਵਿੱਚ, ਹਰ ਖੁੱਲ੍ਹਾ Linear ਇਸ਼ੂ ਇੱਕ ਸਮਰਪਿਤ ਏਜੰਟ ਵਰਕਸਪੇਸ ਨਾਲ ਜੁੜਦਾ ਹੈ। Symphony ਲਗਾਤਾਰ ਟਾਸਕ ਬੋਰਡ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦਾ ਹੈ ਅਤੇ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਹਰ ਸਰਗਰਮ ਕੰਮ ਲਈ, ਇਸ ਦੇ ਮੁਕੰਮਲ ਹੋਣ ਤੱਕ, ਲੂਪ ਵਿੱਚ ਇੱਕ ਏਜੰਟ ਚੱਲ ਰਿਹਾ ਹੈ। ਜੇ ਕੋਈ ਏਜੰਟ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦਾ ਹੈ ਜਾਂ ਅਟਕ ਜਾਂਦਾ ਹੈ, ਤਾਂ Symphony ਇਸਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰਦਾ ਹੈ। ਜੇ ਨਵਾਂ ਕੰਮ ਸਾਹਮਣੇ ਆਉਂਦਾ ਹੈ, ਤਾਂ Symphony ਉਸਨੂੰ ਸੰਭਾਲ ਲੈਂਦਾ ਹੈ ਅਤੇ ਕੰਮ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ।
ਅਸੀਂ ਆਪਣਾ ਵਰਕਫਲੋ ਟਿਕਟ ਸਥਿਤੀਆਂ ਦੇ ਆਧਾਰ 'ਤੇ ਬਣਾਇਆ, ਟਾਸਕ ਮੈਨੇਜਰ Linear ਨੂੰ ਸਟੇਟ ਮਸ਼ੀਨ ਵਜੋਂ ਵਰਤਦਿਆਂ।
ਅਮਲ ਵਿੱਚ, Symphony ਕੰਮ ਨੂੰ ਸੈਸ਼ਨਾਂ ਅਤੇ pull requests ਤੋਂ ਵੱਖ ਕਰਦਾ ਹੈ। ਕੁਝ ਮੁੱਦੇ ਕਈ ਰਿਪੋਜ਼ਟਰੀਆਂ ਵਿੱਚ ਕਈ pull requests ਤਿਆਰ ਕਰਦੇ ਹਨ; ਹੋਰ ਸਿਰਫ਼ ਜਾਂਚ ਜਾਂ ਵਿਸ਼ਲੇਸ਼ਣ ਹੁੰਦੇ ਹਨ ਜੋ ਕੋਡਬੇਸ ਨੂੰ ਕਦੇ ਛੂਹਦੇ ਹੀ ਨਹੀਂ।
ਜਦੋਂ ਕੰਮ ਨੂੰ ਇਸ ਤਰੀਕੇ ਨਾਲ ਐਬਸਟ੍ਰੈਕਟ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਟਿਕਟਾਂ ਕੰਮ ਦੀਆਂ ਕਾਫ਼ੀ ਵੱਡੀਆਂ ਇਕਾਈਆਂ ਨੂੰ ਦਰਸਾ ਸਕਦੀਆਂ ਹਨ।
ਅਸੀਂ ਗੁੰਝਲਦਾਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਦੀਆਂ ਮਾਈਗ੍ਰੇਸ਼ਨਾਂ ਨੂੰ ਸੁਚਾਰੂ ਬਣਾਉਣ ਲਈ ਨਿਯਮਿਤ ਤੌਰ 'ਤੇ Symphony ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। ਉਦਾਹਰਨ ਲਈ, ਅਸੀਂ ਇੱਕ ਟਾਸਕ ਦਰਜ ਕਰ ਸਕਦੇ ਹਾਂ ਜਿਸ ਵਿੱਚ ਏਜੰਟ ਨੂੰ ਕੋਡਬੇਸ, Slack ਜਾਂ Notion ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਅਤੇ ਲਾਗੂ ਕਰਨ ਦੀ ਯੋਜਨਾ ਬਣਾਉਣ ਲਈ ਕਿਹਾ ਜਾਵੇ। ਜਦੋਂ ਅਸੀਂ ਯੋਜਨਾ ਨਾਲ ਸੰਤੁਸ਼ਟ ਹੋ ਜਾਂਦੇ ਹਾਂ, ਤਾਂ ਏਜੰਟ ਕੰਮਾਂ ਦਾ ਇੱਕ ਟ੍ਰੀ ਤਿਆਰ ਕਰਦਾ ਹੈ, ਕੰਮ ਨੂੰ ਪੜਾਵਾਂ ਵਿੱਚ ਵੰਡਦਾ ਹੈ ਅਤੇ ਕੰਮਾਂ ਵਿਚਕਾਰ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਸਪਸ਼ਟ ਕਰਦਾ ਹੈ।
ਏਜੰਟ ਸਿਰਫ਼ ਉਹਨਾਂ ਕੰਮਾਂ 'ਤੇ ਕੰਮ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹਨ ਜੋ ਬਲੌਕ ਨਹੀਂ ਹਨ, ਇਸ ਲਈ ਇਸ DAG (ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਕਦਮਾਂ ਦੀ ਇੱਕ ਲੜੀ) ਲਈ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਕੁਦਰਤੀ ਅਤੇ ਅਨੁਕੂਲ ਢੰਗ ਨਾਲ ਸਮਾਨਾਂਤਰ ਰੂਪ ਵਿੱਚ ਅੱਗੇ ਵਧਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਅਸੀਂ React ਅੱਪਗ੍ਰੇਡ ਨੂੰ Vite ਵਿੱਚ ਮਾਈਗ੍ਰੇਸ਼ਨ ਕਾਰਨ ਬਲੌਕ ਵਜੋਂ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ। ਉਮੀਦ ਮੁਤਾਬਕ, ਏਜੰਟਾਂ ਨੇ React ਨੂੰ ਅੱਪਗ੍ਰੇਡ ਕਰਨਾ Vite ਵਿੱਚ ਮਾਈਗ੍ਰੇਸ਼ਨ ਪੂਰੀ ਹੋਣ ਤੋਂ ਬਾਅਦ ਹੀ ਸ਼ੁਰੂ ਕੀਤਾ।
ਏਜੰਟ ਆਪਣੇ ਆਪ ਵੀ ਕੰਮ ਬਣਾ ਸਕਦੇ ਹਨ। ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਜਾਂ ਸਮੀਖਿਆ ਦੌਰਾਨ, ਉਹਨਾਂ ਨੂੰ ਅਕਸਰ ਅਜਿਹੇ ਸੁਧਾਰ ਨਜ਼ਰ ਆਉਂਦੇ ਹਨ ਜੋ ਮੌਜੂਦਾ ਕੰਮ ਦੇ ਦਾਇਰੇ ਤੋਂ ਬਾਹਰ ਹੁੰਦੇ ਹਨ: ਕਾਰਗੁਜ਼ਾਰੀ ਦੀ ਕੋਈ ਸਮੱਸਿਆ, ਰੀਫੈਕਟਰਿੰਗ ਦਾ ਕੋਈ ਮੌਕਾ, ਜਾਂ ਬਿਹਤਰ ਆਰਕੀਟੈਕਚਰ। ਜਦੋਂ ਇਹ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਉਹ ਬਸ ਇੱਕ ਨਵਾਂ ਇਸ਼ੂ ਦਰਜ ਕਰਦੇ ਹਨ ਜਿਸਦਾ ਅਸੀਂ ਬਾਅਦ ਵਿੱਚ ਮੁਲਾਂਕਣ ਕਰਕੇ ਸ਼ੈਡਿਊਲ ਕਰ ਸਕਦੇ ਹਾਂ—ਇਹਨਾਂ ਫਾਲੋ-ਅੱਪ ਕੰਮਾਂ ਵਿੱਚੋਂ ਕਈ ਏਜੰਟਾਂ ਦੁਆਰਾ ਵੀ ਸੰਭਾਲੇ ਜਾਂਦੇ ਹਨ। ਜਦੋਂ ਅਸੀਂ ਇਸ ਪ੍ਰਕਿਰਿਆ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦੇ ਹਾਂ, ਏਜੰਟ ਸੰਗਠਿਤ ਰਹਿੰਦੇ ਹਨ ਅਤੇ ਕੰਮ ਨੂੰ ਅੱਗੇ ਵਧਾਉਂਦੇ ਰਹਿੰਦੇ ਹਨ।
ਇਸ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਨਾਲ ਅਸਪਸ਼ਟ ਕਾਰਜਾਂ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਦਾ ਮਾਨਸਿਕ ਬੋਝ ਬਹੁਤ ਜ਼ਿਆਦਾ ਘਟ ਜਾਂਦਾ ਹੈ। ਜੇ ਏਜੰਟ ਕਿਸੇ ਚੀਜ਼ ਵਿੱਚ ਗਲਤੀ ਕਰਦਾ ਹੈ, ਤਾਂ ਵੀ ਇਹ ਲਾਭਦਾਇਕ ਜਾਣਕਾਰੀ ਹੈ, ਅਤੇ ਸਾਡੇ ਲਈ ਲਾਗਤ ਲਗਭਗ ਨਾ ਦੇ ਬਰਾਬਰ ਹੈ। ਅਸੀਂ ਬਹੁਤ ਘੱਟ ਖਰਚੇ ’ਤੇ ਏਜੰਟ ਲਈ ਟਿਕਟਾਂ ਦਰਜ ਕਰ ਸਕਦੇ ਹਾਂ ਤਾਂ ਜੋ ਉਹ Go ਪ੍ਰੋਟੋਟਾਈਪ ਬਣਾਏ ਅਤੇ ਪੜਚੋਲ ਕਰੇ, ਅਤੇ ਜਿਹੜੀਆਂ ਪੜਚੋਲਾਂ ਸਾਨੂੰ ਪਸੰਦ ਨਹੀਂ ਆਉਂਦੀਆਂ, ਉਹਨਾਂ ਨੂੰ ਰੱਦ ਕਰ ਸਕਦੇ ਹਾਂ।
ਕਿਉਂਕਿ ਓਰਕੈਸਟ੍ਰੇਟਰ devboxes 'ਤੇ ਚੱਲਦਾ ਹੈ ਅਤੇ ਕਦੇ ਨਹੀਂ ਰੁਕਦਾ, ਅਸੀਂ ਕਿਤੇ ਤੋਂ ਵੀ ਕੰਮ ਜੋੜ ਸਕਦੇ ਹਾਂ ਅਤੇ ਜਾਣਦੇ ਹਾਂ ਕਿ ਕੋਈ ਏਜੰਟ ਇਸਨੂੰ ਲੈ ਲਵੇਗਾ। ਉਦਾਹਰਨ ਲਈ, ਸਾਡੀ ਟੀਮ ਦੇ ਇੱਕ ਇੰਜੀਨੀਅਰ ਨੇ ਇੱਕ ਆਰਾਮਦਾਇਕ ਕੈਬਿਨ ਤੋਂ, ਕਮਜ਼ੋਰ Wi‑Fi ਕਨੈਕਸ਼ਨ 'ਤੇ, ਆਪਣੇ ਫ਼ੋਨ ਉੱਤੇ Linear ਐਪ ਰਾਹੀਂ ਤਿੰਨ ਮਹੱਤਵਪੂਰਨ ਤਬਦੀਲੀਆਂ ਕੀਤੀਆਂ।
ਇਸ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰਨ ਨਾਲ ਪੜਚੋਲ ਵਿੱਚ ਵਾਧਾ ਹੁੰਦਾ ਹੈ
Symphony ਨਾਲ ਕੰਮ ਕਰਨ ਦੇ ਪ੍ਰਭਾਵ ਵੇਖਣ ‘ਤੇ ਸਭ ਤੋਂ ਸਪੱਸ਼ਟ ਤਬਦੀਲੀ ਆਉਟਪੁੱਟ ਸੀ। OpenAI ਦੀਆਂ ਕੁਝ ਟੀਮਾਂ ਵਿੱਚ, ਅਸੀਂ ਪਹਿਲੇ ਤਿੰਨ ਹਫ਼ਤਿਆਂ ਵਿੱਚ ਲੈਂਡ ਹੋਏ PRs ਦੀ ਗਿਣਤੀ 500% ਦਾ ਵਾਧਾ ਵੇਖਿਆ। OpenAI ਤੋਂ ਬਾਹਰ, Linear ਦੇ ਸੰਸਥਾਪਕ Karri Saarinen ਨੇ ਜਦੋਂ ਅਸੀਂ Symphony ਰਿਲੀਜ਼ ਕੀਤਾ, ਤਾਂ ਬਣੀਆਂ ਵਰਕਸਪੇਸਾਂ ਵਿੱਚ ਆਏ ਤੇਜ਼ ਵਾਧੇ(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਵੱਲ ਧਿਆਨ ਦਿਵਾਇਆ। ਹਾਲਾਂਕਿ, ਡੂੰਘਾ ਬਦਲਾਅ ਇਹ ਹੈ ਕਿ ਟੀਮਾਂ ਕੰਮ ਬਾਰੇ ਕਿਵੇਂ ਸੋਚਦੀਆਂ ਹਨ।
ਜਦੋਂ ਸਾਡੇ ਇੰਜੀਨੀਅਰ Codex ਸੈਸ਼ਨਾਂ ਦੀ ਨਿਗਰਾਨੀ ਕਰਨ ਵਿੱਚ ਆਪਣਾ ਸਮਾਂ ਬਰਬਾਦ ਨਹੀਂ ਕਰਦੇ, ਤਾਂ ਕੋਡ ਵਿੱਚ ਬਦਲਾਅ ਕਰਨ ਦੀ ਆਰਥਿਕਤਾ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬਦਲ ਜਾਂਦੀ ਹੈ। ਹਰੇਕ ਬਦਲਾਅ ਦੀ ਅਨੁਮਾਨਿਤ ਲਾਗਤ ਘੱਟ ਜਾਂਦੀ ਹੈ ਕਿਉਂਕਿ ਅਸੀਂ ਹੁਣ ਉਸਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਮਨੁੱਖੀ ਮਿਹਨਤ ਨਹੀਂ ਲਗਾ ਰਹੇ ਹੁੰਦੇ।
ਇਸ ਨਾਲ ਸਾਡਾ ਵਿਹਾਰ ਬਦਲ ਗਿਆ। Symphony ਵਿੱਚ ਅਨੁਮਾਨਾਤਮਕ ਕਾਰਜਾਂ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ ਬਹੁਤ ਹੀ ਆਸਾਨ ਹੋ ਗਿਆ ਹੈ। ਕਿਸੇ ਵਿਚਾਰ ਨੂੰ ਅਜ਼ਮਾਓ, ਰੀਫੈਕਟਰ ਦੀ ਪੜਚੋਲ ਕਰੋ, ਪਰਿਕਲਪਨਾ ਦੀ ਜਾਂਚ ਕਰੋ, ਅਤੇ ਸਿਰਫ਼ ਉਹੀ ਨਤੀਜੇ ਰੱਖੋ ਜੋ ਆਸ਼ਾਜਨਕ ਲੱਗਣ।
ਇਹ ਇਸ ਗੱਲ ਦਾ ਦਾਇਰਾ ਵੀ ਵਧਾਉਂਦਾ ਹੈ ਕਿ ਕੰਮ ਕੌਣ ਸ਼ੁਰੂ ਕਰ ਸਕਦਾ ਹੈ। ਸਾਡੇ ਉਤਪਾਦ ਪ੍ਰਬੰਧਕ ਅਤੇ ਡਿਜ਼ਾਈਨਰ ਹੁਣ ਫੀਚਰ ਬੇਨਤੀਆਂ ਸਿੱਧੇ Symphony ਵਿੱਚ ਦਰਜ ਕਰ ਸਕਦੇ ਹਨ। ਉਹਨਾਂ ਨੂੰ ਰਿਪੋ ਚੈੱਕ ਆਊਟ ਕਰਨ ਜਾਂ Codex ਸੈਸ਼ਨ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ। ਉਹ ਵਿਸ਼ੇਸ਼ਤਾ ਦਾ ਵੇਰਵਾ ਦਿੰਦੇ ਹਨ ਅਤੇ ਵਾਪਸ ਇੱਕ ਸਮੀਖਿਆ ਪੈਕੇਜ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਨ, ਜਿਸ ਵਿੱਚ ਅਸਲ ਉਤਪਾਦ ਵਿੱਚ ਕੰਮ ਕਰ ਰਹੀ ਵਿਸ਼ੇਸ਼ਤਾ ਦਾ ਵੀਡੀਓ ਵਾਕਥਰੂ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ।
Symphony ਵੱਡੇ ਮੋਨੋਰਿਪੋਜ਼ ਵਿੱਚ ਵੀ ਸ਼ਾਨਦਾਰ ਕੰਮ ਕਰਦਾ ਹੈ (ਜਿਵੇਂ OpenAI ਵਿੱਚ ਸਾਡੇ ਕੋਲ ਹੈ), ਜਿੱਥੇ PR ਨੂੰ ਮਰਜ਼ ਕਰਨ ਦਾ ਅੰਤਿਮ ਪੜਾਅ ਧੀਮਾ ਅਤੇ ਨਾਜ਼ੁਕ ਹੁੰਦਾ ਹੈ। ਸਿਸਟਮ CI ਦੀ ਨਿਗਰਾਨੀ ਕਰਦਾ ਹੈ, ਜ਼ਰੂਰਤ ਪੈਣ 'ਤੇ ਰੀਬੇਸ ਕਰਦਾ ਹੈ, ਟਕਰਾਅ ਹੱਲ ਕਰਦਾ ਹੈ, ਗਲਤੀਆਂ ਵਾਲੇ ਚੈਕਾਂ ਨੂੰ ਮੁੜ ਚਲਾਉਂਦਾ ਹੈ, ਅਤੇ ਆਮ ਤੌਰ 'ਤੇ ਬਦਲਾਵਾਂ ਨੂੰ ਪਾਈਪਲਾਈਨ ਰਾਹੀਂ ਸੁਚਾਰੂ ਤਰੀਕੇ ਨਾਲ ਅੱਗੇ ਵਧਾਉਂਦਾ ਹੈ। ਜਦੋਂ ਤੱਕ ਕੋਈ ਟਿਕਟ Merging ਤੱਕ ਪਹੁੰਚਦੀ ਹੈ, ਸਾਨੂੰ ਪੂਰਾ ਭਰੋਸਾ ਹੁੰਦਾ ਹੈ ਕਿ ਬਦਲਾਅ ਬਿਨ੍ਹਾਂ ਮਨੁੱਖੀ ਦਖਲ ਦੇ ਮੁੱਖ ਬ੍ਰਾਂਚ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋ ਜਾਵੇਗਾ।
Symphony ਨੂੰ ਲਾਗੂ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਅਸੀਂ ਏਜੰਟਾਂ ਨੂੰ ਜ਼ਿਆਦਾ ਕੰਮ ਸੌਂਪਦੇ ਹਾਂ ਅਤੇ ਖੁਦ ਔਖੇ ਤੇ ਵਧੇਰੇ ਖੋਜ ਭਰਪੂਰ ਕਾਰਜਾਂ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦੇ ਹਾਂ।
ਤਰੱਕੀ ਦੇ ਨਾਲ ਨਵੀਆਂ, ਵੱਖਰੀਆਂ ਸਮੱਸਿਆਵਾਂ ਆਉਂਦੀਆਂ ਹਨ
ਇਸ ਪੱਧਰ 'ਤੇ ਕੰਮ ਕਰਨ ਨਾਲ ਕੁਝ ਸਮਝੌਤੇ ਕਰਨੇ ਪੈਂਦੇ ਹਨ। ਜਦੋਂ ਅਸੀਂ ਏਜੰਟਾਂ ਨੂੰ ਇੰਟਰਐਕਟਿਵ ਢੰਗ ਨਾਲ ਨਿਰਦੇਸ਼ਿਤ ਕਰਨ ਤੋਂ ਹਟ ਕੇ ਉਹਨਾਂ ਨੂੰ ਟਿਕਟ ਪੱਧਰ 'ਤੇ ਕੰਮ ਸੌਂਪਿਆ, ਤਾਂ ਅਸੀਂ ਲਗਾਤਾਰ ਮਾਰਗਦਰਸ਼ਨ ਅਤੇ ਲੋੜ ਪੈਣ 'ਤੇ ਦਿਸ਼ਾ ਠੀਕ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਗੁਆ ਬੈਠੇ। ਕਈ ਵਾਰ ਏਜੰਟ ਨੇ ਕੁਝ ਅਜਿਹਾ ਤਿਆਰ ਕੀਤਾ ਜੋ ਪੂਰੀ ਤਰ੍ਹਾਂ ਉਮੀਦਾਂ ’ਤੇ ਖਰਾ ਨਹੀਂ ਉਤਰਿਆ। ਇਹ ਉਪਯੋਗੀ ਸੀ—ਉਹ ਅਸਫਲਤਾਵਾਂ ਨੇ ਸਿਸਟਮ ਵਿੱਚ ਕਮੀਆਂ ਨੂੰ ਉਜਾਗਰ ਕੀਤਾ ਅਤੇ ਸਾਨੂੰ ਇਸਨੂੰ ਹੋਰ ਮਜ਼ਬੂਤ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕੀਤੀ।
ਨਤੀਜੇ ਨੂੰ ਖੁਦ ਠੀਕ ਕਰਨ ਦੀ ਬਜਾਏ, ਅਸੀਂ ਅਜਿਹੀਆਂ ਸੁਰੱਖਿਆ ਮਰਿਆਦਾਵਾਂ ਅਤੇ ਹੁਨਰ ਜੋੜ ਦਿੱਤੇ ਤਾਂ ਜੋ ਏਜੰਟ ਅਗਲੀ ਵਾਰ ਸਫਲ ਹੋ ਸਕਣ। ਹੌਲੀ-ਹੌਲੀ ਇਸ ਨਾਲ ਅਸੀਂ ਆਪਣੇ ਹਾਰਨੈੱਸ ਵਿੱਚ ਨਵੀਆਂ ਸਮਰੱਥਾਵਾਂ ਜੋੜੀਆਂ—ਜਿਵੇਂ ਐਂਡ-ਟੂ-ਐਂਡ ਟੈਸਟ ਚਲਾਉਣਾ, Chrome DevTools ਰਾਹੀਂ ਐਪ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨਾ, ਅਤੇ QA ਸਮੋਕ ਟੈਸਟਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ। ਅਸੀਂ ਆਪਣੇ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਨੂੰ ਕਾਫ਼ੀ ਬਿਹਤਰ ਕੀਤਾ ਅਤੇ ਇਹ ਸਪੱਸ਼ਟ ਕੀਤਾ ਕਿ ਚੰਗਾ ਨਤੀਜਾ ਕਿਵੇਂ ਦਿਖਦਾ ਹੈ।
ਹਰ ਕੰਮ Symphony ਦੇ ਕੰਮ ਕਰਨ ਦੇ ਅੰਦਾਜ਼ ਲਈ ਢੁੱਕਵਾਂ ਨਹੀਂ ਹੁੰਦਾ। ਕੁਝ ਸਮੱਸਿਆਵਾਂ ਲਈ ਅਜੇ ਵੀ ਇੰਜੀਨੀਅਰਾਂ ਨੂੰ ਸਿੱਧੇ ਇੰਟਰਐਕਟਿਵ Codex ਸੈਸ਼ਨਾਂ ਨਾਲ ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਖ਼ਾਸ ਕਰਕੇ ਅਸਪਸ਼ਟ ਸਮੱਸਿਆਵਾਂ ਜਾਂ ਉਹ ਕੰਮ ਜਿਹਨਾਂ ਲਈ ਮਜ਼ਬੂਤ ਨਿਰਣਾ ਅਤੇ ਮਾਹਰਤਾ ਦੀ ਲੋੜ ਹੈ। ਅਮਲ ਵਿੱਚ, ਇਹ ਆਮ ਤੌਰ 'ਤੇ ਉਹ ਕੰਮ ਹੁੰਦੇ ਹਨ ਜਿਹਨਾਂ 'ਤੇ ਸਾਡੇ ਇੰਜੀਨੀਅਰਾਂ ਲਈ ਸਮਾਂ ਲਗਾਉਣਾ ਸਭ ਤੋਂ ਦਿਲਚਸਪ ਅਤੇ ਆਨੰਦਦਾਇਕ ਹੁੰਦਾ ਹੈ।
ਫ਼ਰਕ ਇਹ ਹੈ ਕਿ Symphony ਰੋਜ਼ਾਨਾ ਦੇ ਲਾਗੂਕਰਨ ਵਾਲੇ ਕੰਮ ਦਾ ਵੱਡਾ ਹਿੱਸਾ ਸੰਭਾਲ ਸਕਦਾ ਹੈ। ਇਸ ਨਾਲ ਇੰਜੀਨੀਅਰ ਛੋਟੇ-ਛੋਟੇ ਕੰਮਾਂ ਵਿਚਕਾਰ ਲਗਾਤਾਰ ਸੰਦਰਭ ਬਦਲਣ ਦੀ ਬਜਾਏ ਇੱਕ ਸਮੇਂ 'ਤੇ ਇੱਕ ਹੀ ਮੁਸ਼ਕਲ ਸਮੱਸਿਆ 'ਤੇ ਫੋਕਸ ਕਰ ਸਕਦੇ ਹਨ।
ਅਸੀਂ ਇਹ ਵੀ ਸਿੱਖਿਆ ਕਿ ਏਜੰਟਾਂ ਨੂੰ ਸਟੇਟ ਮਸ਼ੀਨ ਵਿੱਚ ਕਠੋਰ ਨੋਡ ਵਜੋਂ ਮੰਨਣਾ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਨਹੀਂ ਕਰਦਾ। ਜਦੋਂ ਮਾਡਲ ਹੋਰ ਬਿਹਤਰ ਹੋ ਜਾਂਦੇ ਹਨ, ਤਾਂ ਉਹ ਉਨ੍ਹਾਂ ਸੀਮਾਵਾਂ ਤੋਂ ਕਿਤੇ ਵੱਧ ਕੰਮ ਕਰਨ ਦੇ ਯੋਗ ਹੋ ਜਾਂਦੇ ਹਨ ਜੋ ਅਸੀਂ ਉਹਨਾਂ ਲਈ ਮਿੱਥੀਆਂ ਹੁੰਦੀਆਂ ਹਨ। ਏਜੰਟਿਕ ਕੰਮ ਦੇ ਸਾਡੇ ਸ਼ੁਰੂਆਤੀ ਵਰਜਨਾਂ ਵਿੱਚ ਸਿਰਫ਼ Codex ਨੂੰ ਕਾਰਜ ਲਾਗੂ ਕਰਨ ਲਈ ਕਿਹਾ ਜਾਂਦਾ ਸੀ। ਉਹ ਪਹੁੰਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸੀਮਿਤ ਕਰਨ ਵਾਲੀ ਸਾਬਤ ਹੋਈ। Codex ਕਈ PRs ਬਣਾਉਣ ਦੇ ਨਾਲ-ਨਾਲ ਰੀਵਿਊ ਫੀਡਬੈਕ ਪੜ੍ਹਣ ਅਤੇ ਉਸਦਾ ਹੱਲ ਕਰਨ ਵਿੱਚ ਵੀ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਮਰੱਥ ਹੈ। ਇਸ ਲਈ ਅਸੀਂ ਇਸਨੂੰ ਟੂਲ ਦਿੱਤੇ—gh CLI, CI ਲੌਗ ਪੜ੍ਹਨ ਦੀਆਂ ਸਮਰੱਥਾਵਾਂ, ਆਦਿ—ਅਤੇ ਹੁਣ ਅਸੀਂ Codex ਤੋਂ ਹੋਰ ਕੰਮ ਕਰਵਾ ਸਕਦੇ ਹਾਂ, ਜਿਵੇਂ ਪੁਰਾਣੇ PRs ਬੰਦ ਕਰਨਾ ਜਾਂ ਪੂਰੇ ਕੀਤੇ ਬਨਾਮ ਛੱਡੇ ਗਏ ਕੰਮ ਬਾਰੇ ਰਿਪੋਰਟਾਂ ਕੱਢਣਾ। ਇਹਨਾਂ ਕਿਸਮਾਂ ਦੇ ਕਾਰਜ ਸ਼ੁਰੂਆਤੀ ਫੀਚਰ ਲਾਗੂ ਕਰਨ ਦੇ ਦਾਇਰੇ ਤੋਂ ਕਾਫ਼ੀ ਬਾਹਰ ਸਨ।
ਇਸ ਲਈ ਅਸੀਂ ਆਖਰਕਾਰ ਏਜੰਟਾਂ ਨੂੰ ਸਖ਼ਤ ਟ੍ਰਾਂਜ਼ਿਸ਼ਨਾਂ ਦੀ ਬਜਾਏ ਉਦੇਸ਼ ਦੇਣ ਵੱਲ ਵਧੇ, ਬਿਲਕੁਲ ਉਸੇ ਤਰ੍ਹਾਂ ਜਿਵੇਂ ਇੱਕ ਚੰਗਾ ਮੈਨੇਜਰ ਆਪਣੀ ਟੀਮ ਦੇ ਕਿਸੇ ਸਿੱਧੇ ਅਧੀਨ ਕਰਮਚਾਰੀ ਨੂੰ ਉਦੇਸ਼ ਸੌਂਪਦਾ ਹੈ। ਮਾਡਲਾਂ ਦੀ ਤਾਕਤ ਉਹਨਾਂ ਦੀ ਤਰਕ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਤੋਂ ਆਉਂਦੀ ਹੈ, ਇਸ ਲਈ ਉਹਨਾਂ ਨੂੰ ਟੂਲ ਅਤੇ ਸੰਦਰਭ ਦਿਓ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਤਰਕ ਕਰਨ ਦਿਓ।
Symphony ਬਣਾਉਣ ਲਈ Symphony ਦੀ ਵਰਤੋਂ ਕਰਨਾ
ਜਦੋਂ ਤੁਸੀਂ Symphony ਰਿਪੋਜ਼ਟਰੀ(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਖੋਲ੍ਹਦੇ ਹੋ, ਤਾਂ ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਤੁਸੀਂ ਇਹ ਨੋਟਿਸ ਕਰੋਗੇ ਕਿ Symphony ਤਕਨੀਕੀ ਤੌਰ 'ਤੇ ਸਿਰਫ਼ ਇੱਕ SPEC.md ਫਾਈਲ ਹੈ—ਇਹ ਸਮੱਸਿਆ ਅਤੇ ਉਸ ਦੇ ਹੱਲ ਦੀ ਪਰਿਭਾਸ਼ਾ ਹੈ। ਇੱਕ ਜਟਿਲ ਨਿਗਰਾਨੀ ਸਿਸਟਮ ਬਣਾਉਣ ਦੀ ਬਜਾਏ, ਅਸੀਂ ਸਮੱਸਿਆ ਅਤੇ ਉਦੇਸ਼ਿਤ ਹੱਲਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਅਤੇ ਏਜੰਟਾਂ ਨੂੰ ਉੱਚ ਪੱਧਰੀ ਮਾਰਗਦਰਸ਼ਨ ਦਿੱਤਾ।
ਇਸਦੀ ਰੈਫਰੈਂਸ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ Elixir ਵਿੱਚ ਤਿਆਰ ਕੀਤੀ ਗਈ ਹੈ—ਕਿਉਂਕਿ ਜਦੋਂ ਕੋਡ ਦੀ ਲਾਗਤ ਲਗਭਗ ਨਾ ਦੇ ਬਰਾਬਰ ਹੋਵੇ, ਤਾਂ ਤੁਸੀਂ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਨੂੰ ਉਹਨਾਂ ਦੀਆਂ ਖੂਬੀਆਂ ਦੇ ਅਧਾਰ 'ਤੇ ਚੁਣ ਸਕਦੇ ਹੋ ਜਿਵੇਂ ਕਿ Elixir ਦੀ ਕਨਕਰੰਸੀ - ਹਾਲਾਂਕਿ, ਇਸਦੇ ਮੂਲ ਵਿਚਾਰ ਨੂੰ ਇੱਕ ਸਧਾਰਨ ਮਾਰਕਡਾਊਨ ਦਸਤਾਵੇਜ਼ ਰਾਹੀਂ ਵੀ ਪੇਸ਼ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਅਸੀਂ ਤੁਹਾਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕਰਦੇ ਹਾਂ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਮਨਪਸੰਦ ਕੋਡਿੰਗ ਏਜੰਟ ਨੂੰ ਇਸ ਸਪੈਸੀਫਿਕੇਸ਼ਨ ਬਾਰੇ ਦੱਸੋ ਅਤੇ ਇਸ ਦਾ ਆਪਣਾ ਵਰਜ਼ਨ ਤਿਆਰ ਕਰਵਾਓ।
Symphony ਦਾ ਪਹਿਲਾ ਵਰਜਨ ਸਿਰਫ਼ tmux ਵਿੱਚ ਚੱਲਦਾ ਇੱਕ Codex ਸੈਸ਼ਨ ਸੀ, ਜੋ Linear ਨੂੰ ਪੋਲ ਕਰਦਾ ਸੀ ਅਤੇ ਨਵੇਂ ਕੰਮਾਂ ਲਈ ਸਬ-ਏਜੰਟ ਤਿਆਰ ਕਰਦਾ ਸੀ। ਇਸ ਨੇ ਕੰਮ ਕੀਤਾ, ਪਰ ਇਹ ਖਾਸ ਤੌਰ 'ਤੇ ਭਰੋਸੇਯੋਗ ਨਹੀਂ ਸੀ। ਦੂਜਾ ਵਰਜਨ ਸਾਡੀ ਮੁੱਖ ਪ੍ਰੋਜੈਕਟ ਰਿਪੋਜ਼ਟਰੀ ਦੇ ਅੰਦਰ ਮੌਜੂਦ ਸੀ, ਜਿਸਨੂੰ ਏਜੰਟਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖ ਕੇ ਬਣਾਇਆ ਗਿਆ ਸੀ। ਅਸੀਂ ਇਸ ਰਿਪੋ ਵਿੱਚ ਉੱਚ-ਗੁਣਵੱਤਾ ਵਾਲਾ ਕੰਮ ਕਰਨ ਲਈ ਏਜੰਟਾਂ ਨੂੰ ਹੁਨਰ ਅਤੇ ਸੰਦਰਭ ਦੇਣ ਵਾਸਤੇ ਏਜੰਟ ਹਾਰਨੈੱਸ ਪਹਿਲਾਂ ਹੀ ਬਣਾ ਚੁੱਕੇ ਸੀ, ਇਸ ਲਈ Symphony ਸਿਰਫ਼ ਇਹ ਸਭ ਕੁਝ ਆਪਸ ਵਿੱਚ ਜੋੜਦਾ ਹੈ।
ਜਦੋਂ ਬੁਨਿਆਦੀ ਕਾਰਜਕੁਸ਼ਲਤਾ ਤਿਆਰ ਹੋ ਗਈ, ਅਸੀਂ Symphony ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਸੇ ਨੂੰ ਹੋਰ ਵਿਕਸਿਤ ਕੀਤਾ।
ਜਦੋਂ ਅਸੀਂ ਅੰਦਰੂਨੀ ਤੌਰ ’ਤੇ ਉਹ ਸਿਸਟਮ ਡੈਮੋ ਕੀਤਾ ਜੋ ਟਾਸਕਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਸੀ ਅਤੇ ਕੰਮ ਦੇ ਸਬੂਤ ਵਜੋਂ ਆਪਣੀ ਵੀਡੀਓ ਜੋੜਦਾ ਸੀ, ਤਾਂ ਪ੍ਰਤੀਕਿਰਿਆ ਬਹੁਤ ਹੀ ਸਕਾਰਾਤਮਕ ਸੀ: ਸਾਡਾ Symphony ਪ੍ਰੋਜੈਕਟ ਚੈਨਲ ਵਧਿਆ ਅਤੇ ਸੰਸਥਾ ਦੀਆਂ ਟੀਮਾਂ ਨੇ ਇਸਨੂੰ ਸਵੈਭਾਵਿਕ ਤੌਰ ’ਤੇ ਵਰਤਣਾ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤਾ। OpenAI ਵਿੱਚ ਬਾਹਰੀ ਤੌਰ 'ਤੇ ਲਾਂਚ ਕਰਨ ਲਈ ਅੰਦਰੂਨੀ ਪ੍ਰੋਡਕਟ-ਮਾਰਕੀਟ ਫਿਟ ਇੱਕ ਪੂਰਵ-ਸ਼ਰਤ ਹੈ। OpenAI ਵਿੱਚ ਅਸੀਂ ਜੋ ਵਰਤੋਂ ਦੇਖੀ, ਉਸ ਦੇ ਆਧਾਰ 'ਤੇ ਇਹ ਸਪੱਸ਼ਟ ਹੋਇਆ ਕਿ ਸਾਨੂੰ Symphony ਨੂੰ ਕੰਪਨੀ ਦੀਆਂ ਹੱਦਾਂ ਤੋਂ ਬਾਹਰ ਵੀ ਸਾਂਝਾ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।
ਇਸ ਲਈ ਅਸੀਂ ਇਸ ਵਿਚਾਰ ਨੂੰ ਇੱਕ ਸਵਤੰਤਰ SPEC.md ਵਿੱਚ ਕੱਢਿਆ ਅਤੇ Codex ਨੂੰ ਇਸਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਕਿਹਾ। ਰੈਫਰੈਂਸ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਲਈ, ਅਸੀਂ Elixir ਨੂੰ ਚੁਣਿਆ ਹੈ, ਜੋ ਇੱਕ ਅਜਿਹੀ ਭਾਸ਼ਾ ਹੈ ਜਿਸਦੀ ਵਰਤੋਂ ਭਾਵੇਂ ਸੀਮਤ ਹੈ, ਪਰ ਇਸ ਵਿੱਚ ਕੰਕਰੰਟ ਪ੍ਰੋਸੈਸਿਜ਼ ਦੇ ਸੰਚਾਲਨ ਅਤੇ ਨਿਗਰਾਨੀ ਲਈ ਬਿਹਤਰੀਨ ਮੂਲ ਤੱਤ ਮੌਜੂਦ ਹਨ। Codex ਨੇ Elixir ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਵਨ-ਸ਼ਾਟ ਤਿਆਰ ਕਰ ਦਿੱਤੀ, ਅਤੇ ਅਸੀਂ ਉਥੋਂ ਅੱਗੇ ਸਪੈਸੀਫਿਕੇਸ਼ਨ ਅਤੇ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਦੋਵਾਂ 'ਤੇ ਲਗਾਤਾਰ ਸੁਧਾਰ ਕਰਦੇ ਰਹੇ। ਸਪੈਸੀਫਿਕੇਸ਼ਨ ਨੂੰ ਨਿਖਾਰਨ ਲਈ, ਅਸੀਂ Codex ਨੂੰ ਇਹ ਹੋਰ ਕਈ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ—TypeScript, Go, Rust, Java, Python—ਵਿੱਚ ਲਾਗੂ ਕਰਨ ਲਈ ਵੀ ਕਿਹਾ, ਅਤੇ ਨਤੀਜਿਆਂ ਦੀ ਵਰਤੋਂ ਅਸਪਸ਼ਟਤਾਵਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਅਤੇ ਸਿਸਟਮ ਨੂੰ ਸਰਲ ਬਣਾਉਣ ਲਈ ਕੀਤੀ। ਇਹ ਹਰ ਭਾਸ਼ਾ ਵਿੱਚ ਸਫਲ ਰਿਹਾ।
Symphony ਬਣਾਉਣ ਦੀ ਪ੍ਰਕਿਰਿਆ ਦੌਰਾਨ, ਅਸੀਂ ਬਹੁਤ ਸਾਰੀ ਗੈਰ-ਜ਼ਰੂਰੀ ਜਟਿਲਤਾ ਹਟਾ ਦਿੱਤੀ, ਜਿਵੇਂ ਕਿ ਖਾਸ ਰਿਪੋਜ਼ਟਰੀ ਜਾਂ Linear MCP 'ਤੇ ਨਿਰਭਰਤਾਵਾਂ। Symphony ਹੁਣ ਸਾਡੀਆਂ ਅੰਦਰੂਨੀ ਰਿਪੋਜ਼ਟਰੀਆਂ ਜਾਂ ਵਰਕਫ਼ਲੋ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਕਰਦਾ। ਮੂਲ ਪਹੁੰਚ ਸਰਲ ਬਣ ਗਈ:
ਹਰ ਖੁੱਲ੍ਹੇ ਕੰਮ ਲਈ, ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਇੱਕ ਏਜੰਟ ਆਪਣੇ ਹੀ ਵਰਕਸਪੇਸ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ।
ਚੱਲ ਰਹੇ ਕੰਮ ਵਿੱਚ ਮਦਦ ਕਰਨ ਤੋਂ ਇਲਾਵਾ, ਵਿਕਾਸ ਵਰਕਫਲੋ ਹੁਣ ਇੱਕ ਅਜਿਹੀ ਪ੍ਰਕਿਰਿਆ ਹੈ ਜਿਸਨੂੰ ਏਜੰਟ ਜਾਣਦੇ ਹਨ ਅਤੇ ਜਿਸਦੀ ਪਾਲਣਾ ਕਰਦੇ ਹਨ। ਵਿਕਾਸ ਵਰਕਫਲੋ—ਕਿਸੇ ਇਸ਼ੂ 'ਤੇ ਕੰਮ ਕਰਨਾ, ਰਿਪੋ ਚੈੱਕ ਆਊਟ ਕਰਨਾ, ਇਸਨੂੰ ਜਾਰੀ ਸਥਿਤੀ ਵਿੱਚ ਰੱਖਣਾ ਤਾਂ ਜੋ PM ਨੂੰ ਪਤਾ ਲੱਗੇ ਕਿ ਇਸ 'ਤੇ ਕੰਮ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, PR ਜੋੜਨਾ, ਇਸਨੂੰ ਸਮੀਖਿਆ ਸਥਿਤੀ ਵਿੱਚ ਲਿਜਾਣਾ, ਵੀਡੀਓ ਅਟੈਚ ਕਰਨਾ, ਆਦਿ—ਹੁਣ ਇੱਕ ਸਧਾਰਨ WORKFLOW.md ਫਾਈਲ ਵਿੱਚ ਕੈਪਚਰ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਸਾਰਾ ਕੁਝ ਇੱਕ ਅਜਿਹੀ ਪ੍ਰਕਿਰਿਆ ਹੈ ਜਿਸਦਾ ਮਨੁੱਖਾਂ ਨੇ ਪਾਲਣ ਕੀਤਾ, ਪਰ ਇਸਨੂੰ ਕਦੇ ਵੀ ਦਸਤਾਵੇਜ਼ਬੱਧ ਨਹੀਂ ਕੀਤਾ ਗਿਆ। ਪੜਾਵਾਂ ਦੇ ਇਸ ਅਪ੍ਰਤੱਖ ਸੈੱਟ 'ਤੇ ਨਿਰਭਰ ਕਰਨ ਦੀ ਬਜਾਏ, ਹੁਣ ਅਸੀਂ ਇਸਨੂੰ ਦਸਤਾਵੇਜ਼ਬੱਧ ਕਰਦੇ ਹਾਂ, ਅਤੇ Symphony ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਏਜੰਟ ਇਸਦੀ ਪਾਲਣਾ ਕਰਨ। ਇਸ ਨਾਲ ਅਸੀਂ ਅਜਿਹੇ ਏਜੰਟ ਤਿਆਰ ਕਰ ਸਕਦੇ ਹਾਂ ਜੋ ਸਾਡੇ ਨਾਲ ਮਿਲ ਕੇ ਕੰਮ ਕਰਦੇ ਹਨ। ਜੇ ਅਸੀਂ ਫੈਸਲਾ ਕਰਦੇ ਹਾਂ ਕਿ ਏਜੰਟਾਂ ਨੂੰ ਮੁਕੰਮਲ ਕੀਤੇ ਕੰਮ ਨਾਲ ਸਵੈ-ਚਿੰਤਨ ਵੀ ਜੋੜਨਾ ਚਾਹੀਦਾ ਹੈ, ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ WORKFLOW.md ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਾਂਗੇ, ਅਤੇ Symphony ਏਜੰਟਾਂ ਨੂੰ ਉਸ ਕਦਮ ਤੱਕ ਮਾਰਗਦਰਸ਼ਨ ਕਰੇਗਾ।
ਸਾਨੂੰ Codex ਨੂੰ ਐਪ ਸਰਵਰ ਮੋਡ(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਵਿੱਚ ਵਰਤਣ ਦਾ ਮੌਕਾ ਵੀ ਮਿਲਿਆ, ਜੋ Codex ਲਈ ਇੱਕ ਬਿਲਟ-ਇਨ ਹੈੱਡਲੈੱਸ ਮੋਡ ਹੈ। ਇਸ ਮੋਡ ਨੇ ਸਾਨੂੰ Codex ਨੂੰ ਚਲਾਉਣ ਅਤੇ ਇੱਕ ਚੰਗੀ ਤਰ੍ਹਾਂ ਡੌਕੂਮੈਂਟਿਡ JSON-RPC API ਰਾਹੀਂ ਪ੍ਰੋਗਰਾਮੈਟਿਕ ਤੌਰ 'ਤੇ ਗੱਲਬਾਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੱਤੀ, ਜਿਵੇਂ ਕਿ ਕੋਈ ਥ੍ਰੈੱਡ ਸ਼ੁਰੂ ਕਰਨਾ ਜਾਂ ਵਾਰੀਆਂ ‘ਤੇ ਪ੍ਰਤੀਕਿਰਿਆ ਦੇਣਾ। ਇਹ CLI ਜਾਂ ਲਾਈਵ tmux ਸੈਸ਼ਨਾਂ ਰਾਹੀਂ Codex ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਨਾਲੋਂ ਵਧੇਰੇ ਸੁਵਿਧਾਜਨਕ ਅਤੇ ਸਕੇਲੇਬਲ ਹੈ।
Codex ਐਪ ਸਰਵਰ ਸਾਡੇ ਯੂਜ਼ ਕੇਸ ਲਈ ਬਿਲਕੁਲ ਸਹੀ ਸੀ: ਅਸੀਂ Codex ਦੁਆਰਾ ਪ੍ਰਦਾਨ ਕੀਤੇ ਗਏ ਹਾਰਨੈੱਸ ਦਾ ਫਾਇਦਾ ਉਠਾਉਂਦੇ ਹਾਂ ਅਤੇ ਨਾਲ ਹੀ ਸਾਡੇ ਕੋਲ ਇਸ ਨਾਲ ਜੁੜ੍ਹਨ ਲਈ ਲੋੜੀਂਦੇ ਨੌਬਸ ਅਤੇ ਹੁੱਕਸ ਵੀ ਉਪਲਬੱਧ ਹਨ। ਉਦਾਹਰਨ ਲਈ, Linear ਐਕਸੈੱਸ ਟੋਕਨ ਨੂੰ ਸਬਏਜੰਟਾਂ ਅੱਗੇ ਉਜਾਗਰ ਕਰਨ ਤੋਂ ਬਚਾਉਣ ਲਈ, ਅਸੀਂ ਡਾਇਨਾਮਿਕ ਟੂਲ ਕਾਲਾਂ(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ, ਜੋ Linear ਦੇ ਵਿਰੁੱਧ ਮਨਮਾਨੀਆਂ ਬੇਨਤੀਆਂ ਚਲਾਉਣ ਵਾਲੇ ਅਸਲ linear_graphql ਫੰਕਸ਼ਨ ਨੂੰ ਉਜਾਗਰ ਕਰਦਾ ਹੈ, ਬਿਨ੍ਹਾਂ MCP 'ਤੇ ਨਿਰਭਰ ਕੀਤੇ ਜਾਂ ਕੰਟੇਨਰਾਂ ਅੱਗੇ ਐਕਸੈੱਸ ਟੋਕਨ ਨੂੰ ਉਜਾਗਰ ਕੀਤੇ।
ਅਗਲਾ ਕੀ ਹੈ
Symphony ਇੱਕ ਜਾਣ-ਬੁੱਝ ਕੇ ਘੱਟ ਤੋਂ ਘੱਟ ਰੱਖੀ ਗਈ ਓਰਕੈਸਟ੍ਰੇਸ਼ਨ ਲੇਅਰ ਹੈ। ਅਸੀਂ ਇਸਨੂੰ ਓਪਨ ਸੋਰਸ ਕਰ ਰਹੇ ਹਾਂ ਤਾਂ ਜੋ Linear ਵਰਗੇ ਵੱਖ-ਵੱਖ ਵਰਕਫਲੋ ਟੂਲਾਂ ਨਾਲ ਜੋੜੇ ਜਾਣ 'ਤੇ Codex ਐਪ ਸਰਵਰ ਦੀ ਤਾਕਤ ਦਿਖਾਈ ਜਾ ਸਕੇ। ਇਸ ਕਰਕੇ, ਅਸੀਂ Symphony ਨੂੰ ਇੱਕ ਵੱਖਰੇ ਉਤਪਾਦ ਵਜੋਂ ਬਰਕਰਾਰ ਰੱਖਣ ਦੀ ਯੋਜਨਾ ਨਹੀਂ ਬਣਾ ਰਹੇ ਹਾਂ। ਇਸਨੂੰ ਇੱਕ ਰੈਫਰੈਂਸ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਵਜੋਂ ਸਮਝੋ। ਜਿਵੇਂ ਕਈ ਡਿਵੈਲਪਰਾਂ ਨੇ ਆਪਣੀਆਂ ਰਿਪੋਜ਼ਟਰੀਆਂ ਦਾ ਸਕੈਫੋਲਡ ਤਿਆਰ ਕਰਨ ਲਈ ਹਾਰਨੈੱਸ ਇੰਜੀਨੀਅਰਿੰਗ ਪੋਸਟ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਸੀ, ਅਸੀਂ ਉਮੀਦ ਕਰਦੇ ਹਾਂ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਮਨਪਸੰਦ ਕੋਡਿੰਗ ਏਜੰਟ ਨੂੰ Symphony ਦੇ ਸਪੈਸੀਫਿਕੇਸ਼ਨ(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਅਤੇ ਰਿਪੋਜ਼ਟਰੀ(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਵੱਲ ਲਗਾਓਗੇ ਤਾਂ ਜੋ ਆਪਣੇ ਵਾਤਾਵਰਣਾਂ ਲਈ ਖਾਸ ਵਰਜ਼ਨ ਤਿਆਰ ਕਰ ਸਕੋ।
ਇਹ ਤਾਕਤ Codex ਅਤੇ ਇਸਦੇ ਐਪ ਸਰਵਰ ਤੋਂ ਆਉਂਦੀ ਹੈ। Symphony, Codex ਨੂੰ Linear ਨਾਲ ਜੋੜਨ ਦਾ ਇੱਕ ਤਰੀਕਾ ਸੀ—ਇਹ ਦੋਵੇਂ ਚੀਜ਼ਾਂ ਅਸੀਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤਦੇ ਸੀ—ਤਾਂ ਜੋ ਕੰਮ ਪ੍ਰਬੰਧਨ ਦੀ ਸਮੱਸਿਆ ਹੱਲ ਕੀਤੀ ਜਾ ਸਕੇ। ਜਿਵੇਂ-ਜਿਵੇਂ ਕੋਡਿੰਗ ਏਜੰਟ ਰੀਜ਼ਨਿੰਗ ਕਰਨ ਅਤੇ ਹਦਾਇਤਾਂ ਦੀ ਪਾਲਣਾ ਕਰਨ ਵਿੱਚ ਬਿਹਤਰ ਹੁੰਦੇ ਜਾ ਰਹੇ ਹਨ, ਸਾਨੂੰ ਲੱਗਦਾ ਹੈ ਕਿ ਹੋਰ ਕੰਪਨੀਆਂ ਵਿੱਚ ਵੀ ਮੁੱਖ ਰੁਕਾਵਟ ਕੋਡ ਲਿਖਣ ਤੋਂ ਹਟ ਕੇ ਏਜੰਟਿਕ ਕੰਮ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਵੱਲ ਸ਼ਿਫਟ ਹੋਵੇਗਾ। ਉਤਸ਼ਾਹਜਨਕ ਗੱਲ ਇਹ ਹੈ ਕਿ ਇਹਨਾਂ ਕੋਡਿੰਗ ਏਜੰਟ ਸਿਸਟਮਾਂ ਨਾਲ ਪ੍ਰਯੋਗ ਕਰਨ ਦੀ ਰੁਕਾਵਟ ਹੁਣ ਹੈਰਾਨੀਜਨਕ ਤੌਰ 'ਤੇ ਘੱਟ ਹੈ। ਤੁਸੀਂ Codex ਨਾਲ ਬਸ ਚੀਜ਼ਾਂ ਬਣਾ ਸਕਦੇ ਹੋ।
ਕਮਿਊਨਿਟੀ ਦੀਆਂ ਸ਼ਲਾਘਾਵਾਂ
ਸਾਨੂੰ ਇਹ ਦੇਖ ਕੇ ਬਹੁਤ ਖੁਸ਼ੀ ਹੋ ਰਹੀ ਹੈ ਕਿ ਰਿਲੀਜ਼ ਤੋਂ ਬਾਅਦ ਦੇ ਹਫ਼ਤਿਆਂ ਵਿੱਚ ਇੰਜੀਨੀਅਰਿੰਗ ਕਮਿਊਨਿਟੀ Symphony ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਹੈ, ਅਤੇ 23 ਅਪ੍ਰੈਲ ਤੱਕ 15K ਤੋਂ ਵੱਧ GitHub ਸਟਾਰ(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਹਾਸਲ ਕਰ ਚੁੱਕੀ ਹੈ।