Zed представила Delta, систему контроля версий для ИИ-агентов в духе Xanadu Теда Нельсона

Zed представила Delta, систему контроля версий для ИИ-агентов в духе Xanadu Теда Нельсона

В 1965 году Тед Нельсон, пионер компьютерной техники, ввёл термин «гипертекст» в рамках проекта Xanadu, дела всей его жизни. Нельсон задумывал вычислительную технику как «вселенную документов» (docuverse): систему, которая хранит все версии документа, где ссылки знают и источник, и адресата, а цитаты не копируются, а связываются по ссылке (Нельсон называл это трансклюзией), так что у любого фрагмента текста видно происхождение вплоть до конкретного отрывка. Эти два принципа, никогда не копировать, только ссылаться; никогда не перезаписывать, только версионировать, Нельсон называл «ксаналогическими».

Xanadu требовал неограниченного хранения и схемы именования, которая не устареет, ни того ни другого не было все десятилетия, что Нельсон работал над проектом. Когда в 90-х взлетел веб, разработчики выбрали простоту: ссылки стали обычными строками, которые ломаются при переезде страницы. Обслуживание стало заботой пользователей, а не системы, зато создавать страницы стало легко, и, по словам автора поста, Xanadu превратился из обещания новой эпохи в самый известный в компьютерной индустрии продукт, который так и не вышел. Нельсон годами доказывал, что веб, это плоская пародия на его замысел гипертекста; автор поста считает, что он был прав, но это не имело значения: люди и не нуждались в том, чтобы прослеживать каждую ссылку или сравнивать каждую версию, они охотнее шли по тем ссылкам, которые уже проверили другие, и плоской модели было достаточно. Затем появились агенты, и, по мнению автора, всё, что делает агента неудобным собеседником для человека (он держит в фокусе куда больше слоёв контекста, чем способен человек), делает его идеальным «гражданином» системы Нельсона: агент может пройти по источнику цитаты, к обсуждению вокруг неё и к трассировке стека, которая породила именно эту строку кода, и предъявить всё это человеку для проверки. Но для этого нужно, чтобы такие ссылки физически где-то существовали, а раньше их было негде хранить.

У Нельсона, по словам поста, была та же проблема, что и у Энгельбарта, только с куда меньшим финансированием: большинство нужных ему деталей ещё не существовало, не было способа именовать контент без центрального распорядителя, не было хранилища, достаточно дешёвого, чтобы никогда ничего не удалять. Wired в своё время описывал историю Xanadu как историю провала управления проектом; сам автор поста придерживается другого мнения, что Нельсон просто описал Xanadu на десятилетия раньше, чем сложился нужный для него набор технологий. По словам поста, Delta можно построить именно сегодня, потому что за шестьдесят лет чужие, независимо развивавшиеся направления, разработка ядра операционных систем, хранение фотографий, «холодные старты» бессерверных вычислений, совместные курсоры в духе Google Docs, сами собой донесли до наших дней недостающие детали «вселенной документов». Список этих деталей, который пост называет «деревом зависимостей» Delta: временные метки Лэмпорта (1978), способ пронумеровать любое действие любого человека или агента парой «автор + метка времени»; деревья Меркла (1979), которые в 2005 году Git сделал обыденностью, способ дать неизменному состоянию проекта имя, которое невозможно подделать; технология CRDT, формализованная в 2011 году и, по словам поста, находящаяся в центре работы Zed последние десять лет, она позволяет нескольким людям и агентам на разных континентах одновременно править один и тот же рабочий каталог без конфликтов; подешевевшее хранение, гигабайт, по данным поста, стоил в 1981 году десятки тысяч долларов, а сейчас стоит цент, и это позволяет хранить вообще все версии по умолчанию; постоянный быстрый интернет, широкополосный доступ обогнал модемный к середине 2000-х, и теперь любая беседа реплицируется в реальном времени на машину каждого участника и в браузер; лёгкие изолированные виртуальные машины уровня Firecracker (2018), которые агент в Delta способен поднять в облаке прямо посреди разговора; и Tree-sitter (2018) Макса Брансфелда, который достаточно быстро перепарсивает код по мере ввода, вместе с собственным движком интерфейса Zed, GPUI, который пересобирает интерфейс из состояния приложения при отрисовке каждого кадра. За счёт этого файл в Delta хранится не как готовый застывший документ, а как проекция, которую система каждый раз пересчитывает заново поверх постоянной структурированной истории.

