ਅਸੀਂ ਇੱਕ ਵੀਕੈਂਡ ਵਿੱਚ ਇੱਕ ਆਟੋਨੋਮਸ ਕੋਡ ਗਾਰਡੀਅਨ ਬਣਾਇਆ

ਅਸੀਂ ਇੱਕ ਵੱਡੇ ਟੀਚੇ ਨਾਲ JacHacks ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਏ।

ਇੱਕ ਅਜਿਹਾ ਟੂਲ ਬਣਾਓ ਜੋ ਰੈਪੋਜ਼ੀਟਰੀ (repository) 'ਤੇ ਨਜ਼ਰ ਰੱਖੇ। ਇਹ ਸ਼ੱਕੀ ਡਿਪੈਂਡੈਂਸੀ (dependency) ਤਬਦੀਲੀਆਂ ਦਾ ਪਤਾ ਲਗਾਉਣ ਦੇ ਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਹ ਸਾਬਤ ਕਰਨ ਲਈ ਕਿ ਉਹ ਮਾਲੀਸ਼ੀਅਸ (malicious) ਹਨ, ਉਹਨਾਂ ਡਿਪੈਂਡੈਂਸੀਆਂ ਨੂੰ ਇੱਕ ਸੈਂਡਬਾਕਸ (sandbox) ਵਿੱਚ ਚਲਾਉਣਾ ਚਾਹੀਦਾ ਹੈ। ਫਿਰ, ਇਸਨੂੰ ਇੱਕ ਫਿਕਸ ਲਿਖਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਇੱਕ ਪੁੱਲ ਰਿਕਵੈਸਟ (pull request) ਖੋਲ੍ਹਣੀ ਚਾਹੀਦੀ ਹੈ। ਅੰਤ ਤੱਕ ਕੋਈ ਇਨਸਾਨ ਸ਼ਾਮਲ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ।

ਅਸੀਂ ਇਸਨੂੰ GhostWatch ਦਾ ਨਾਮ ਦਿੱਤਾ। ਇਸਨੇ agentic track ਵਿੱਚ ਦੂਜਾ ਸਥਾਨ ਹਾਸਲ ਕੀਤਾ।

ਇੱਥੇ ਦੱਸਿਆ ਗਿਆ ਹੈ ਕਿ ਅਸੀਂ ਇਸਨੂੰ ਕਿਵੇਂ ਬਣਾਇਆ ਅਤੇ ਅਸੀਂ ਕੀ ਸਿੱਖਿਆ।

ਸਮੱਸਿਆ

ਸਟੈਂਡਰਡ ਕੋਡ ਰਿਵਿਊਜ਼ ਵਿੱਚ ਦੋ ਵੱਡੀਆਂ ਕਮੀਆਂ ਹਨ:

  • ਟੂਲਸ 'ਬਲਾਸਟ ਰੇਡੀਅਸ' (blast radius) ਨਹੀਂ ਦੇਖ ਸਕਦੇ। ਇੱਕ ਫੰਕਸ਼ਨ ਵਿੱਚ ਤਬਦੀਲੀ ਦੂਰ ਦੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਖਰਾਬ ਕਰ ਸਕਦੀ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਟੂਲ ਕਨੈਕਸ਼ਨਾਂ ਨੂੰ ਨਹੀਂ ਦੇਖਦੇ।
  • ਸਪਲਾਈ ਚੇਨ ਅਟੈਕਸ (Supply chain attacks) ਰਿਵਿਊਜ਼ ਨੂੰ ਬਾਈਪਾਸ ਕਰ ਦਿੰਦੇ ਹਨ। ਇੱਕ ਅਟੈਕਰ ਸਿੱਧਾ ਰਜਿਸਟਰੀ ਵਿੱਚ ਇੱਕ ਜ਼ਹਿਰੀਲਾ (poisoned) ਵਰਜ਼ਨ ਪੁਸ਼ ਕਰ ਸਕਦਾ ਹੈ। ਰਿਵਿਊ ਕਰਨ ਲਈ ਕੋਈ ਪੁੱਲ ਰਿਕਵੈਸਟ ਨਹੀਂ ਹੁੰਦੀ। ਤੁਹਾਨੂੰ ਨੁਕਸਾਨ ਹੋਣ ਤੋਂ ਬਾਅਦ ਹੀ ਪਤਾ ਲੱਗਦਾ ਹੈ।

