Перейти к содержанию
Claude News

Оформление

Оформление

Проекты сообщества

Scion по чертежам Anthropic собрали в открытом коде

5 мин чтения

В OpenScion клон одной папки стоит ровно столько, сколько весит эта папка. Клиент скачивает только деревья на пути к ней и файлы внутри, так что размер всего репозитория на цену не влияет. Проект лежит на GitHub и повторяет в открытом коде дизайн Scion. Эту внутреннюю систему контроля версий Anthropic описала в статье «Redesigning source control».

Коротко

  • Сторонние разработчики выложили под лицензией GPL-3.0-only OpenScion, серверную систему контроля версий на Rust для огромных монорепозиториев, где код в основном забирают агенты и задачи CI.
  • Историю, blame, ребейсы и слияния считает сервер, объекты адресуются хешем BLAKE3, а клиент держит ограниченный кэш и запрашивает только названные деревья и файлы, без согласования packfile, как в git.
  • Бенчмарк авторы гоняли только на синтетических репозиториях из файлов по 4 KiB, а сама Anthropic говорит, что Scion не годится в замену git для обычной разработки.

Если вы не следили: за четыре месяца Anthropic выросла примерно с 2 500 до более чем 30 000 слитых изменений в день. К тому моменту история главной ветки весила почти 100 GB, CI делал около 25 миллионов чекаутов в сутки, и чтобы git успевал, понадобилось несколько сотен зеркал. По данным самой Anthropic, монорепозиторий перевели с git на Scion за пять месяцев.

Anthropic упёрлась в git на 25 миллионах чекаутов в сутки

Git исходит из того, что любой клиент может уйти в офлайн, и поэтому каждый держит у себя полную копию истории. В монорепозитории, где работают агенты, это допущение ломается. Тысячи короткоживущих задач всегда онлайн, каждой нужен маленький кусок огромного дерева, а платит каждая за весь репозиторий.

В блоге Anthropic приводят масштаб. Сжатая рабочая копия весит больше 25 GB, и если бы все 25 миллионов ежедневных чекаутов тянули её целиком, трафик git превысил бы 600 PB в сутки. Компания пробовала штатные способы нарезки: shallow-клоны, sparse checkout, promisor remotes, внутренние зеркала и затравки в blob-хранилище.

По словам Anthropic, с ростом темпа слияний зеркала обслуживать становилось всё труднее. Затравки отставали от головы main, а diff и blame на частичных клонах требовали отдельной возни. В какой-то момент в компании заметили, что фактически используют git как централизованную систему.

Scion сократила потребление CPU и памяти в 200 раз

У каждого уровня региональных кэшей Scion, по сообщениям, доля попаданий выше 99%. По CPU и памяти система в 200 раз скромнее прежней схемы с зеркалами git, а чекауты ускорились примерно на два порядка: секунды вместо минут.

Строить систему помогал Claude. Ранняя внутренняя версия Claude Mythos Preview переписала прототип конвейера загрузки данных, и он стал потреблять в 20 раз меньше памяти и работать в четыре раза быстрее. Архитектуру и компромиссы при этом держали инженеры, а каждый запрос на изменение проверяла команда из семи человек.

По данным Anthropic, вместе со Scion компания сделала интерфейс код-ревью Antique, поиск по коду и систему прав доступа к репозиторию. Открывать исходники Scion Anthropic, по одному из сообщений, не собирается, поэтому OpenScion остаётся отдельной неофициальной реимплементацией.

OpenScion собран из четырёх крейтов на Rust и работает без облака

Проект разбит на четыре крейта: openscion-proto с типами протокола, openscion-core с движком, openscion-server с HTTP API и клиент opnscn, который ставится командой cargo install openscion. Рядом лежат веб-интерфейс на Next.js и shadcn/ui и бенчмарк openscion-bench.

Хранилище спрятано за двумя портами, ObjectStore и MetadataStore. Эталонные реализации работают в памяти или локально, на файловой системе и SQLite, поэтому одному узлу облачные сервисы не нужны. Сервер, CLI и GUI общаются через один и тот же API.

По бенчмарку авторов на синтетических репозиториях из файлов по 4 KiB OpenScion импортирует и клонирует в несколько раз быстрее git, причём на обоих размерах репозитория. Точные цифры, методика и сырые данные вынесены в benchmarks/README.md.

Процесс строгий. Любое изменение поведения начинается со спецификации в docs/specs/, затем пишется план с тестами вперёд, и только потом код. CI требует 90% покрытия строк в каждом исходном файле и проверяет, что openscion-proto не тянет за собой транспорт и рантайм.

Как OpenScion обходится без глобальной блокировки слияний?

Создание changeset вообще не трогает ссылки. Посадка в main состоит из серверного ребейса и одной атомарной замены записи по принципу compare-and-swap. Если кто-то успел раньше, операция повторяется, и общий замок на слияния не нужен.

Сам changeset перечисляет только файлы, изменённые относительно первого родителя, поэтому стоит столько, сколько весит правка. Блобы, деревья и changeset называются по хешу BLAKE3. Представьте склад, где коробку подписывают описью её содержимого: её можно взять в любом филиале и сразу проверить, та ли она. Так же любой кэш отдаёт объекты без согласования с остальными, а клиент их проверяет.

Лог, diff, blame, родословная, ребейс, откат и посадка доступны как RPC, так что конвейерам CI и bisect рабочая копия не нужна. Все уровни, от демона на машине до кэша и сервера, отвечают на одни и те же запросы объектов, и клиент обращается к ближайшему. Журнал, ссылки и производные индексы живут только на сервере.

Синтетика из файлов по 4 KiB мало говорит о поведении на живом монорепозитории вроде того, что у Anthropic, а таких замеров авторы не приводят. На наш взгляд, самое честное в README звучит так: OpenScion сделан под одну нагрузку. Команде из десятка людей с ноутбуками серверная модель, вероятно, принесёт больше хлопот, чем пользы, тем более что о совместимости с git и переносе существующей истории в описании ничего нет.

Успеют ли агентные нагрузки до OpenScion

В репозитории есть дорожная карта: что уже готово, что дальше и что вне рамок проекта. Сроков в ней не называют. Релизы собираются через workflow с выбором patch, minor или major и публикуются в crates.io. По данным Crypto Briefing, Anthropic ожидает, что похожая нагрузка на инфраструктуру станет обычным делом в ближайшие 6–12 месяцев. Пока неясно, появится ли у OpenScion пользователь с объёмами хотя бы близко к 30 000 слияний в день.

Claude Code

Claude Code 2.1.299 успевает сжать диалог до сгорания кэша

В Claude Code 2.1.299 появилось сжатие по простою: диалог на 200K+ токенов сжимается примерно через 54 минуты тишины, до того как истечёт часовой кэш промптов, и следующее сообщение не пересчитывает всё заново. Бывало, что вы возвращались к длинному диалогу в Claude Code и ждали пересчёта?

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.