爱意满满的作品展示区。
Sunrisepeak

xlings: 通用包管理器 + OS-like 轻量级隔离环境, 可以创建多个 SubOS 环境跑 Agent, 不用担心破坏 Host 数据

  •  
  •   Sunrisepeak ·
    Sunrisepeak · 8 days ago · 926 views

    项目地址: https://github.com/openxlings/xlings

    注: 目前 linux 体验比较好, windows/macos 上逐渐适配中


    xlings

    通用包管理基础设施 + OS-like SubOS 隔离
    多版本共存 · 无需 Root · 去中心化索引 · 面向 Agent

    [官网] | [文档] | [包索引] | [社区论坛]

    中文 | English

    使用者: MCPP · 即将推出的 Luban Linux


    为什么选 xlings?

    痛点 没有 xlings 有 xlings
    系统 gcc@11,还想装 gcc@16 手动编译,容易冲突 xlings install gcc@16 — 两版本共存
    团队需要一致的项目环境 "在我机器上能跑" .xlings.json + xlings install — 进入项目目录即无感进入隔离的项目级 SubOS
    Agent 需要自己的隔离世界来运行 Docker daemon + 镜像 + 清理 Agent 跑在 SubOS 里面 — 拥有完全权限,无需 root,轻量级,宿主机不受影响

    vs 其它工具

    apt / brew nix docker xlings
    多版本共存
    无需 Root ⚠️ ⚠️ ✅(image 模式除外)
    无 daemon
    跨平台统一命令 ⚠️ ✅ Linux / macOS / Windows
    隔离粒度 FS FS+ 🔒 shell / FS / image 三级
    存储复用 ✅ store ❌ 镜像膨胀 ✅ 版本视图 + 引用计数
    启动开销 ⚡ 即时 ⚡ 即时 🐢 秒级 ⚡ 即时 / ~10ms(sandbox)
    去中心化索引 ✅ 官方 + 第三方 + 自建
    Agent / JSON 接口 ⚠️ API xlings interface(NDJSON)
    可作 OS 级包管理器 apt 本身是 NixOS ✅(Luban Linux,即将推出)

    快速开始

    安装

    Linux / macOS

    curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash
    

    Windows (PowerShell)

    irm https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.ps1 | iex
    

    让你的 AI Agent 帮你装

    把以下内容复制给你的 AI agent(Claude / Codex / OpenCode 等):

    帮我安装 xlings 包管理器。
    - Linux/macOS: curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash
    - Windows: irm https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.ps1 | iex
    项目地址: https://github.com/openxlings/xlings
    

    试一试多版本

    xlings install gcc@16 node@24 cmake
    xlings use gcc@16        # 切换当前版本
    gcc --version            # gcc 16.x
    

    核心概念

    特性

    1. 📦 通用包管理基础设施 — binary / script / config / subos / tutorial 统统是 xpkg
    2. 🔀 多版本共存 — 同一工具 N 个版本并存;版本视图 + 引用计数(N 个环境 ≈ 1 份存储)
    3. 🏗️ 三级 SubOS 隔离 — shell(env 切换)/ FS(bwrap/proot,无需 root)/ image(ext4,需 root)
    4. 🌐 去中心化包索引 — 官方 + 第三方 + 自建仓库;资源服务器做二进制镜像分发
    5. 🤖 JSON 事件接口xlings interface(NDJSON 协议)面向 AI Agent 、CI 和第三方工具

    场景

    🛠 工具链 — 多版本免 sudo

    xlings install gcc@16 gcc@11 cmake node@24
    xlings use gcc@16        # 即时切换
    xlings use gcc@11        # 切回 11, 互不干扰
    

    📦 项目 — 无感进入项目级 SubOS

    当你进入包含 .xlings.json 的项目目录时,xlings 自动透明地激活项目级 SubOS — 你和团队在隔离环境中工作而无需任何手动操作。所有依赖都在项目自己的 SubOS 中。

    {
      "workspace": {
        "xmake": "3.0.7",
        "gcc": { "linux": "16.1.0" },
        "llvm": { "macosx": "20.1.7" }
      }
    }
    
    cd my-project/           # 自动进入项目 SubOS
    xlings install           # 依赖装进项目级隔离环境
    xmake build              # 一切正常运作, 与宿主机隔离
    

    clone → cd → build 。团队和 CI 环境完全一致,无需手动激活。

    🤖 Agent — Agent 运行在自己的轻量级世界中

    xlings 让你把 agent(codex / claude / opencode 等)运行在 SubOS 内部 — agent 在隔离环境中拥有完全权限,宿主机完全安全。

    为什么这很重要:

    • 🔓 Agent 在 SubOS 内拥有更大权限 — 装包、改文件、跑任意代码 — 不会伤害宿主机
    • 🔁 同一个 agent 工具,一台机器上多个实例 — 每个 SubOS 有独立配置(正常情况下 codex/claude 一个账号只能跑一份)
    • ⚡ 轻量级 — 不是重型 VM 或容器,仅 namespace 隔离

    在 SubOS 中运行 Agent:

    # 创建 SubOS(从 base 环境 fork,或自己从零配置)
    xlings subos new claude-workspace --from subos:dev-env@latest
    
    # 进入 SubOS — Agent 在这里面运行,拥有完全控制权
    xlings subos use claude-workspace --sandbox
    # → 现在你在 agent 的世界里
    # → 在这里启动 claude / codex / opencode
    # → 它们可以自由安装、修改、实验 — 宿主机不受影响
    
    # 同一台机器上运行多个隔离的 agent 实例
    xlings subos new claude-workspace-1 --from subos:dev-env@latest
    xlings subos new claude-workspace-2 --from subos:dev-env@latest
    xlings subos new codex-workspace --from subos:dev-env@latest
    

    一次性任务也可以用 --cmd:

    xlings subos use claude-workspace --sandbox --cmd "python analyze.py"
    

    无需 root,无 daemon,无镜像膨胀。每个 Agent 拥有自己的世界。


    SubOS 详解

    三级隔离

    级别 机制 需要 Root? 隔离范围 适用场景
    🟢 Shell env/PATH 切换 工具版本 日常开发, 版本锁定
    🔵 FS bwrap / proot 沙箱 文件系统(HOME, /tmp 私有) Agent, 实验, 不受信代码
    🟠 Image ext4 稀疏镜像挂载 完整块设备隔离 重型工作负载, 持久化沙箱

    关键能力

    • 从 base forkxlings subos new <name> --from <local|subos:pkg@ver>(shared storage 下 0s)
    • 非交互执行xlings subos use <name> --cmd "<command>"(exit code 透传)
    • 沙箱模式--sandbox 标志;bwrap 优先(setuid,xim 自管理),proot 兜底
    • 存储模式--storage shared|tmpfs|image,fork 时选择
    • 项目级 SubOS.xlings.json 中声明,进入项目目录即自动透明激活
    • Keeper(可选)--keep 保持 mount namespace 活跃,高频 exec 优化;xlings subos stop 释放

    包索引生态

    graph TD
        subgraph 来源
            S1["🏛️ 官方 - openxlings/xim-pkgindex"]
            S2["🌍 第三方 - 社区仓库"]
            S3["🏠 自建 - 团队 Git / 本地路径"]
        end
    
        subgraph "资源服务器 (二进制镜像)"
            R1[GLOBAL]
            R2[CN]
            R3[自建 OSS]
        end
    
        S1 & S2 & S3 -->|"xpkg 包描述"| X[xlings install]
        X -->|"下载二进制"| R1 & R2 & R3
    
        style X fill:#e8f5e9
    

    一行添加自定义索引:

    {
      "index_repos": [
        { "name": "xim", "url": "https://github.com/openxlings/xim-pkgindex.git" },
        { "name": "my-team", "url": "[email protected]:devtools/pkgs.git" }
      ]
    }
    

    生态

    项目 角色 链接
    MCPP 现代 C++ 构建工具生态 — 通过 xlings 分发 github.com/mcpp-community/mcpp
    Luban Linux 即将推出的 Linux 发行版,采用 xlings 作为系统级包管理器 (发布时更新链接)
    xim-pkgindex 官方包索引 — 60+ 个包持续增长 openxlings/xim-pkgindex

    Agent 集成

    Agent 运行在 SubOS 内部

    不同于传统的"agent 调用工具"模式,xlings 让 agent 本身运行在 SubOS 里面。agent 拥有一个完整的隔离环境 — 可以装包、写文件、跑服务 — 全都不会影响宿主机。

    场景 实现方式
    安全地给 agent 完全权限 agent 在 --sandbox SubOS 内运行
    同一 agent 工具(codex/claude)一台机器多实例 每个实例一个 SubOS
    Agent 需要特定环境(Python + CUDA + 自定义库) subos:ml-env@latest fork
    临时任务执行 --storage tmpfs + --cmd

    程序化接口

    xlings interface 提供 NDJSON 协议(stdio 通信)— 面向 AI Agent 、CI 系统和第三方工具的程序化控制:

    xlings interface
    # → {"protocol":"1.0","capabilities":[...]}
    # ← {"action":"install","target":"subos:py-ds@latest"}
    # → {"kind":"progress","phase":"downloading","percent":45,...}
    # → {"kind":"data","dataKind":"installed","payload":{...}}
    

    开发 & 测试环境

    除了 Agent,SubOS 同样适合开发和测试:

    # 不同场景不同环境
    xlings subos new rust-nightly --storage shared
    xlings subos new legacy-gcc11 --storage shared
    
    # 或使用项目级模式:进入项目目录即自动进入隔离环境
    cd my-project/           # 无感进入项目 SubOS
    

    从源码构建

    # 1. 安装 xlings(见上方"快速开始")
    # 2. 在仓库根目录安装构建依赖:
    xlings install           # 读取 .xlings.json → xmake, cmake, ninja, 工具链
    
    # 3. 切换到开发工具链:
    xlings use [email protected]    # 确保 xrepo 缓存用 glibc 链接
    
    # 4. 构建:
    xmake f -y && xmake build xlings
    xmake build xlings_tests && xmake run xlings_tests
    

    .xlings.json 同时驱动 CI 和 release 流水线。


    社区

    2 replies    2026-05-18 18:46:47 +08:00
    openercn
        1
    openercn  
       7 days ago
    这个方向很适合给 Agent 做“可丢弃、可复现”的执行层。相比直接在宿主机跑,我会优先看三件事:每个 SubOS 的命令、退出码和日志能不能长期保留; provider key 、缓存、临时文件能不能按任务隔离;失败后能不能回到同一个目录和 diff 状态继续排查。

    如果 xlings interface 的 NDJSON 能把 install/use/subos 的事件都稳定吐出来,后面接 Codex/Claude 或 CI 会很自然:Agent 有更大权限,但人能审计它到底改了什么、在哪一步停住。
    Sunrisepeak
        2
    Sunrisepeak  
    OP
       7 days ago
    @openercn 大概有这么几个视角

    xlings 内部实现是通过 EventStream 进行能力暴露的 TUI 命令行 / xlings interface json 接口 都只是其前端消费者(之一)

    xlings interface 设计的是时候是把 xlings 的所有能力(包括 install/use/subos 及其他命令), in/out 都用 json 格式 这样 xlings 可以是"库"的形式呈现

    - 1.基于 xlings interface 接入 Agent Tool Use 做 agent 的执行层 可以做为 Agent 工具能力的扩展器 / 包管理 Agent 需要什么工具可以从 xlings 里查找安装
    - 2.做为其他工具的包索引/管理模块 - 这个目前已有具体示例 - [mcpp 项目]( https://github.com/mcpp-community/mcpp)

    ---

    目前已经实现的是 让 Agent 跑到 一个 SubOS 里面 这样 agent 的登陆验证/key/记录等等都是隔离 并且可以给 agent 开很大权限 不会直接操作/损坏 host 的文件和数据. 并且可以创建一个基础环境(里面用 xlings 配置好一些基础的工具和环境) 然后通过 fork 创建多个 subos 环境 给不同或相同的 agent 使用

    而 xlings interface 怎么使用 主要还是看使用者, 因为他本质上算是 xlings 的 "库型态的接口"
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2854 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 15:19 · PVG 23:19 · LAX 08:19 · JFK 11:19
    ♥ Do have faith in what you're doing.