ਸਾਡਾ ਹੱਲ

ਅਸੀਂ ਸਪੇਸ਼ੀਅਲ ਅਵੇਅਰਨੈੱਸ (spatial awareness) ਵਾਲਾ ਇੱਕ ਸਿਸਟਮ ਬਣਾਇਆ। ਅਸੀਂ ਕੋਡਬੇਸ ਨੂੰ ਗ੍ਰਾਫ ਵਜੋਂ ਮਾਡਲ ਕਰਨ ਲਈ Jac ਦੀ ਵਰਤੋਂ ਕੀਤੀ।

ਇਸ ਗ੍ਰਾਫ ਵਿੱਚ:

  • ਫਾਈਲਾਂ ਨੋਡਸ (nodes) ਹਨ।
  • ਇੰਪੋਰਟਸ (imports) ਐਜਸ (edges) ਹਨ।

ਬਲਾਸਟ ਰੇਡੀਅਸ ਲੱਭਣ ਲਈ, ਅਸੀਂ ਅੰਦਾਜ਼ਾ ਨਹੀਂ ਲਗਾਉਂਦੇ। ਅਸੀਂ ਗ੍ਰਾਫ ਵਾਕ (graph walk) ਕਰਦੇ ਹਾਂ। ਇਹ ਸੁਰੱਖਿਆ ਲੌਜਿਕ ਨੂੰ ਡਿਟਰਮਿਨਿਸਟਿਕ (deterministic) ਅਤੇ ਸਮਝਣਯੋਗ ਬਣਾਉਂਦਾ ਹੈ।

ਟੈਕ ਸਟੈਕ

ਅਸੀਂ ਰਅਅ (raw) Python ਅਤੇ ਮੈਨੂਅਲ LLM ਕਾਲਜ਼ ਦੀ ਬਜਾਏ Jac ਦੀ ਵਰਤੋਂ ਕੀਤੀ। ਇਸਨੇ ਸਾਡੇ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ ਬਦਲ ਦਿੱਤਾ:

  • ਕੋਡਬੇਸ ਹੀ ਡਾਟਾ ਸਟ੍ਰਕਚਰ ਹੈ।
  • ਪਰਸਿਸਟੈਂਸ (Persistence) ਬਿਲਟ-ਇਨ ਹੈ। ਸਾਡਾ ਰੈਪੋ ਗ੍ਰਾਫ ਵੱਖਰੇ ਡਾਟਾਬੇਸ ਤੋਂ ਬਿਨਾਂ ਰੀਸਟਾਰਟ ਤੋਂ ਬਾਅਦ ਵੀ ਬਣਿਆ ਰਹਿੰਦਾ ਹੈ।
  • LLM ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਬਹੁਤ ਸੁਚਾਰੂ ਹੈ। ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ ਨੂੰ LLM ਕਾਲ ਵਿੱਚ ਬਦਲਣ ਲਈ ਇੱਕ ਸਿੰਗਲ ਕੀਵਰਡ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ ਜੋ ਟਾਈਪਡ (typed) ਆਬਜੈਕਟਸ ਵਾਪਸ ਕਰਦਾ ਹੈ।

ਮੁਸ਼ਕਲ ਹਿੱਸੇ

