ما تحتاج إلى معرفته عند مغادرة GitHub والانتقال إلى Buzz و Nostr
TuBrief 편집팀
2026년 8월 24일
0
Computing/Software원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
커뮤니티의 다른 글
댓글 (0)
Log in to leave a comment
아직 작성된 글이 없습니다
원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
Log in to leave a comment
아직 작성된 글이 없습니다
يأتي وقت يصبح فيه دفع الكود إلى مستودعات مركزية مقلقًا. فالسياسات تتغير بشكل متكرر، ولا يمكنك معرفة أين يُستخدم الكود الخاص بك. بالنسبة للمستقلين أو الفرق الصغيرة، تُعد سيادة البيانات مسألة بقاء. يُعد بروتوكول Buzz و Nostr NIP-34 بديلين عمليين لا يعتمدان على شركة واحدة. ومع ذلك، عندما تحاول الهجرة حقًا، يبدو الأمر مربكًا. إذ يتعين عليك حل إجراءات التكلفة ومشاكل الأمان بنفسك.
إذا قمت ببساطة كتابة git-push --mirror، فسيرفض الخادم ذلك بسبب مراجع GitHub الداخلية مثل refs/pull/*. لا يقبل الخادم المستهدف المراجع المخفية. لنقل الكود دون تعارضات، يجب عليك إزالة المراجع غير الضرورية والدفع بشكل صريح.
عليك إنشاء مستودع فارغ (bare repository) في دليل مؤقت، وحذف المراجع الخاصة بـ GitHub، ثم دفع الكود إلى نقطة نهاية Buzz. وإذا كانت هناك ملفات كبيرة، فيجب عليك أيضًا التعامل مع كائنات LFS بشكل منفصل.
`bash
#!/usr/bin/env bash
set -euo pipefail
GITHUB_REPO_URL="2"
TEMP_DIR=$(mktemp -d -t buzz-migration-XXXXXX)
trap 'rm -rf "$TEMP_DIR"' EXIT
git clone --mirror "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"
done
git remote add buzz "$BUZZ_REMOTE_URL"
git push --force --prune buzz "+refs/heads/:refs/heads/" "+refs/tags/:refs/tags/"
ROOT_COMMIT=ROOT_COMMIT)"
`
عند تشغيل هذا البرنامج النصي، يتم الاحتفاظ بتاريخ الالتزام (commit history) بنسبة 100%. وتصبح قيمة الهاش للالتزام الأولي المعرف الفريد للمشروع.
| المقارنة | GitHub | Buzz / Nostr NIP-34 |
|---|---|---|
| تحديد المستودع | سجل قاعدة بيانات الخادم المركزي (org/repo) |
معرف الالتزام الأولي ومعرف حدث Nostr |
| طريقة المصادقة | OAuth, PAT, SSH Key | توقيع غير متماثل بمنحنى secp256k1 البيضاوي |
| تبادل التصحيحات | واجهة برمجة تطبيقات خاصة بـ GitHub | حدث تصحيح NIP-34 (kind: 1617) |
في بيئة Nostr، سواء كان المستخدم بشريًا أو وكيل ذكاء اصطناعي، فهما كيانان مشفران متطابقان. تتم المصادقة على بعضهم البعض باستخدام مفتاح عام بـ 32 بايت وتوقيعات Schnorr. بمجرد ترك مفتاح سرّي داخل الكود، سيؤدي ذلك إلى حادث أمني. يجب الاحتفاظ به فقط في الذاكرة كمتغيرات بيئية أو استخدام مُوقّع عن بُعد.
للتحقق مما إذا كان التصحيح المرسل بواسطة الوكيل قد تم تعديله في المنتصف، يجب عليك التحقق من هاش التسلسل لـ 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.
عندما تترك كتابة الكود لوكيل، فإنه يدخل في حلقة تعديل ذاتي ويحرق الرموز (tokens) بسرعة. وكلما تراكمت سجلات الفشل، كلما تلوث السياق وارتفعت التكاليف. لمنع ذلك، يجب وضع حدود على مستوى الوكيل (proxy).
ضع وكيل 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:
litellm_settings:
max_budget: 100.0
budget_duration: "30d"
default_team_settings:
`
يجب عليك أيضًا التوقف عن وضع الكود بأكمله في السياق. استخدم Tree-Sitter لقص توقيعات الدوال المطلوبة فقط والمنطقة المحيطة بالتغييرات لتقليل هدر الرموز. يؤدي استخدام هذه الطريقة إلى تقليل استدعاءات الأدوات غير الضرورية بنصف النصف أو أكثر.