JRVS
完全本地运行的大模型AI助手,整合RAG知识库、MCP协议与语音视觉扩展,隐私数据不出本机
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
完全本地运行的大模型AI助手,整合RAG知识库、MCP协议与语音视觉扩展,隐私数据不出本机
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
清晨,你坐在电脑前,咖啡还冒着热气。你对着终端说:"嘿 JRVS,今天有什么安排?" 几秒后,它回复了你今天的会议、提醒你下午有个 deadline,顺手把昨晚没来得及整理的网页内容总结成了笔记——所有数据都在你自己的机器上,没有任何云端传输。这就是 JRVS 想做的事:给你一个钢铁侠 Jarvis 式的 AI 管家,但完全掌控在自己手里。
JRVS(Just Rather Very Simple 的缩写)是一个完全自托管的个人 AI 助手,基于本地运行的 LLM(大语言模型)实现。它的核心特点是:数据不出本机。通过 Ollama 或 LM Studio 提供本地推理能力,结合 RAG 检索增强生成、工具调用和工作流自动化,JRVS 远不止是一个聊天机器人,而是一个真正能帮你做事、记住你所有上下文、具有视觉和语音感知能力的智能代理系统。
在 JRVS 出现之前,如果你想让 AI 助手帮你管理日历、发邮件、处理文件,几乎没有选择——要么把数据交给 ChatGPT、Claude 这样的云端服务,要么用功能极其有限的传统脚本工具。隐私和智能,似乎是鱼和熊掌。
JRVS 的作者显然不这么认为。项目诞生于对本地 LLM 能力的探索:当 Ollama 让在个人电脑上跑 70B 级别模型成为可能之后,缺少的只是一个把这些能力串联起来的"操作系统"。JRVS 就是这个操作系统——它把本地推理、RAG 记忆、工具调用、语音交互整合成了一套连贯的个人 AI 工作流。
这种"本地优先"的理念在当前 AI 焦虑中显得格外重要。当你用 ChatGPT 处理工作邮件时,你的邮件内容实际上可能被用于模型训练;而 JRVS 可以读写你的 Gmail(通过 Google Workspace API),但所有操作都在你自己的 OAuth 凭证控制下,日志记录清晰可见。
1. 智能代理循环(Agent Loop)
JRVS 的核心是一个统一的工具调用循环。它内置了对 Google Workspace(Gmail / Drive / Docs / Sheets)、Nextcloud(CalDAV 日历、联系人、文件)、浏览器自动化、音乐播放器(Tauon Music Box)、网页搜索(Brave Search)的工具支持。更关键的是,JRVS 为每个工具操作设置了三层信任等级:auto(自动执行低风险读取操作,静默完成无需通知)、notify(执行后通过 Slack 或终端通知结果)、confirm(执行高风险写操作前,先把草稿发给你审批)。
所有写操作(发送邮件、修改文件、创建日历事件)在执行前会记录"意图日志",执行后会记录"结果日志",格式为带时间戳和会话 ID 的 JSON,方便事后审计。这套信任分层设计让 AI 助手既不会因为过度限制而无所作为,也不会因为权限过大而出事。
2. RAG 知识库管道
JRVS 内置了一套完整的检索增强生成(RAG)流程。数据摄入阶段:URL 抓取、文件上传、视觉模块的图像观察结果,都会被切分、嵌入(使用 BAAI/bge-base-en-v1.5 模型,768 维向量)后存入 FAISS 向量数据库,同时建立 FTS5 全文索引。检索阶段:用户查询先经过混合搜索(FAISS 语义相似度 + FTS5 关键词),用 RRF(倒数排名融合)合并两路结果,再由交叉编码重排器(ms-marco-MiniLM-L-6-v2)精排序,最后通过 MMR(最大边际相关性)保证结果多样性。
这个 RAG 管道最特别的地方在于记忆的跨会话持久性:每次对话轮次都会自动嵌入存储,下次对话时可以检索历史上下文。配合 SQLite 数据库,你甚至可以问"我上周问过的一个关于 Vue3 的问题是什么"。
3. MCP(Model Context Protocol)集成
JRVS 同时支持 MCP 协议的客户端和服务端。作为 MCP 客户端,JRVS 可以连接外部 MCP 服务器(filesystem、github、postgres、brave-search、memory、slack 等17+ 服务器),把这些工具暴露给自己的 Agent 使用。作为 MCP 服务端,JRVS 可以被 Claude Desktop 或其他支持 MCP 的 AI Agent 调用——相当于把你本地的 JRVS 变成了一个可以被远程 AI 控制的工具集。此外 JRVS 还实现了 UTCP(Universal Tool Calling Protocol),一个轻量级的工具发现协议,可以直接通过 HTTP 请求发现和调用工具,比 MCP 的代理转发延迟更低。
4. 扩展模块:视觉 + 语音
两个开箱即用的扩展模块让 JRVS 的感知能力延伸到眼睛和耳朵。视觉扩展(Vision)连接任意摄像头(USB webcam、DroidCam、RTSP 流、桌面录屏),按运动或定时触发截图,运行 LLaVA 或 Moondream 做本地视觉推理,观察结果自动写入 FAISS 知识库,还能检测异常并触发告警。语音扩展(Audio)实现了完整的对话语音 I/O:唤醒词"hey jarvis"检测,Whisper STT 语音转文字,JRVS 处理,Piper 或 Kokoro TTS 语音播报。
5. 多种交互界面
除了最常用的终端 CLI,JRVS 还支持通过 Slack 消息交互、Telegram 机器人对话、systemd 后台守护进程,以及 FastAPI API 服务器供程序化调用。这意味着你可以把 JRVS 部署在服务器上,然后从任何设备通过消息应用与它对话。
从代码结构来看,JRVS 采用了清晰的模块化分层设计。Python 3.11+ 是唯一的运行时依赖,主力框架包括:FastAPI(API 服务器)、Click(CLI 框架)、Rich(终端彩色输出)、SQLAlchemy/aiosqlite(数据库抽象)、Mem0 + Qdrant(记忆后端)、Sentence-Transformers(BGE 嵌入)、FAISS(向量检索)、aiohttp(异步 HTTP)、Google API Python Client(Workspace 集成)。
核心模块包括:
agent/:统一 Agent 循环与工具集,核心文件是 loop.py(工具调用 + 信任等级决策)和 tools.py(Google Workspace / 文件 / 搜索工具),nextcloud_tools.py 处理 CalDAV 日历,browser_tools.py 处理浏览器自动化,tauon_tools.py 控制音乐播放器core/:系统底层组件,包括日历解析器、Cron 调度器、目标调度器、Slack/Telegram 监听器、语音循环、数据库、会话存储rag/:RAG 管道:嵌入生成、FAISS 向量存储、混合检索器、重排器llm/:Ollama + LM Studio 客户端封装cli/:终端界面,包含命令注册、主题系统(matrix / cyberpunk / minimal)、历史记录api/:FastAPI 服务器 + UTCP 端点mcp_gateway/:MCP 客户端配置 + 服务端实现extensions/vision/:摄像头管理(LLaVA 和 Moondream 推理后端、FAISS 日志写入、异常检测)extensions/audio/:麦克风捕获、语音活动检测(VAD)、Whisper STT、Piper/Kokoro TTS、唤醒词检测值得注意的是,JRVS 近期经历了一次技术栈迁移:从早期版本的 faiss-cpu + sentence-transformers + torch 迁移到了 Mem0(自托管记忆服务)+ Qdrant(向量数据库),requirements.txt 中已移除 torch 依赖,大幅降低了安装门槛。
JRVS 的上手门槛属于中等偏低。安装过程非常标准化——pip install -e . 即可完成核心安装,macOS 和 Windows 都有自动化安装脚本。但有三个隐性门槛需要注意。
第一是本地 LLM 的准备。JRVS 本身不包含模型,你需要先安装 Ollama 或 LM Studio,然后拉取一个模型(推荐起步用 mistral-nemo:12b),这一步需要磁盘空间(7B 模型约 4GB,12B 模型约 8GB)和耐心等待下载。
第二是 API 密钥配置。虽然核心功能纯本地运行,但 Brave Search、Slack 集成、Telegram 机器人等功能需要额外申请 API key。不过这些都是可选的——纯离线使用完全可行。
第三是信任等级的理解成本。三档信任等级需要用户理解每个等级的行为边界,尤其是配置 goals.yaml 中的自动化任务时,错误配置 confirm 级别会导致每次都要手动审批,配置 auto 级别则可能让 AI 擅自行动。
JRVS 提供了 Docker 一键部署方案,docker-compose.yml 包含了 JRVS 主容器和 Ollama 容器,Ollama 的模型卷持久化存储。但需要注意:docker-compose 中 Ollama 容器和 JRVS 容器之间通过 network_mode: host 共享宿主机网络,这意味着 Ollama 的端口 11434 直接暴露在本机。
JRVS 没有 Web UI,所有交互通过终端或消息平台完成。这既是优势(节省资源、隐私保障)也是局限(不适合非技术用户)。
JRVS 存在一些明显的局限。首先是模型质量的上限受限于本地硬件:在没有 GPU 的情况下,跑 Mistral 12B 的速度会非常慢,回答一个复杂问题可能需要等待数十秒到数分钟,这会严重影响使用体验。其次是多语言支持的不足:主要面向英语用户,CLI 输出和文档没有中文版本,中国用户的使用成本较高。此外,作为个人项目,JRVS 的文档虽然覆盖了主要功能,但深度有限,遇到问题往往需要直接读源码。CC BY-NC 4.0 许可证也限制了商业使用。
JRVS 代表了 AI 助手领域的一个新兴方向:完全本地化的个人 AI 代理。在 Claude、GPT-4 等云端模型主导的市场下,本地 LLM + 工具调用的组合正在被更多人接受。这背后的驱动力是双重的:一方面是隐私法规日益严格,个人和企业对数据主权的需求增加;另一方面是 Ollama、LM Studio 等工具让本地 LLM 的部署门槛大幅降低。
从技术演进来看,JRVS 的 RAG 管道设计(混合搜索 + 重排 + MMR)在工业界已被验证是有效的;MCP + UTCP 双协议支持则展现了项目作者对 AI Agent 互联互通趋势的预判。随着模型能力的持续提升和硬件成本的下降,这类本地优先的 AI 助手可能会从极客玩具走向更广泛的用户群体。
总结:JRVS 是一个技术栈成熟、功能完整、隐私友好的本地 AI 助手框架。它把 Ollama/LM Studio 本地推理、RAG 知识管理、工具调用工作流、语音视觉感知整合到了一个连贯的系统中。适合有一定技术背景、注重数据隐私、希望完全掌控自己 AI 数据的用户。如果你想要一个 Jarvis 式的 AI 管家但不想把生活数据交给云端,JRVS 值得一试。