# agent हुक: बिना सीमा वाले एजेंट लूप पकड़ें

> कमांड लाइन से कोडबेस में ऐसी एजेंट या LLM कॉल खोजें जिन पर स्टेप या समय की कोई सीमा नहीं है, या किसी एक कॉल को स्कोर दें।

कैनोनिकल: https://lagune.ai/hi-IN/docs/hooks/agent
भाषा: hi-IN
मूल: https://lagune.ai/docs/hooks/agent
आख़िरी अपडेट: 2026-11-06

`agent` हुक **बिना टर्न, बजट या समय सीमा के लूप में चलने वाले एजेंट रनटाइम** पकड़ता है। यह बेकाबू स्वायत्तता वाली वह खामी है जो जान-बूझकर गढ़े गए एक इनपुट को असीमित ख़र्च या बढ़ते प्रॉम्प्ट इंजेक्शन हमले में बदल देती है। यह **भाषा को पहचानता है** और एजेंट फ़्रेमवर्क के दो इकोसिस्टम कवर करता है: **JavaScript** (**Claude** एजेंट SDK का `query` रनटाइम) और **Python** (**LangChain**, **LangGraph**, **CrewAI**, **OpenAI Agents**)। यह [`llm` विशेषज्ञता](https://lagune.ai/hi-IN/docs/catalog) के पीछे का नियतात्मक इंजन है, जिसे आप खुद **scan** या **check** मोड में चला सकते हैं।

## चलाएँ

**कोडबेस स्कैन करें**

```bash
npx lagune read agent                # scans the whole project
npx lagune read agent --dir src/ai   # scans a directory
npx lagune read agent --file chat.ts # scans a single file
```

**कोई कॉल जाँचें**

```bash
npx lagune read agent --lang javascript --pattern 'query({ prompt })'                           # => uncapped
npx lagune read agent --lang javascript --pattern 'query({ prompt, options: { maxTurns: 5 } })' # => safe
npx lagune read agent --lang python --pattern 'AgentExecutor(agent=a, max_iterations=None)'     # => uncapped
```

**Uncapped agent loops found** के नीचे की हर लाइन किसी ऐसी फ़ाइल में मिली है जो एजेंट SDK इंपोर्ट करती है, और वह दो में से एक चीज़ है: या तो बिना टर्न, बजट या समय सीमा के बुलाया गया Claude एजेंट SDK का `query` रनटाइम (JavaScript, जहाँ डिफ़ॉल्ट रूप से कोई सीमा नहीं होती), या किसी फ़्रेमवर्क की डिफ़ॉल्ट सीमा को साफ़ तौर पर हटाना, जैसे `max_iterations=None` / `max_turns=None` (Python, जहाँ डिफ़ॉल्ट रूप से सीमा होती है)। दोनों ही मामलों में हुक नॉन-ज़ीरो एग्ज़िट कोड देता है। Vercel AI SDK के `generateText`/`streamText` डिफ़ॉल्ट रूप से एक ही स्टेप चलाते हैं (`stopWhen: stepCountIs(1)`), इसलिए वहाँ बिना विकल्पों वाली कॉल लूप नहीं कर सकती और पकड़ी नहीं जाती, और एक आम `db.query(...)` को कभी एजेंट कॉल नहीं समझा जाता। कुछ न मिलने पर यह `no uncapped agent loops found` छापता है।

## फ़ैसला कैसे पढ़ें

| फ़ैसला     | मतलब                                                                                                               |
| ---------- | ------------------------------------------------------------------------------------------------------------------ |
| `uncapped` | बिना सीमा वाली `query` रनटाइम कॉल (JS), या सीमा को साफ़ तौर पर हटाना (`=None`, Py)।                                |
| `safe`     | सीमा तय करने वाली `query` कॉल, एक स्टेप वाला जनरेशन, या ऐसे फ़्रेमवर्क की कॉल जिसमें डिफ़ॉल्ट रूप से सीमा होती है। |
| `invalid`  | कोड के टुकड़े में फ़ैसले के लिए कोई पहचानने लायक एजेंट कॉल नहीं है।                                                |

### CLI विकल्प

| विकल्प      | वैल्यू        | विवरण                                                                                             |
| ----------- | ------------- | ------------------------------------------------------------------------------------------------- |
| `--pattern` | कोड का टुकड़ा | एक कॉल जाँचें। कई कॉल जाँचने के लिए इसे दोहराएँ, हर लाइन में एक फ़ैसला।                           |
| `--lang`    | एक भाषा       | `--pattern` के साथ ज़रूरी: `javascript` या `python`।                                              |
| `--dir`     | एक डायरेक्टरी | स्कैन को एक डायरेक्टरी तक सीमित करें। इसे दोहराया जा सकता है और `--file` के साथ जोड़ा जा सकता है। |
| `--file`    | एक फ़ाइल      | स्कैन को एक फ़ाइल तक सीमित करें। इसे दोहराया जा सकता है और `--dir` के साथ जोड़ा जा सकता है।       |

कोई विकल्प न देने पर यह पूरा प्रोजेक्ट स्कैन करता है। `--pattern` के साथ `--lang` चाहिए, और इसे `--dir` या `--file` के साथ नहीं जोड़ा जा सकता।

### चुनें कि यह क्या स्कैन करे

यह उन चीज़ों को छोड़ देता है जिन्हें **Git** अनदेखा करता है। और ज़्यादा छोड़ने के लिए, या **Git** की अनदेखी चीज़ों को भी स्कैन करने के लिए, `agent` को उसकी अपनी सेटिंग्स दें:

```bash
npx lagune write add --ignore test/fixtures --checker agent
```

```json
{
  "checkers": {
    "agent": { "gitignore": false, "ignore": ["test/fixtures"] }
  }
}
```

हर सेटिंग की जानकारी [हुक कॉन्फ़िगर करें](https://lagune.ai/hi-IN/docs/hooks/configure) पेज पर है।

**पूरी कोशिश, पर हर चीज़ नहीं**

हाथ से लिखा गया एजेंट लूप, किसी भी भाषा में, स्टैटिक स्कैन की पकड़ से बाहर है। इसे एक मज़बूत न्यूनतम आधार मानें, पूरी सूची नहीं।

**टिप**

हुक सिर्फ़ सीमा के बारे में फ़ैसला करता है: क्षमताओं का दायरा, अलग-अलग भरोसे वाले इनपुट का आपस में मिलना और ऑथराइज़ेशन ऐसे मामले हैं जिनमें विवेक चाहिए, और उन्हें अब भी [`llm` विशेषज्ञता](https://lagune.ai/hi-IN/docs/catalog) कवर करती है।

## अक्सर पूछे जाने वाले सवाल

### एजेंट लूप पर सीमा क्यों लगानी चाहिए?

बिना सीमा वाले एजेंट को असीमित रिकर्शन, ख़र्च या बढ़ते प्रॉम्प्ट इंजेक्शन हमले की ओर धकेला जा सकता है। maxTurns/maxBudgetUsd/stopWhen/signal सेट करने से उसकी हद तय होती है, और agent हुक ऐसी query रनटाइम कॉल को पकड़ता है जिसमें इनमें से कुछ भी सेट न हो।
