Sverklo, ਇੱਕ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਹੋਸਟ ਕੀਤਾ ਗਿਆ ਕੋਡ-ਸਰਚ ਸਰਵਰ, ਹੁਣ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਕਿਸੇ AI ਏਜੰਟ ਦੁਆਰਾ ਨਤੀਜੇ 'ਤੇ ਕਾਰਵਾਈ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਫਾਈਲ ਦੀ ਖੋਜ ਤੋਂ ਲੈ ਕੇ ਸਿੰਬਲ-ਗ੍ਰਾਫ ਤਰਕ (symbol-graph reasoning) ਤੱਕ, ਕੁਐਰੀ ਦੇ ਹਰ ਕਦਮ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।

ਮੌਜੂਦਾ ਕੋਡਿੰਗ ਏਜੰਟ ਕਿਉਂ ਅੜਖੜੇ ਪੈਂਦੇ ਹਨ

ਜ਼ਿਆਦਾਤਰ ਕੋਡ-ਜਨਰੇਸ਼ਨ ਟੂਲਜ਼ ਇੱਕ ਰੈਪੋਜ਼ਟਰੀ ਨੂੰ ਇੱਕ ਵਿਸ਼ਾਲ ਟੈਕਸਟ ਡੰਪ ਵਾਂਗ ਮੰਨਦੇ ਹਨ। ਉਹ ਸਨਿਪੇਟਸ (snippets) ਨੂੰ ਐਂਬੈਡ ਕਰਦੇ ਹਨ, ਸਮਾਨਤਾ ਸਰਚ (similarity search) ਚਲਾਉਂਦੇ ਹਨ, ਅਤੇ ਸਭ ਤੋਂ ਵੱਧ ਸਕੋਰ ਵਾਲਾ ਫਰੈਗਮੈਂਟ ਵਾਪਸ ਕਰਦੇ ਹਨ। ਜਦੋਂ ਉਹ ਫਰੈਗਮੈਂਟ ਪੁਰਾਣਾ (stale), ਸਕੋਪ ਤੋਂ ਬਾਹਰ, ਜਾਂ ਸਿਰਫ਼ ਇੱਕ ਫਾਈਲ ਦਾ ਨਾਮ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਏਜੰਟ ਇਸਦੇ ਸਰੋਤ ਵੱਲ ਇਸ਼ਾਰਾ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਅਸਫਲਤਾ ਦਾ ਕਾਰਨ ਕੋਈ ਗੁੰਮ ਹੋਇਆ ਸ਼ਬਦ ਨਹੀਂ ਹੈ; ਇਹ ਸੰਦਰਭ ਦੀ ਇੱਕ ਘਾਟ (missing context layer) ਹੈ ਜੋ ਇਨਸਾਨ ਨੂੰ ਇਹ ਦੱਸਦੀ ਹੈ ਕਿ ਉਹ ਤੱਥ ਕਿੱਥੋਂ ਆਇਆ ਸੀ ਅਤੇ ਕੀ ਇਹ ਅਜੇ ਵੀ ਲਾਗੂ ਹੁੰਦਾ ਹੈ।

Sverklo ਦਾ ਚਾਰ-ਪੱਧਰੀ ਵੈਰੀਫਿਕੇਸ਼ਨ ਮਾਡਲ

