Jujutsu 版本控制与分片存储

目录

    什么是 Jujutsu

    Jujutsu 是 Google 开源的下一代版本控制系统,兼容 Git 存储格式。与 Git 相比,Jujutsu 没有暂存区概念,工作副本即 commit,所有操作都可以 undo,非常适合自动化和智能体场景。

    MDMS 使用 Jujutsu 管理百科词条的主存储,解决三个核心问题:超大规模文件存储(亿级 .md 文件)、版本历史追踪(十亿级编辑记录)、多智能体并行写入(无冲突协作)。

    为什么选择 Jujutsu 而不是 Git

    Git 在大仓库场景下有明显瓶颈:git status 扫描百万文件需要数秒,分支切换需要重写工作目录,合并冲突处理需要人工介入。

    Jujutsu 的优势:工作副本即 commit,无需 git add / git commit 两步操作;所有操作可 undo,智能体误操作可以一键回退;原生支持匿名分支,每个智能体自动获得独立工作空间;底层使用 Git 存储格式,现有工具(如 GitHub)可以直接访问。

    架构概览

    MDMS 读写请求
        ↓
    分片路由层(hash(slug) % N)
        ↓
    ┌──────────┬──────────┬──────────┐
    │ shard-00 │ shard-01 │ ... │ shard-99 │
    │ Jujutsu  │ Jujutsu  │     │ Jujutsu  │
    │ 仓库     │ 仓库     │     │ 仓库     │
    └──────────┴──────────┴──────────┘
        ↓
    Manticore Search(全文检索索引)
        ↓
    PageRank(内容权重排序)
    

    每个分片是一个独立的 Jujutsu 仓库,包含约 50-100 万个 .md 文件。读写请求通过 hash(slug) % N 路由到对应分片。

    环境要求

    操作系统: Linux(CentOS 7+ / Ubuntu 20.04+ / Debian 11+)

    内存: 分片操作主要是磁盘 IO,额外内存占用很小,建议服务器总内存不低于 4GB

    磁盘: 每个 .md 文件平均 2-5KB,1 亿词条约 200-500GB(Git 压缩后更小),建议 SSD

    Jujutsu 版本: 0.25.0 及以上

    安装 Jujutsu

    方式一:下载预编译二进制(推荐)

    curl -LsSf https://github.com/jj-vcs/jj/releases/latest/download/jj-x86_64-unknown-linux-musl.tar.gz | tar xz -C /usr/local/bin
    jj version
    

    方式二:通过 Cargo 安装

    # 需要先安装 Rust
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    source ~/.cargo/env
    cargo install --locked jj-cli
    jj version
    

    验证安装

    jj version
    

    输出类似 jj 0.28.0 表示安装成功。

    初始配置

    jj config set --user user.name "MDMS System"
    jj config set --user user.email "mdms@localhost"
    

    分片架构

    分片规则

    分片数量 N 默认为 100。每个词条根据 slug 的哈希值分配到对应分片:

    分片编号 = FNV32(slug) % 100
    

    例如 slug 为 "manticore-search" 的词条,FNV32 哈希后取模,可能分配到 shard-42。

    分片目录结构

    /data/shards/
    ├── shard-00/          # 独立 Jujutsu 仓库
    │   ├── .jj/
    │   └── content/
    │       └── md/
    │           ├── article-aaa.md
    │           └── article-bbb.md
    ├── shard-01/
    │   ├── .jj/
    │   └── content/
    │       └── md/
    ├── ...
    └── shard-99/
    

    初始化分片

    首次使用时,MDMS 会自动初始化所有分片仓库。也可以手动初始化:

    for i in $(seq -w 0 99); do
      mkdir -p /data/shards/shard-$i/content/md
      cd /data/shards/shard-$i
      jj git init
      cd -
    done
    

    智能体协作模型

    工作流程

    每个智能体拥有独立的命名分支,写入流程如下:

    第一步: 智能体在目标分片创建自己的分支

    cd /data/shards/shard-42
    jj new main -m "agent/bot-001 开始编辑"
    

    第二步: 智能体写入或修改 .md 文件

    第三步: Jujutsu 自动记录变更(工作副本即 commit,无需手动 commit)

    第四步: 描述本次变更

    jj describe -m "agent/bot-001: 更新词条 manticore-search"
    

    第五步: 合并到 main 分支

    jj rebase -d main
    

    冲突处理

    当两个智能体同时修改同一个词条时,后合并的会触发冲突。Jujutsu 的冲突处理方式:

    Jujutsu 允许冲突状态被 commit,不会像 Git 那样阻塞流程。冲突词条会被标记,等待人工或高优先级智能体审查。

    MDMS 后台的「智能体管理」页面会展示所有冲突词条,管理员可以查看 diff 并选择保留哪个版本。

    版本回退

    任何智能体的操作都可以回退:

    jj undo        # 撤销上一步操作
    jj op log      # 查看操作历史
    jj op restore  # 恢复到指定操作点
    

    与 Manticore Search 配合

    Jujutsu 负责存储,Manticore 负责检索。配合方式:

    全量索引: 扫描所有分片仓库的 .md 文件,写入 Manticore 索引

    增量索引: 监听各分片的 commit 事件,仅将变更的词条同步到 Manticore

    搜索请求: 用户搜索时走 Manticore,不直接扫描分片目录

    这样搜索性能不受分片数量影响,始终保持毫秒级响应。

    后台管理

    MDMS 后台提供以下 Jujutsu 相关管理功能:

    分片状态总览: 每个分片的词条数、最近 commit 时间、磁盘占用

    版本历史浏览: 选择任意词条查看完整编辑历史和 diff

    智能体管理: 注册智能体、查看活跃分支、审查合并冲突

    分片健康检查: 检测分片仓库完整性、自动修复损坏的仓库

    数据迁移

    从现有 content/md 迁移到分片

    如果已有大量 .md 文件在 content/md 目录下,MDMS 提供一键迁移工具:

    后台进入分片管理页面,点击「从 content/md 迁移」,系统会自动将现有文件按 slug 哈希分配到各分片仓库,并执行初始 commit。

    迁移过程中原文件不会被删除,确认无误后可手动清理。

    常见问题

    jj 命令不存在

    检查 Jujutsu 是否安装到 PATH 中: which jj。如果是通过 tar 解压安装,确认解压到了 /usr/local/bin/

    分片仓库损坏

    单个分片损坏不影响其他分片。可以删除损坏分片的 .jj 目录后重新初始化,然后从 Manticore 索引或备份恢复内容。

    磁盘空间不足

    Jujutsu 使用 Git 存储格式,支持压缩。可以对分片执行垃圾回收:

    cd /data/shards/shard-XX
    jj git gc
    

    智能体写入速度

    单分片的写入性能约为每秒 100-500 次 commit。100 个分片并行写入时,理论总吞吐量可达每秒 1-5 万次写入,足以支撑大规模智能体协作。

    平台声明:该文观点仅代表作者本人,快搜系信息发布平台,本平台仅提供信息存储空间服务。
    作者声明:本文系 MDMS 原创,未经许可,谢绝转载。
    相关话题 Jujutsu版本控制分片架构智能体

    热门话题

    最新话题