项目简介
'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 并安装到硬盘来部署。以下是大致的部署流程,供了解其运行环境:
- 准备环境: 需要一个 Arch Linux 或兼容环境,安装必要的系统依赖和 Python 环境。
- 获取代码: 克隆 'llmbasedos' 仓库到本地。
- 安装 Python 依赖: 在项目的 Python 环境中,安装所有依赖库(通常通过 'pip install -r requirements.txt')。
- 配置服务:
- 创建并配置许可证文件 '/etc/llmbasedos/lic.key' (YAML或JSON格式,定义 tier, user_id 等)。
- 配置邮件账户 '/etc/llmbasedos/mail_accounts.yaml'。
- 放置或定义工作流文件在 '/etc/llmbasedos/workflows/'。
- 配置 LLM API 密钥或端点(通过环境变量或配置文件)。
- 设置系统服务: 项目包含 systemd 服务单元文件 ('iso/systemd_units/' 下),需要将这些文件复制到系统相应位置,并启用网关(gateway)和所需的后端服务(fs, mail, sync, agent)。
- 启动服务: 使用 '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与计算