Sverklo ਆਪਣੇ ਆਪ ਨੂੰ ਇੱਕ "ਇੰਜੀਨੀਅਰਿੰਗ ਹਾਈਪੋਥਿਸਿਸ" ਸਰਵਰ ਵਜੋਂ ਪੇਸ਼ ਕਰਦਾ ਹੈ ਜੋ ਰਵਾਇਤੀ ਸਰਚ ਨੂੰ ਸਟ੍ਰਕਚਰਲ ਵਿਸ਼ਲੇਸ਼ਣ ਨਾਲ ਜੋੜਦਾ ਹੈ:

  • ਫਾਈਲ ਦੀ ਖੋਜ (File Discovery) – ਇੰਡੈਕਸ .gitignore ਅਤੇ ਹੋਰ ਇਗਨੋਰ ਫਾਈਲਾਂ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ। ਕਿਸੇ ਨਤੀਜੇ 'ਤੇ ਭਰੋਸਾ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਸੀਂ ਇਹ ਦੇਖਣ ਲਈ ਇੰਡੈਕਸ ਨੂੰ ਕੁਐਰੀ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਅਸਲ ਵਿੱਚ ਕਿਹੜੇ ਪਾਥ (paths) ਸਕੈਨ ਕੀਤੇ ਗਏ ਸਨ।
  • ਕੋਡ ਦੀ ਬਣਤਰ (Code Structure) – ਸਿੰਬਲ (Symbols) ਇੱਕ ਗ੍ਰਾਫ ਵਿੱਚ ਹੁੰਦੇ ਹਨ ਜੋ ਡੈਫੀਨੇਸ਼ਨਾਂ, ਇੰਪੋਰਟਸ ਅਤੇ ਕਾਲ ਰਿਲੇਸ਼ਨਸ਼ਿਪਸ ਨੂੰ ਰਿਕਾਰਡ ਕਰਦਾ ਹੈ। ਇੱਕ ਲੁੱਕਅੱਪ ਸਿਰਫ਼ ਫਾਈਲ ਪਾਥ ਨਹੀਂ, ਸਗੋਂ ਸਿੰਬਲ ਆਬਜੈਕਟ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਤਾਂ ਜੋ ਤੁਸੀਂ ਪੁਸ਼ਟੀ ਕਰ ਸਕੋ ਕਿ ਸਹੀ API ਸਰਫੇਸ ਦਾ ਹਵਾਲਾ ਦਿੱਤਾ ਗਿਆ ਹੈ।
  • ਸੰਦਰਭ ਪ੍ਰਦਾਨ ਕਰਨਾ (Context Delivery) – ਜਦੋਂ ਤੁਸੀਂ ਟੋਕਨ ਬਜਟ ਸੈੱਟ ਕਰਦੇ ਹੋ, ਤਾਂ Sverklo ਉਨ੍ਹਾਂ ਸਨਿਪੇਟਸ ਦਾ ਇੱਕ ਮੈਪ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੇ ਉੱਤਰ ਵਿੱਚ ਯੋਗਦਾਨ ਪਾਇਆ ਸੀ। ਇਸ ਮੈਪ ਵਿੱਚ ਇੱਕ found_by ਫੀਲਡ ਸ਼ਾਮਲ ਹੁੰਦੀ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਦੱਸਦੀ ਹੈ ਕਿ ਮੈਚ BM25 ਕੀਵਰਡ ਮੈਚਿੰਗ, ONNX-ਜਨਰੇਟਡ ਐਂਬੈਡਿੰਗਜ਼, ਜਾਂ PageRank-ਰੈਂਕਡ ਸਿੰਬਲ ਗ੍ਰਾਫ ਤੋਂ ਆਇਆ ਸੀ।
  • ਮੈਮੋਰੀ ਲੈਜਰ (Memory Ledger) – ਸਰਵਰ ਹਰ ਫੈਸਲੇ ਨੂੰ ਲੌਗ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਕੋਈ ਫਾਈਲ ਬਦਲਦੀ ਹੈ, ਤਾਂ ਲੈਜਰ ਸੰਬੰਧਿਤ ਮੈਮੋਰੀ ਐਂਟਰੀ ਨੂੰ ਪੁਰਾਣਾ (stale) ਵਜੋਂ ਫਲੈਗ ਕਰ ਦਿੰਦਾ ਹੈ, ਜੋ ਇਹ ਦੱਸਦਾ ਹੈ ਕਿ ਕੀ ਕੈਸ਼ ਕੀਤੇ ਗਏ ਉੱਤਰ ਅਜੇ ਵੀ ਵੈਧ ਹਨ।

ਰਿਟ੍ਰੀਵਲ ਸਟੈਕ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ

Sverklo ਸਿਰਫ਼ ਐਂਬੈਡਿੰਗਜ਼ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਕਰਦਾ। ਇਹ ਸਹੀ ਸ਼ਬਦਾਂ ਦੇ ਮੈਚ ਲਈ ਇੱਕ ਕਲਾਸਿਕ BM25 ਕੀਵਰਡ ਇੰਜਣ ਚਲਾਉਂਦਾ ਹੈ, ਉਹਨਾਂ ਹਿੱਟਸ ਨੂੰ ਅਰਥਕ ਸਮਾਨਤਾ (semantic similarity) ਲਈ ONNX-ਅਧਾਰਤ ਵੈਕਟਰ ਐਂਬੈਡਿੰਗਜ਼ ਨਾਲ ਵਧਾਉਂਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਉੱਚ-ਪ੍ਰਭਾਵ ਵਾਲੀਆਂ ਡੈਫੀਨੇਸ਼ਨਾਂ ਨੂੰ ਸਾਹਮਣੇ ਲਿਆਉਣ ਲਈ ਸਿੰਬਲ ਗ੍ਰਾਫ 'ਤੇ PageRank ਐਲਗੋਰਿਦਮ ਲਾਗੂ ਕਰਦਾ ਹੈ। ਹਰੇਕ ਹਿੱਟ ਨੂੰ ਪੈਦਾ ਕਰਨ ਵਾਲੇ ਤਰੀਕੇ ਨੂੰ ਪ੍ਰਗਟ ਕਰਕੇ, ਡਿਵੈਲਪਰ ਅਸਹਿਮਤੀਆਂ ਨੂੰ ਪਛਾਣ ਸਕਦੇ ਹਨ—ਉਦਾਹਰਨ ਲਈ, ਇੱਕ BM25 ਹਿੱਟ ਜਿਸ ਨੂੰ ਐਂਬੈਡਿੰਗ ਮਾਡਲ ਅਪ੍ਰਸੰਗਿਕ ਮੰਨਦਾ ਹੈ—ਅਤੇ ਚੁਣ ਸਕਦੇ ਹਨ ਕਿ ਕਿਸ ਸਿਗਨਲ 'ਤੇ ਭਰੋਸਾ ਕਰਨਾ ਹੈ।

ਵਿਵਹਾਰਕ ਉਪਯੋਗ

  • ਅਣਜਾਣ ਕੋਡਬੇਸਾਂ ਦੀ ਖੋਜ ਕਰਨਾ – ਮੈਨੁਅਲ ਗ੍ਰੈਪਿੰਗ (grepping) ਕੀਤੇ ਬਿਨਾਂ ਇੱਕ ਫੰਕਸ਼ਨ ਦੇ ਨਾਮ ਤੋਂ ਉਸਦੇ ਸਾਰੇ ਕਾਲਰਾਂ (callers) ਤੱਕ ਜਾਓ।
  • ਡਿਪੈਂਡੈਂਸੀ ਗ੍ਰਾਫਾਂ ਨੂੰ ਮੈਪ ਕਰਨਾ – ਇੰਪੋਰਟ ਚੇਨਾਂ ਨੂੰ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰੋ ਜੋ ਕਈ ਪੈਕੇਜਾਂ ਤੱਕ ਫੈਲੀਆਂ ਹੋਈਆਂ ਹਨ।
  • ਰੀਫੈਕਟਰ ਪ੍ਰਭਾਵ ਦਾ ਅਨੁਮਾਨ ਲਗਾਉਣਾ – ਦੇਖੋ ਕਿ ਜੇਕਰ ਕੋਈ ਦਿੱਤੀ ਗਈ ਫਾਈਲ ਬਦਲਦੀ ਹੈ ਤਾਂ ਕਿਹੜੇ ਸਿੰਬਲ ਟੁੱਟ ਜਾਣਗੇ।
  • ਅਰਥਕ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਦੇਣਾ – ਪੁੱਛੋ "ਇਹ ਹੈਲਪਰ ਕੀ ਕਰਦਾ ਹੈ?" ਅਤੇ ਇੱਕ ਸੰਖੇਪ, ਸਰੋਤ-ਅਧਾਰਤ ਅੰਸ਼ ਪ੍ਰਾਪਤ ਕਰੋ।

