Hal yang Perlu Diketahui Saat Beralih dari GitHub ke Buzz dan Nostr
TuBrief 편집팀
2026년 8월 24일
0
Computing/Software원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
커뮤니티의 다른 글
댓글 (0)
Log in to leave a comment
아직 작성된 글이 없습니다
원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
Log in to leave a comment
아직 작성된 글이 없습니다
Ada saatnya Anda merasa tidak nyaman mendorong (push) kode ke repositori terpusat. Kebijakan sering berubah dan Anda tidak tahu di mana kode Anda digunakan. Bagi freelancer perorangan atau tim kecil, kedaulatan data adalah masalah kelangsungan hidup. Buzz dan protokol Nostr NIP-34 adalah alternatif realistis yang tidak bergantung pada satu perusahaan tunggal. Namun, ketika benar-benar ingin migrasi, rasanya membingungkan. Anda harus menyelesaikan prosedur, biaya, dan masalah keamanan sendiri.
Jika Anda hanya mengetik git push --mirror, server akan menolaknya. Hal ini disebabkan oleh referensi internal GitHub yaitu refs/pull/*. Server target tidak akan menerima referensi tersembunyi tersebut. Agar dapat memindahkan kode tanpa konflik, Anda harus membuang referensi yang tidak perlu dan melakukan push secara eksplisit.
Anda perlu membuat bare repository di direktori sementara, menghapus referensi khusus GitHub, lalu mendorongnya ke endpoint Buzz. Jika ada file berukuran besar, objek LFS juga harus diurus secara terpisah.
`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)"
`
Menjalankan skrip ini akan menjaga riwayat komit tetap utuh 100%. Hash komit pertama menjadi pengenal unik dari proyek tersebut.
| Item Perbandingan | GitHub | Buzz / Nostr NIP-34 |
|---|---|---|
| Identifikasi Repositori | Catatan DB server terpusat (org/repo) |
ID komit pertama & ID event Nostr |
| Metode Autentikasi | OAuth, PAT, SSH Key | Tanda tangan asimetris kurva eliptik secp256k1 |
| Pertukaran Patch | API khusus GitHub | Event patch NIP-34 (kind: 1617) |
Dalam ekosistem Nostr, baik manusia maupun agen AI adalah entitas kriptografi yang sama. Mereka saling mengautentikasi menggunakan kunci publik 32-byte dan tanda tangan Schnorr. Menyimpan kunci rahasia di dalam kode akan langsung berujung pada insiden keamanan. Anda harus menyimpannya hanya di memori melalui variabel lingkungan atau menggunakan penanda tangan jarak jauh (remote signer).
Untuk memastikan patch yang dikirim oleh agen tidak dimodifikasi di tengah jalan, Anda harus memverifikasi hash serialisasi 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"]
`
Ketika Anda perlu mengirim dan menerima kode secara rahasia, gunakan spesifikasi NIP-44 v2 untuk mengenkripsi menggunakan ChaCha20.
Jika Anda menyerahkan pembuatan kode kepada agen, mereka akan terjebak dalam lingkaran perbaikan mandiri dan menghabiskan token dalam sekejap. Semakin banyak catatan kegagalan yang menumpuk, konteks akan semakin tercemar dan biaya akan meroket. Untuk mencegahnya, Anda harus menerapkan batasan di tingkat proxy.
Letakkan LiteLLM proxy di depan dan batasi anggaran harian serta kecepatan per unit kunci virtual.
`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"]
}'
`
Jika anggaran harian melebihi 5 dolar, sistem akan langsung mengeluarkan galat (error) dan berhenti. Perketat juga anggaran seluruh tim dengan file konfigurasi.
`yaml
model_list:
litellm_settings:
max_budget: 100.0
budget_duration: "30d"
default_team_settings:
`
Anda juga harus berhenti memasukkan seluruh kode ke dalam konteks. Gunakan Tree-Sitter untuk memotong dan mengirimkan hanya signature fungsi yang diperlukan serta area di sekitar hunk yang diubah guna mengurangi pemborosan token. Menggunakan metode ini akan mengurangi pemanggilan alat (tool calls) yang tidak perlu hingga lebih dari separuhnya.