TuBrief
구독 채널
비디오
커뮤니티

Что нужно знать при уходе с GitHub на Buzz и Nostr

TuBrief 편집팀
2026년 8월 24일
0
Computing/Software

원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.

Русский한국어English中文EspañolالعربيةFrançaisDeutschBahasa Indonesiaहिन्दी日本語Português

관련 영상

Новое приложение Джека Дорси хочет заменить GitHub (слухи)12:24

Новое приложение Джека Дорси хочет заменить GitHub (слухи)

Better Stack

커뮤니티의 다른 글

사내 시스템에 llm api 붙일 때 마주하는 현실적인 한계와 대응법

2026년 9월 13일

레거시 백엔드에 GPT-6 Astra 붙일 때 예산 승인과 보안 통과를 먼저 끝내는 법이 있습니다

2026년 9월 13일

에이전트끼리 대화하다 6천만 원 청구서가 나오는 이유

2026년 9월 13일

사내 RAG 벡터 검색에 Okta 권한 필터를 직접 거는 방법

2026년 9월 13일

브라우저 에이전트에게 내 구글 계정을 통째로 넘기면 안 되는 이유

2026년 9월 12일

Apple Won the AI Race

2026년 9월 12일

댓글 (0)

Log in to leave a comment

아직 작성된 글이 없습니다

© 2026 . All rights reserved.

TuBrief
구독 채널
비디오
커뮤니티
로그인

Что нужно знать при уходе с GitHub на Buzz и Nostr

Наступает момент, когда хранение кода в централизованных репозиториях начинает вызывать дискомфорт. Правила часто меняются, а куда именно уходит ваш код — неизвестно. Для индивидуальных фрилансеров или небольших команд суверенитет данных — это вопрос выживания. Протокол Buzz и Nostr NIP-34 служат реальной альтернативой, не зависящей от единой корпорации. Однако при попытке миграции возникает множество вопросов: приходится самостоятельно разбираться с процедурами, издержками и проблемами безопасности.

Как выполнить без потерь миграцию существующего репозитория в Buzz

Простая команда git push --mirror будет отклонена сервером из-за внутренних ссылок GitHub, таких как refs/pull/*. Целевой сервер не принимает скрытые репозитории. Чтобы перенести код без конфликтов, необходимо удалить лишние ссылки и выполнить явную отправку.

Создайте «голый» репозиторий (bare repository) во временном директории, удалите ссылки, специфичные для GitHub, и отправьте данные на эндпоинт Buzz. Если есть файлы большого размера, объекты LFS также потребуется перенести отдельно.

`bash
#!/usr/bin/env bash
set -euo pipefail

GITHUB_REPO_URL="1"BUZZREMOTEURL="1" BUZZ_REMOTE_URL="1"BUZZR​EMOTEU​RL="2"
TEMP_DIR=$(mktemp -d -t buzz-migration-XXXXXX)

trap 'rm -rf "$TEMP_DIR"' EXIT

git clone --mirror "GITHUBREPOURL""GITHUB_REPO_URL" "GITHUBR​EPOU​RL""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=(gitrev−list−−max−parents=0HEAD∣head−n1)echo"Миграциязавершена:RootCommitID((git rev-list --max-parents=0 HEAD | head -n 1) echo "Миграция завершена: Root Commit ID ((gitrev−list−−max−parents=0HEAD∣head−n1)echo"Миграциязавершена:RootCommitID(ROOT_COMMIT)"
`

Запуск этого скрипта сохраняет историю коммитов на 100%. Хэш первого коммита становится уникальным идентификатором проекта.

Сравниваемый параметр GitHub Buzz / Nostr NIP-34
Идентификация репозитория Запись в БД центрального сервера (org/repo) ID первого коммита и ID события Nostr
Метод аутентификации OAuth, PAT, SSH-ключ Асимметричная подпись на эллиптических кривых secp256k1
Обмен патчами Эксклюзивный API GitHub Событие патча NIP-34 (kind: 1617)

Криптографическая идентичность на базе Nostr и интеграция с агентами

В экосистеме Nostr и люди, и ИИ-агенты выступают в роли равноправных криптографических субъектов. Аутентификация друг друга происходит с помощью 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"]
`

При необходимости конфиденциального обмена кодом применяется шифрование ChaCha20 по спецификации NIP-44 v2.

Управление расходами при автоматизации с мультиагентами

Если доверить написание кода ИИ-агентам, они могут уйти в цикл автономных исправлений и моментально исчерпать все токены. По мере накопления неудачных попыток контекст загрязняется, а затраты стремительно растут. Чтобы предотвратить это, ограничения следует настраивать на уровне прокси.

Установите прокси 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 для извлечения только необходимых сигнатур функций и фрагментов кода вокруг измененных участков (hunks) позволяет сократить перерасход токенов. Этот подход сокращает количество ненужных вызовов инструментов более чем в два раза.