ब्लॉग पर वापस जाएं

लागत अनुकूलनगाइड

Claude Code टोकन उपयोग: टूल आउटपुट को कॉन्टेक्स्ट से बाहर रखें

एक PreToolUse हुक और context-mode प्लगइन कैसे टेस्ट लॉग को Claude Code के कॉन्टेक्स्ट से बाहर रखते हैं, साथ ही फ़िल्टरिंग के साथ और बिना सत्र लागत अनुमान।

CheapTokens Team द्वाराप्रकाशित 10 मिनट का पाठ

टर्मिनल में एक टेस्ट कमांड grep और head के माध्यम से पाइप किया गया ताकि केवल विफलताएँ Claude Code तक पहुँचें
इस पृष्ठ पर
  1. एक लॉग के लिए कई बार भुगतान क्यों
  2. समाधान 1: एक PreToolUse हुक जो टेस्ट आउटपुट को फ़िल्टर करता है
  3. समाधान 2: बड़े टूल परिणामों के लिए context-mode
  4. एक लंबे सत्र की लागत, फ़िल्टरिंग के साथ और बिना
  5. Claude Code को CheapTokens मॉडल पर चलाएँ
  6. त्वरित चेकलिस्ट

आपके एजेंट ने टेस्ट सूट तीन बार चलाया, और बिल काम से बड़ा है। इसका कारण शायद ही कभी उसका लिखा कोड होता है। यह टेस्ट लॉग हैं: एक बार जब कोई टूल परिणाम Claude Code के कॉन्टेक्स्ट में आ जाता है, हर बाद का अनुरोध उसे फिर से साथ ले जाता है। समाधान यह है कि मॉडल के देखने से पहले टूल आउटपुट को छोटा कर दिया जाए। आधिकारिक तरीका Bash पर PreToolUse हुक है; तीसरे पक्ष का तरीका context-mode प्लगइन है। दोनों नीचे हैं, एक CheapTokens मॉडल पर लंबे सत्र के लिए लागत अनुमान के साथ।

एक लॉग के लिए कई बार भुगतान क्यों#

Claude Code लागत पृष्ठ (https://code.claude.com/docs/en/costs, 23 अक्टूबर 2026 को जाँचा गया) के अनुसार, Claude Code हर अनुरोध के साथ पूरी बातचीत भेजता है, और प्रत्येक टूल उपयोग एक और अनुरोध ट्रिगर करता है जो टूल परिणाम साथ ले जाता है। प्रॉम्प्ट कैशिंग इतिहास को सस्ती कैश दर पर फिर से पढ़ता है, लेकिन टोकन अभी भी वहीं हैं।

मान लें कि एजेंट npm test चलाता है और 10,000 पंक्तियों का लॉग प्राप्त करता है। दस्तावेज़ कहते हैं कि इस तरह का लॉग दसियों हज़ार टोकन का हो सकता है। 30,000 टोकन मान लें। आगे आप जो भी करें, वे 30,000 टोकन चरण 11, चरण 12, चरण 13, और इसी तरह के इनपुट का हिस्सा हैं जब तक आप /clear या कॉम्पैक्ट नहीं करते। और यही पेच है: लॉग एक चरण के लिए उपयोगी है, और आप इसके लिए तीस चरणों तक भुगतान करते हैं।

समाधान 1: एक PreToolUse हुक जो टेस्ट आउटपुट को फ़िल्टर करता है#

वही दस्तावेज़ पृष्ठ प्रीप्रोसेसिंग के रूप में हुक का सुझाव देता है: Bash पर एक PreToolUse हुक टेस्ट कमांड (npm test, pytest, go test) को फिर से लिखता है ताकि वे grep -A 5 -E '(FAIL|ERROR|error:)' | head -100 के माध्यम से पाइप हों। फिर एजेंट केवल विफलताएँ और कुछ पंक्तियों का संदर्भ देखता है, 10,000 पंक्तियों के हरे बिंदु नहीं। दस्तावेज़ कहते हैं कि यह दसियों हज़ार टोकन को सैकड़ों में बदल सकता है।

हुक से पहले और बाद में एजेंट क्या देखता है
कच्चा npm test आउटपुट बनाम केवल विफलताएँ

यह उस दस्तावेज़ पृष्ठ की स्क्रिप्ट है (23 अक्टूबर 2026 को जाँची गई)। इसे jq चाहिए। mkdir -p ~/.claude/hooks से फ़ोल्डर बनाएँ, स्क्रिप्ट को ~/.claude/hooks/filter-test-output.sh के रूप में सहेजें और उस पर chmod +x चलाएँ:

bash
#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')

pattern='^(npm test|pytest|go test)( [^;&|<>`$#\\[:cntrl:]]*)?$'

if [[ "$cmd" =~ $pattern ]]; then
  filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"
  echo "$input" | jq --arg filtered "$filtered_cmd" '{hookSpecificOutput: {hookEventName: "PreToolUse", updatedInput: (.tool_input + {command: $filtered})}}'
else
  echo "{}"
fi

फिर इसे ~/.claude/settings.json में रजिस्टर करें:

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{ "type": "command", "command": "~/.claude/hooks/filter-test-output.sh" }]
      }
    ]
  }
}

