项目简介

'llmbasedos' 不仅是一个基于 Arch Linux 的最小化操作系统,它更是一个核心组件,旨在通过 Model Context Protocol (MCP) 这个标准化协议,安全地将用户本地的个人数据(如文件、邮件)和工具(如文件同步、自动化脚本)暴露给各种 LLM 应用前端(如桌面应用、VS Code 插件等)。它充当了 LLM 与用户本地环境之间的桥梁,使得 LLM 能够理解和操作个人上下文。

主要功能点

该服务由一个中心网关和多个后端 MCP 服务组成,提供以下核心功能:

  • 文件系统访问 (FS): 允许 LLM 应用安全地列出、读取、写入和删除用户指定“虚拟根目录”内的文件和文件夹。支持基于语义的文件搜索和内容嵌入(需额外库)。
  • 邮件访问 (Mail): 连接到用户的 IMAP 邮箱,列出账户、文件夹、邮件,读取邮件详情,并支持解析 iCalendar 数据。
  • 数据同步 (Sync): 集成 'rclone' 工具,允许 LLM 应用触发、监控和停止基于 'rclone' 的文件同步任务(例如,同步到云存储)。
  • 智能体/工作流执行 (Agent): 托管和执行预定义的自动化工作流(Agentic workflows),这些工作流可以调用外部服务(如 Docker 容器、HTTP Webhook),让 LLM 能够自动化执行复杂任务。
  • LLM 代理 (LLM Proxy): 通过网关代理 LLM API 调用(如 OpenAI, llama.cpp),并应用授权和配额管理。
  • 中心网关 (Gateway): 作为所有 MCP 请求的路由中心,处理来自客户端的连接(支持 WebSocket),进行身份验证(基于授权文件)、权限控制和速率限制,并将请求转发给相应的后端 MCP 服务。

安装步骤

'llmbasedos' 设计为运行在一个专门的 Arch Linux 环境中,可以通过构建自定义 ISO 并安装到硬盘来部署。以下是大致的部署流程,供了解其运行环境:

  1. 准备环境: 需要一个 Arch Linux 或兼容环境,安装必要的系统依赖和 Python 环境。
  2. 获取代码: 克隆 'llmbasedos' 仓库到本地。
  3. 安装 Python 依赖: 在项目的 Python 环境中,安装所有依赖库(通常通过 'pip install -r requirements.txt')。
  4. 配置服务:
    • 创建并配置许可证文件 '/etc/llmbasedos/lic.key' (YAML或JSON格式,定义 tier, user_id 等)。
    • 配置邮件账户 '/etc/llmbasedos/mail_accounts.yaml'。
    • 放置或定义工作流文件在 '/etc/llmbasedos/workflows/'。
    • 配置 LLM API 密钥或端点(通过环境变量或配置文件)。
  5. 设置系统服务: 项目包含 systemd 服务单元文件 ('iso/systemd_units/' 下),需要将这些文件复制到系统相应位置,并启用网关(gateway)和所需的后端服务(fs, mail, sync, agent)。
  6. 启动服务: 使用 'systemctl start llmbasedos-gateway.service' 和其他服务命令启动所有组件。

完成上述步骤后,MCP 网关服务将在配置的地址和端口(默认为 'ws://localhost:8000/ws')监听连接。

服务器配置(用于 MCP 客户端连接)

MCP 客户端需要配置连接到 llmbasedos 网关的信息。由于 'llmbasedos' 网关主要通过 WebSocket 提供服务,典型的客户端配置可能包含以下信息(JSON格式):

{
  "name": "llmbasedos-gateway",
  "description": "LLM本地能力接入网关服务",
  "protocol": "websocket",
  "url": "ws://localhost:8000/ws"
  // 注意:
  // 此配置假设网关服务已经独立运行在 ws://localhost:8000/ws。
  // LLMBDOS设计上服务通常由Systemd等守护,客户端通过网络连接。
  // 如果需要通过客户端进程启动并使用 StdIO 连接(此项目默认不支持对客户端),则需要不同的配置。
  // 实际部署中,请根据网关的实际监听地址和端口调整 "url" 字段。
  // 认证和权限(如许可证文件)在网关服务器端配置和验证。
}

基本使用方法

一旦 MCP 客户端成功连接到 llmbasedos 网关(通常通过建立 WebSocket 连接),它就可以发送 JSON-RPC 格式的请求来调用各种能力。

例如,一个客户端想要列出 '/home/llmuser/Documents' 目录下的文件,可以发送如下 JSON-RPC 请求(假设客户端生成的请求ID是 "123"):

{
  "jsonrpc": "2.0",
  "method": "mcp.fs.list",
  "params": ["/home/llmuser/Documents"],
  "id": "123"
}

网关会接收到此请求,进行认证和权限检查,然后将请求转发给后台运行的 FS 服务。FS 服务处理请求后,将结果或错误返回给网关,网关再将对应的 JSON-RPC 响应发送回客户端。

类似的,调用其他功能(如发送 LLM 对话请求)也会遵循相同的 JSON-RPC 请求/响应模式,只是 'method' 名称和 'params' 内容会根据具体的能力而变化。客户端通常会通过 'mcp.hello' 或 'mcp.listCapabilities' 方法发现服务器提供的所有可用能力及其详情。

信息

分类

AI与计算