ਧਿਆਨ ਰੱਖਣ ਯੋਗ ਗਲਤੀਆਂ

  • ਤਾਜ਼ਗੀ (Freshness) – ਇੱਕ ਰੀ-ਇੰਡੈਕਸ ਪੂਰਾ ਹੋ ਸਕਦਾ ਹੈ ਜਦੋਂ ਕਿ ਇੰਡੈਕਸ ਟਾਈਮਸਟੈਂਪ ਪੁਰਾਣਾ ਰਹਿ ਸਕਦਾ ਹੈ। ਇਹ ਮੰਨਣ ਦੀ ਬਜਾਏ ਕਿ ਸਭ ਤੋਂ ਨਵਾਂ ਰਨ ਮੌਜੂਦਾ ਹੈ, ਹਮੇਸ਼ਾ index-status ਐਂਡਪੁਆਇੰਟ ਨੂੰ ਕੁਐਰੀ ਕਰੋ।
  • ਪ੍ਰੋਜੈਕਟ ਰਜਿਸਟ੍ਰੇਸ਼ਨ – ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਅਨਰਜਿਸਟਰ ਕਰਦੇ ਸਮੇਂ, Sverklo ਦੁਆਰਾ ਦਿੱਤਾ ਗਿਆ ਅੰਦਰੂਨੀ ਪ੍ਰੋਜੈਕਟ ਨਾਮ ਵਰਤੋ, ਨਾ ਕਿ ਐਬਸੋਲਿਊਟ ਫਾਈਲਸਿਸਟਮ ਪਾਥ, ਨਹੀਂ ਤਾਂ ਕਾਰਵਾਈ ਚੁੱਪਚਾਪ ਅਸਫਲ ਹੋ ਜਾਵੇਗੀ।
  • ਟੂਲ ਦੇ ਨਾਮ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ – MCP ਹੋਸਟਸ ਕਈ ਵਾਰ ਪ੍ਰੋਜੈਕਟ ਦੇ ਨਾਮ ਨੂੰ ਦੋ ਵਾਰ ਜੋੜ ਦਿੰਦੇ ਹਨ, ਜਿਸ ਨਾਲ sverklo_sverklo_impact ਵਰਗੇ ਆਈਡੈਂਟੀਫਾਇਰ ਮਿਲਦੇ ਹਨ। ਟੂਲ ਨੂੰ ਕਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਨਾਮ ਦੀ ਦੁਬਾਰਾ ਜਾਂਚ ਕਰੋ।

ਅੱਗੇ ਕੀ ਕੋਸ਼ਿਸ਼ ਕਰੀਏ

  1. ਇੱਕ ਡਿਸਪੋਜ਼ੇਬਲ ਰੈਪੋਜ਼ਟਰੀ ਨੂੰ ਕਲੋਨ ਕਰੋ ਅਤੇ ਸਥਾਨਕ ਤੌਰ 'ਤੇ Sverklo ਚਲਾਓ।
  2. ਇੱਕ ਸਧਾਰਨ ਸਿੰਬਲ ਲੁੱਕਅਪ ਚਲਾਓ ਅਤੇ found_by ਫੀਲਡ ਦੀ ਜਾਂਚ ਕਰੋ।
  3. ਇੱਕ ਸੋਰਸ ਫਾਈਲ ਨੂੰ ਸੋਧੋ ਅਤੇ ਲੁੱਕਅਪ ਨੂੰ ਦੁਬਾਰਾ ਚਲਾਓ; ਨੋਟ ਕਰੋ ਕਿ ਮੈਮੋਰੀ ਲੈਜਰ ਪੁਰਾਣੀ (stale) ਐਂਟਰੀ ਨੂੰ ਕਿਵੇਂ ਫਲੈਗ ਕਰਦਾ ਹੈ।
  4. ਪੁਰਾਣੇ ਇੰਡੈਕਸਾਂ ਨੂੰ ਆਪਣੇ ਆਪ ਫੜਨ ਲਈ ਆਪਣੇ ਬਿਲਡ ਸਕ੍ਰਿਪਟ ਵਿੱਚ index-status ਚੈੱਕ ਨੂੰ ਜੋੜੋ।

ਮੁੱਖ ਗੱਲ (Takeaway)

Sverklo ਇੱਕ ਕੋਡ-ਸਰਚ ਇੰਜਣ ਨੂੰ ਇੱਕ ਆਡਿਟ ਕਰਨਯੋਗ ਸਬੂਤ ਚੇਨ (auditable evidence chain) ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਫਾਈਲ ਕਵਰੇਜ, ਸਿੰਬਲ ਦੀ ਸ਼ੁੱਧਤਾ, ਰਿਟ੍ਰੀਵਲ ਵਿਧੀ, ਅਤੇ ਮੈਮੋਰੀ ਦੀ ਤਾਜ਼ਗੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਮਜਬੂਰ ਕਰਕੇ, ਇਹ ਉਹਨਾਂ ਨੂੰ ਇਹ ਫੈਸਲਾ ਕਰਨ ਦਿੰਦਾ ਹੈ ਕਿ ਕੀ ਕੋਈ AI-ਡਰਾਈਵਨ ਸੁਝਾਅ ਪ੍ਰੋਡਕਸ਼ਨ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਭਰੋਸੇਯੋਗ ਹੈ।