ਇਹ ਸੌਖਾ ਨਹੀਂ ਸੀ। ਸਾਨੂੰ ਕਈ ਰੁਕਾਵਟਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ:

  • ਨਵਾਂ ਸਿੰਟੈਕਸ: Jac ਵਿੱਚ Python ਦੇ "self" ਦੀ ਬਜਾਏ ਸੈਮੀਕੋਲਨ, ਬ੍ਰੇਸਿਸ (braces), ਅਤੇ "has" ਵਰਗੇ ਖਾਸ ਕੀਵਰਡਸ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਪਹਿਲੇ ਕੁਝ ਘੰਟੇ ਪਾਰਸਿੰਗ ਗਲਤੀਆਂ (parse errors) ਨੂੰ ਸੁਧਾਰਨ ਵਿੱਚ ਬਿਤਾਏ।
  • React ਦੀਆਂ ਮੁਸ਼ਕਲਾਂ: ਮੈਂ ਲਿਸਟਾਂ ਨੂੰ ਇਨ-ਪਲੇਸ (in place) ਬਦਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। ਇਸ ਨਾਲ ਫਰੰਟਐਂਡ ਅਪਡੇਟ ਨਹੀਂ ਹੋ ਰਿਹਾ ਸੀ। ਮੈਨੂੰ ਰੀ-ਰੈਂਡਰ (re-renders) ਨੂੰ ਟ੍ਰਿਗਰ ਕਰਨ ਲਈ ਲਿਸਟਾਂ ਨੂੰ ਦੁਬਾਰਾ ਅਸਾਈਨ (reassigning) ਕਰਨ ਦੀ ਲੋੜ ਪਈ।
  • ਡਾਕੂਮੈਂਟੇਸ਼ਨ ਦੀ ਕਮੀ: ਵਾਤਾਵਰਣ (environment) ਸੈੱਟਅੱਪ ਕਰਨ ਵਿੱਚ ਉਮੀਦ ਤੋਂ ਵੱਧ ਸਮਾਂ ਲੱਗ ਗਿਆ ਕਿਉਂਕਿ ਕੁਝ ਡਾਕੂਮੈਂਟੇਸ਼ਨ ਬਹੁਤ ਘੱਟ ਸੀ।

ਇਹ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹੈ

ਜ਼ਿਆਦਾਤਰ ਏਜੰਟ ਸਿਸਟਮਾਂ ਵਿੱਚ ਤੁਹਾਨੂੰ ਸਟੇਟ (state), ਆਰਕੈਸਟ੍ਰੇਸ਼ਨ (orchestration), ਅਤੇ ਸੀਰੀਅਲਾਈਜ਼ੇਸ਼ਨ (serialization) ਨੂੰ ਮੈਨੂਅਲ ਤਰੀਕੇ ਨਾਲ ਮੈਨੇਜ ਕਰਨਾ ਪੈਂਦਾ ਹੈ। Jac ਦੇ ਨਾਲ, ਗ੍ਰਾਫ ਇੱਕ ਭਾਸ਼ਾ ਰਚਨਾ (language construct) ਹੈ। ਸਿਸਟਮ ਆਰਕੀਟੈਕਚਰ ਉਸ ਸਮੱਸਿਆ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ ਜਿਸ ਨੂੰ ਅਸੀਂ ਹੱਲ ਕਰ ਰਹੇ ਸੀ।

ਪ੍ਰੋਜੈਕਟ ਸੰਪੂਰਨ ਨਹੀਂ ਹੈ। ਸੈਂਡਬਾਕਸ ਕਲਾਉਡ ਮਾਈਕਰੋ-ਵੀਐਮ (cloud microVMs) ਦੀ ਬਜਾਏ ਲੋਕਲ ਸਬ-ਪ੍ਰੋਸੈਸਿਸ (local subprocesses) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਅਸੀਂ ਇਹਨਾਂ ਕਮੀਆਂ ਨੂੰ ਸਾਹਮਣੇ ਰੱਖਿਆ ਹੈ ਕਿਉਂਕਿ ਹੈਕਾਥਨ ਦੀ ਚਮਕ (polish) ਕੋਈ ਝੂਠ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ।

ਡੈਮੋ ਦੇਖੋ: https://www.youtube.com/watch?v=ZN0UVnNUpRs

ਕੋਡ ਚੈੱਕ ਕਰੋ: https://github.com/ayushmk7/GhostWatch

ਸਰੋਤ: https://dev.to/ayushmk/we-built-an-autonomous-code-guardian-in-a-weekend-heres-what-happened-4982

ਵਿਕਲਪਿਕ ਲਰਨਿੰਗ ਕਮਿਊਨਿਟੀ: https://t.me/GyaanSetuAi