GitHub से Buzz और Nostr पर जाने पर क्या जानना जरूरी है
केंद्रीयकृत रिपॉजिटरी में कोड डालना तब अजीब लगने लगता है जब नीतियां बार-बार बदलती हैं और आपको यह नहीं पता होता कि आपके कोड का उपयोग कहां किया जा रहा है। एक फ्रीलांसर या छोटी टीम के लिए डेटा संप्रभुता अस्तित्व का सवाल है। Buzz और Nostr NIP-34 प्रोटोकॉल किसी एकल कंपनी पर निर्भर न रहने के व्यावहारिक विकल्प हैं। हालांकि, जब आप वास्तव में माइग्रेट करने का प्रयास करते हैं, तो यह भारी लग सकता है। आपको प्रक्रियाओं, लागत और सुरक्षा समस्याओं को अपने दम पर हल करना होगा।
मौजूदा रिपॉजिटरी को Buzz पर बिना किसी नुकसान के माइग्रेट करने का तरीका
यदि आप केवल git push --mirror टाइप करते हैं, तो सर्वर इसे अस्वीकार कर देगा। ऐसा GitHub-विशिष्ट संदर्भ refs/pull/* के कारण होता है। टारगेट सर्वर छिपे हुए संदर्भों को स्वीकार नहीं करता है। संघर्षों के बिना कोड स्थानांतरित करने के लिए, आपको अनावश्यक संदर्भों को हटाना होगा और स्पष्ट रूप से पुश करना होगा।
आपको एक अस्थायी निर्देशिका में एक बेयर रिपॉजिटरी बनानी होगी, GitHub-विशिष्ट संदर्भों को हटाना होगा, और उन्हें Buzz एंडपॉइंट में धकेलना होगा। यदि बड़ी फाइलें हैं, तो आपको LFS ऑब्जेक्ट्स को भी अलग से प्रबंधित करना होगा।
`bash
#!/usr/bin/env bash
set -euo pipefail
GITHUB_REPO_URL="1"BUZZREMOTEURL="2"
TEMP_DIR=$(mktemp -d -t buzz-migration-XXXXXX)
trap 'rm -rf "$TEMP_DIR"' EXIT
git clone --mirror "GITHUBREPOURL""TEMP_DIR/bare_repo.git"
cd "$TEMP_DIR/bare_repo.git"
git for-each-ref --format='%(refname)' refs/pull/ | while read -r ref; do
git update-ref -d "$ref"
ddone
git remote add buzz "$BUZZ_REMOTE_URL"
git push --force --prune buzz "+refs/heads/:refs/heads/" "+refs/tags/:refs/tags/"
ROOT_COMMIT=(gitrev−list−−max−parents=0HEAD∣head−n1)echo"माइग्रेशनपूर्ण:RootCommitID(ROOT_COMMIT)"
`
जब आप इस स्क्रिप्ट को चलाते हैं, तो कमिट इतिहास 100% सुरक्षित रहता है। प्रारंभिक कमिट हैश प्रोजेक्ट की अनूठी पहचान बन जाता है।
| तुलना आइटम |
GitHub |
Buzz / Nostr NIP-34 |
| रिपॉजिटरी पहचान |
केंद्रीय सर्वर DB रिकॉर्ड (org/repo) |
प्रारंभिक कमिट ID और Nostr इवेंट ID |
| प्रमाणीकरण विधि |
OAuth, PAT, SSH Key |
secp256k1 दीर्घवृत्तीय वक्र असममित हस्ताक्षर |
| पैच एक्सचेंज |
GitHub-विशिष्ट API |
NIP-34 पैच इवेंट (kind: 1617) |
Nostr-आधारित क्रिप्टोग्राफिक पहचान और एजेंट एकीकरण
Nostr生态 में, चाहे कोई व्यक्ति हो या AI एजेंट, वे एक ही एन्क्रिप्टेड इकाई हैं। वे 32-बाइट सार्वजनिक कुंजियों और श्नोर हस्ताक्षरों का उपयोग करके एक-दूसरे को प्रमाणित करते हैं। जिस क्षण आप कोड में निजी कुंजी एम्बेड करते हैं, यह सुरक्षा दुर्घटना का कारण बनता है। इसे पर्यावरण चर के माध्यम से केवल मेमोरी में लोड किया जाना चाहिए या रिमोट साइनर का उपयोग किया जाना चाहिए।
यह सत्यापित करने के लिए कि एजेंट द्वारा भेजा गया पैच रास्ते में संशोधित नहीं किया गया था, आपको NIP-01 क्रमांकन हैश को सत्यापित करना होगा।
`python
import json
import hashlib
from coincurve import PrivateKey
def create_signed_agent_event(secret_key_hex: str, kind: int, content: str, tags: list) -> dict:
sk = PrivateKey.from_hex(secret_key_hex)
pubkey_hex = sk.public_key.format(compressed=True)[1:].hex()
created_at = 1710000000
serialized_data = json.dumps(
[0, pubkey_hex, created_at, kind, tags, content],
separators=(',', ':'),
ensure_ascii=False
)
event_id = hashlib.sha256(serialized_data.encode('utf-8')).hexdigest()
sig_hex = sk.schnorr_sign(bytes.fromhex(event_id), None, raw=True).hex()
return {
"id": event_id,
"pubkey": pubkey_hex,
"created_at": created_at,
"kind": kind,
"tags": tags,
"content": content,
"sig": sig_hex
}
def verify_agent_event(event: dict) -> bool:
preimage = [0, event["pubkey"], event["created_at"], event["kind"], event["tags"], event["content"]]
serialized = json.dumps(preimage, separators=(',', ':'), ensure_ascii=False)
computed_id = hashlib.sha256(serialized.encode('utf-8')).hexdigest()
return computed_id == event["id"]
`
जब आपको गुप्त रूप से कोड का आदान-प्रदान करने की आवश्यकता हो, तो NIP-44 v2 विनिर्देश का उपयोग करके ChaCha20 के साथ एन्क्रिप्ट करें।
मल्टी-एजेंट स्वचालन लागत प्रबंधन
यदि आप कोडिंग को किसी एजेंट को सौंपते हैं, तो यह एक स्वायत्त सुधार पाश में आ जाता है और तुरंत टोकन जला देता है। जैसे-जैसे विफल रिकॉर्ड जमा होते हैं, संदर्भ दूषित हो जाता है और लागत बढ़ जाती है। इसे रोकने के लिए, आपको प्रॉक्सी स्तर पर सीमाएं निर्धारित करनी होंगी।
LiteLLM प्रॉक्सी को सामने रखें और वर्चुअल कुंजी के आधार पर दैनिक बजट और गति को सीमित करें।
`bash
curl -X POST 'http://localhost:4000/key/generate'
-H 'Authorization: Bearer sk-master-key-1234'
-H 'Content-Type: application/json'
-d '{
"key_alias": "auto-coder-agent-01",
"max_budget": 5.0,
"budget_duration": "1d",
"tpm_limit": 50000,
"rpm_limit": 30,
"models": ["agent-code-model"]
}'
`
यदि दैनिक बजट $5 से अधिक हो जाता है, तो यह तुरंत एक त्रुटि फेंकता है और बंद हो जाता है। आप कॉन्फ़िगरेशन फ़ाइल के साथ पूरी टीम के बजट को भी कस सकते हैं।
`yaml
model_list:
- model_name: agent-code-model
litellm_params:
model: openai/gpt-4o
api_key: os.environ/OPENAI_API_KEY
litellm_settings:
max_budget: 100.0
budget_duration: "30d"
default_team_settings:
- team_id: "decentralized-dev-team"
max_budget: 20.0
budget_duration: "1d"
`
आपको संदर्भ में संपूर्ण कोड डालना भी बंद कर देना चाहिए। टोकन की बर्बादी को कम करने के लिए आवश्यक फ़ंक्शन हस्ताक्षरों और संशोधित हंक के आसपास के क्षेत्र को ट्रिम करने के लिए Tree-Sitter का उपयोग करें। इस विधि का उपयोग करने से अनावश्यक टूल कॉल आधे से अधिक कम हो जाते हैं।