यह जाँचने के लिए कि यह काम करता है, Claude Code के अंदर /hooks खोलें और PreToolUse प्रविष्टि देखें, या claude --debug-file ./claude-debug.txt से शुरू करें और एजेंट से npm test चलाने के लिए कहें। जब हुक ने कमांड को फिर से लिखा हो, फ़ाइल में command फ़ील्ड के साथ modified tool input keys पंक्ति होती है। यदि टेस्ट पास होते हैं, आउटपुट खाली होता है, इसलिए एजेंट को शांत सफलता मिलती है; यदि आपका रनर विफलताओं को अलग तरह से प्रिंट करता है तो पैटर्न समायोजित करें।

समाधान 2: बड़े टूल परिणामों के लिए context-mode#

एक हुक केवल उन कमांडों को कवर करता है जिन्हें आप पाइप कर सकते हैं। Playwright से पेज स्नैपशॉट या बीस GitHub इश्यू की सूची MCP टूल से आती है। context-mode इसी को लक्षित करता है। इसके README (https://github.com/mksglu/context-mode, 23 अक्टूबर 2026 को जाँचा गया; यह कोई संस्करण या तिथि नहीं दिखाता) के अनुसार, यह एक MCP सर्वर और प्लगइन है जो कच्चे टूल आउटपुट को कॉन्टेक्स्ट विंडो से बाहर रखता है, सत्र स्थिति को SQLite में संग्रहीत करता है और हुक के माध्यम से टूल कॉल को रूट करता है। इसे Claude Code v1.0.33 या नए की आवश्यकता है, और इसका लाइसेंस Elastic License 2.0 है, जो OSI ओपन-सोर्स लाइसेंस नहीं है।

Claude Code के अंदर इंस्टॉल करें:

text
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode

पुनः आरंभ करें या /reload-plugins चलाएँ, फिर /context-mode:ctx-doctor से सत्यापित करें। केवल-MCP संस्करण, claude mcp add context-mode -- npx -y context-mode, टूल जोड़ता है लेकिन इसमें स्वचालित रूटिंग नहीं है।

परियोजना बड़ी कमी की रिपोर्ट करती है: 315 KB 5.4 KB हो जाता है (98%), 56 KB का पेज स्नैपशॉट 299 बाइट हो जाता है, 986 KB 62 KB हो जाता है। ये लेखक के अपने आंकड़े हैं: इन्हें ऊपरी सीमा मानें और अपने सत्र पर /context के साथ पहले और बाद में मापें।

एक लंबे सत्र की लागत, फ़िल्टरिंग के साथ और बिना#

यहाँ एक अनुमानित सत्र पर गणना है। यह 20,000-टोकन औसत आधार कॉन्टेक्स्ट पर 40-चरणीय कोडिंग सत्र है, प्रति चरण 500 आउटपुट टोकन, और तीन टेस्ट रन, चरण 10, 20 और 30 पर। प्रत्येक कच्चा लॉग 30,000 टोकन है; फ़िल्टर किया गया संस्करण 500 है।

  • चरण 10 का लॉग उसके बाद के 30 अनुरोधों में फिर से भेजा जाता है: 30 × 30,000 = 900,000 टोकन। चरण 20: 20 × 30,000 = 600,000। चरण 30: 10 × 30,000 = 300,000। अतिरिक्त इनपुट: 900,000 + 600,000 + 300,000 = 1,800,000।
  • फ़िल्टर किया गया: (30 + 20 + 10) × 500 = 30,000 अतिरिक्त इनपुट।
  • आधार इनपुट: 40 × 20,000 = 800,000। आउटपुट: 40 × 500 = 20,000।
  • तो सत्र बिना फ़िल्टर 800,000 + 1,800,000 = 2,600,000 इनपुट टोकन है और फ़िल्टर के साथ 800,000 + 30,000 = 830,000, दोनों ही स्थितियों में 20,000 आउटपुट टोकन।

गणना हर इनपुट टोकन को पूरी दर पर गिनती है। कैशिंग वास्तविक संख्या को कम करती है, लेकिन यह दोनों मामलों को समान तर्क से कम करती है। MiniMax-M2.7 (MiniMaxAI/MiniMax-M2.7, 180K कॉन्टेक्स्ट, 8,192 आउटपुट टोकन तक) के लाइव मूल्य, जो इस तरह के इनपुट-भारी एजेंट लूप के लिए उपयुक्त मॉडल है, नीचे चार्ट में हैं।

MiniMax-M2.7 पर सत्र लागत, 40 चरण
  • फ़िल्टर के बिना$0.133
  • हुक के साथ$0.0445

मान्यताएँ: 40 चरण, 20,000-टोकन आधार कॉन्टेक्स्ट, प्रति चरण 500 आउटपुट टोकन, 30,000 टोकन के तीन टेस्ट रन (फ़िल्टर किया गया: 500)।

MiniMax-M2.7 पर सत्र की लागत बिना फ़िल्टर $0.133 और फ़िल्टर के साथ $0.0445 है, और कुल मिलाकर, इनपुट और आउटपुट को एक साथ गिनते हुए, यह OpenRouter के संदर्भ मूल्य से सस्ता है। बिना फ़िल्टर मामले में लगभग दो तिहाई इनपुट वे लॉग हैं जो एजेंट ने एक बार पढ़े।

बात सटीक डॉलर की नहीं है। यह है कि फ़िल्टर किसी भी मॉडल पर 2,600,000 में से लगभग 1,770,000 इनपुट टोकन हटा देता है (2,600,000 − 830,000 = 1,770,000), और सस्ता मॉडल बचे हुए हर टोकन की कीमत कम कर देता है।

Claude Code को CheapTokens मॉडल पर चलाएँ#

Claude Code Anthropic Messages प्रोटोकॉल बोलता है, और CheapTokens इसे समर्थन करता है। Claude Code के लिए बेस URL में /v1 नहीं है। पूरा सेटअप Claude Code को CheapTokens से कैसे कनेक्ट करें में है। संक्षिप्त संस्करण, प्लेसहोल्डर कुंजी के साथ:

bash
export ANTHROPIC_BASE_URL=https://api.cheaptokens.dev
export ANTHROPIC_AUTH_TOKEN=YOUR_CHEAPTOKENS_KEY
export ANTHROPIC_MODEL=MiniMaxAI/MiniMax-M2.7
claude

docs से पूरा id उपयोग करें; मूल्य तालिकाओं के छोटे नाम API द्वारा स्वीकार नहीं किए जाते। हर मॉडल की कीमतें pricing page पर हैं। Claude Code बिल कम करने वाली अन्य आदतों (/clear, /compact, /mcp, सबएजेंट) के लिए, How to make Claude Code cheaper देखें। वास्तविक अनुरोध पर इनपुट और आउटपुट कैसे गिने जाते हैं, यह देखने के लिए How many tokens does an API request use पढ़ें।

त्वरित चेकलिस्ट#

  1. एक लंबे सत्र में /context चलाएँ और देखें कि क्या जगह ले रहा है।
  2. टेस्ट कमांड के लिए Bash हुक जोड़ें; /hooks या डीबग लॉग में रीराइट की पुष्टि करें।
  3. यदि MCP टूल बड़े स्नैपशॉट लौटाते हैं, तो context-mode आज़माएँ और /context को पहले और बाद में तुलना करें।
  4. असंबंधित कार्यों के बीच /clear, ताकि पुराने लॉग साथ न चलें।