Автор отмечает: единственное, что недооценил сам Нельсон, это тип пользователя. Он не предполагал появления искусственных читателей, хотя они уже существовали в фантастике, Мультивак Азимова, Библиотекарь Стивенсона. По мысли автора, Xanadu не хватало не деталей, а идеального пользователя, и агент им оказался. Delta, продукт Zed, в котором каждый разговор с агентом фиксируется вместе с кодом, к которому он относится, в общей истории; DeltaDB, база данных под ним, которая представляет файл не одной строкой символов, а набором фрагментов со стабильными идентификаторами. Эти идентификаторы создают «якоря», ссылки на конкретный участок кода, которые остаются верными и после того, как код вокруг него изменился; в отличие от номера строки, который верен только для одного снимка файла, якорь продолжает указывать на тот же смысловой фрагмент. По утверждению поста, файлы и участки кода, к которым уже обращались, которые редактировали или на которые ссылались прежние агенты, становятся «ориентирами» для следующего агента: он может сверить их с кодом в его нынешнем виде и вернуться к разговору, в котором сложилось это понимание. Система хранит причинно-следственные метаданные, какая именно операция породила фрагмент и на каком более раннем состоянии она основана, так что модель может проследить не только текущий код, но и его происхождение и то, на что агенты уже обращали внимание раньше.

У самого Xanadu, по словам поста, был ещё один изъян, на этот раз саморазрушительный: проект отказывался работать с «менее совершенными» форматами. Zed говорит, что учится на этой ошибке: каждый разговор с агентом в Delta одновременно является обычной git-веткой, поэтому коллеги, которые вообще не открывают Delta, видят обычный репозиторий, а поскольку сами файлы настоящие, с ними работает любой инструмент, которым пользуется агент. Репозиторий можно и дальше зеркалить на GitHub для тех, кто ещё не готов переходить, именно так, по словам поста, сейчас продолжает работать с GitHub и сам Zed как проект с открытым кодом, называя это переходным периодом. В финале автор проводит параллель с Энгельбартом, чья демонстрация 1968 года, наряду с проектом Нельсона, тоже так и не была реализована целиком: от неё индустрия взяла мышь и, в конце концов, совместное редактирование, а от Нельсона, только само слово «гипертекст». Автор говорит, что надеется: сессии Delta воплотят оба замысла разом, живую сессию, которая оставляет после себя постоянную, связанную историю, потому что сессия и есть эта история. При этом он прямо оговаривается, что его собственная цель, не реализовать Xanadu буквально, а построить систему, для которой, по его словам, «всё нужное было описано Нельсоном ещё до его рождения».

Ключевые факты

  • Zed показала Delta и DeltaDB, систему контроля версий, где код хранится не файлами и коммитами, а фрагментами со стабильными идентификаторами, рассчитанную в первую очередь на ИИ-агентов.
  • Идея прямо отсылает к Project Xanadu Теда Нельсона (1965): никогда не копировать, только ссылаться (трансклюзия); никогда не перезаписывать, только версионировать.
  • «Якоря» DeltaDB продолжают указывать на тот же смысловой участок кода даже после правок, в отличие от номера строки, который верен лишь для одного снимка файла.
  • Технологии, без которых, по словам поста, Delta было не построить: временные метки Лэмпорта (1978), деревья Меркла и Git (1979/2005), CRDT (формализованы в 2011), подешевевшее хранение (гигабайт: десятки тысяч долларов в 1981 → цент сейчас), виртуальные машины уровня Firecracker (2018), Tree-sitter Макса Брансфелда (2018).
  • Каждый разговор с агентом в Delta одновременно остаётся обычной git-веткой, а репозиторий можно зеркалить на GitHub, так авторы намеренно избегают ошибки самого Xanadu, который отказывался работать с другими форматами.

Почему это важно

Пост Zed, не анонс ещё одного инструмента, а прямой ответ на вопрос, который вычислительная техника не могла закрыть шестьдесят лет: зачем нужна была вся сложность, которую предлагал Xanadu, если люди прекрасно обходились плоским вебом? Ответ поста: она была не нужна людям, она была нужна читателю, которого Нельсон не мог предвидеть. Человек не хочет и не может прослеживать каждую ссылку и сравнивать каждую версию документа; агент, может, и делает это как раз за счёт того, за что человека обычно упрекают в неудобстве: держит в фокусе множество слоёв контекста одновременно. Если это верно, почти исчерпывающая модель версионирования (полная история, ссылки по смыслу, а не по случайному номеру строки) перестаёт быть избыточной роскошью и становится требованием, потому что именно агенты, а не только люди, теперь читают и правят код в промышленных масштабах.

Кому это важно

В первую очередь, командам, которые уже отдают часть кодовой базы на правку ИИ-агентам и хотят понимать, кто и почему изменил конкретный кусок кода, даже если строка с тех пор сдвинулась. Во вторую, разработчикам инструментов для агентной разработки в целом: DeltaDB предлагает конкретный набор системных решений (CRDT, деревья Меркла, временные метки Лэмпорта, фрагментное хранение) тем, кто проектирует похожую инфраструктуру. В третью, пользователям редактора Zed, поскольку Delta описана как развитие их собственного продукта, а не отдельный сервис.

Как это применить

Практический слой сформулирован явно: каждый разговор с агентом в Delta одновременно является настоящей git-веткой, поэтому команде не нужно переходить на Delta всем сразу, коллега, который её не открывает, просто видит обычный репозиторий и работает с ним привычными инструментами. Репозиторий можно продолжать зеркалить на GitHub, пока не все готовы переходить, по словам поста, так пока и работает сам Zed как проект с открытым кодом. Технически ссылка на участок кода, которую агент оставил в разговоре («якорь»), продолжает указывать на нужный смысловой фрагмент и после того, как файл вокруг него изменился, это отличает её от номера строки, теряющего смысл после первой же правки, и это стоит проверять на практике при оценке подобных инструментов. При этом пост не называет ни дату выхода, ни версию, ни то, доступна ли Delta уже всем или только части пользователей, эти детали стоит уточнять напрямую у Zed, а не считать само собой разумеющимся.

Можно ли доверять

Это пост в собственном блоге Zed, первоисточник, но не независимая проверка: авторы объясняют, почему построили именно так, а не приводят сторонний аудит DeltaDB или бенчмарки производительности. Историческая часть проверяема отдельно: даты (гипертекст, 1965, демонстрация Энгельбарта, 1968, временные метки Лэмпорта, 1978, деревья Меркла, 1979, Git, 2005, CRDT, 2011, Tree-sitter и микровиртуальные машины класса Firecracker, 2018), это общеизвестные вехи компьютерной истории, не придуманные для этого поста. А вот трактовка причин провала Xanadu, предмет спора: издание Wired в своё время описывало историю Нельсона как историю провала управления проектом, и пост прямо обозначает альтернативный взгляд («я думаю, что...») как личное мнение автора, а не как факт, это разграничение стоит сохранять, читая материал.

Риски и подводные камни

Главный риск для читателя, принять эссе о собственном замысле за отчёт о готовом продукте: в посте нет ни даты релиза, ни номера версии, ни статуса доступности (закрытая бета или доступно всем), ни одного бенчмарка производительности, ни одного примера использования реальной командой, это разбор идеи и архитектуры, а не результатов внедрения. Второй риск, сама амбиция, которая уже однажды не сработала: собственный проект Нельсона умирал десятилетиями отчасти потому, что отказывался взаимодействовать с чужими форматами; Zed прямо признаёт эту опасность и держит Delta совместимой с обычным git и GitHub «на переходный период», то есть полностью «ксаналогическая» модель данных пока не заменяет привычную инфраструктуру, а сосуществует с ней, и неясно, что произойдёт, когда переходный период закончится.

«Хотя Xanadu десятилетиями тормозило отсутствие нужных компонентов, больше всего ему не хватало идеального пользователя.»

— блог Zed