本地LLM部署指南:让AIri虚拟角色脱离网络限制自由运行
你是否曾因网络波动导致AIri对话中断?担心隐私数据通过云端API泄露?渴望在无网络环境下也能与虚拟角色互动?这些痛点正是本地LLM部署要解决的核心问题。本文将通过"问题-方案-验证"三段式框架,带你构建完全离线的AIri运行环境,让虚拟角色真正做到"时刻陪伴"。
环境层构建:从硬件配置到基础工具链
硬件配置三档对比表
| 配置类型 | 最低配置 | 推荐配置 | 极致配置 |
|---|---|---|---|
| CPU | 4核处理器 | 8核i7/Ryzen 7 | 12核i9/Ryzen 9 |
| 内存 | 8GB RAM | 16GB DDR4 | 32GB DDR5 |
| 显卡 | 集成显卡 | NVIDIA GTX 1660 (6GB) | NVIDIA RTX 4090 (24GB) |
| 存储 | 30GB SSD | 100GB NVMe | 500GB NVMe |
| 系统 | Windows 10/Linux | Windows 11/Ubuntu 22.04 | Ubuntu 22.04 Server |
基础工具链安装与验证
为什么需要这些工具?Git用于获取项目源码,Node.js和pnpm管理JavaScript依赖,Rust工具链编译高性能组件,这三者构成AIri运行的基础生态。
安装Git
sudo apt install git -y # Ubuntu系统
git --version # 验证安装,应显示2.30+版本
操作难度:★☆☆☆☆
安装Node.js与pnpm
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install nodejs -y
npm install -g pnpm
node -v && pnpm -v # 验证安装,Node.js应≥18.0.0
操作难度:★☆☆☆☆
安装Rust工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
rustc --version # 验证安装,应显示1.60+版本
操作难度:★★☆☆☆
克隆项目仓库
git clone https://gitcode.com/GitHub_Trending/ai/airi.git
cd airi
ls -la # 验证克隆成功,应看到项目文件列表
操作难度:★☆☆☆☆
技术原理速览:本地LLM部署架构
本地LLM部署采用"模型服务-应用接口-前端展示"三层架构。模型服务层由Ollama提供LLM运行环境,MCP服务器作为AIri专用模型管理器;应用接口层通过Node.js服务桥接模型与前端;展示层则是AIri的Live2D/VRM渲染界面。这种架构确保所有数据处理都在本地完成,实现真正的离线运行。
服务层配置:构建本地模型与API服务
部署Ollama模型服务
为什么选择Ollama?它提供一站式LLM管理,支持模型下载、运行和API封装,大幅降低本地部署门槛。
安装Ollama
curl https://ollama.ai/install.sh | sh
ollama --version # 验证安装,应显示0.1.20+版本
操作难度:★☆☆☆☆
启动服务并验证
ollama serve & # 后台运行服务
curl http://localhost:11434/api/tags # 验证服务状态,应返回JSON响应
操作难度:★☆☆☆☆
下载模型(更换示例参数)
ollama pull llama3:8b # 下载Llama 3 8B模型(替代原Mistral)
ollama pull all-MiniLM-L6-v2 # 下载轻量级嵌入模型(替代原nomic-embed-text)
ollama list # 验证模型,应显示已下载的2个模型
操作难度:★★☆☆☆ ⚠️此步骤需耐心等待(模型大小约4-8GB)
配置MCP服务器
为什么需要MCP?MCP(Model Control Protocol)是AIri项目专用的模型管理组件,提供模型调度、权限控制和性能优化,是连接Ollama与AIri应用的关键中间件。
编译MCP组件
cd crates/tauri-plugin-mcp
cargo build --release
ls target/release/libtauri_plugin_mcp.so # 验证编译结果
操作难度:★★★☆☆
修改配置文件(⚙️配置项)
nano src/config.rs # 修改默认配置
# 将默认端口8080改为8088(避免冲突)
# 设置模型缓存路径:/var/cache/airi-models
操作难度:★★☆☆☆
启动MCP服务
cargo run --release &
curl http://localhost:8088/health # 验证服务,应返回"OK"
操作难度:★★☆☆☆
高级配置技巧:服务优化与自启动
模型缓存优化
# 创建缓存目录并设置软链接
mkdir -p /var/cache/airi-models
ln -s /var/cache/airi-models ~/.ollama/models
# 验证链接:ls -la ~/.ollama/models
此配置将模型文件迁移到更大容量的分区,避免系统盘空间不足。
服务自启动配置
# 创建systemd服务文件
sudo nano /etc/systemd/system/airi-mcp.service
# 添加以下内容:
[Unit]
Description=AIri MCP Server
After=network.target
[Service]
User=your_username
WorkingDirectory=/path/to/airi/crates/tauri-plugin-mcp
ExecStart=/path/to/airi/crates/tauri-plugin-mcp/target/release/tauri-plugin-mcp
Restart=always
[Install]
WantedBy=multi-user.target
# 启用并启动服务
sudo systemctl enable airi-mcp
sudo systemctl start airi-mcp
操作难度:★★★☆☆
应用层集成:AIri项目配置与依赖管理
环境变量配置(⚙️核心配置项)
为什么需要环境变量?环境变量集中管理敏感信息和服务地址,使AIri能动态适应不同部署环境(开发/生产/本地)。
创建环境配置文件
cd services/telegram-bot
cp .env.example .env.local # 复制示例配置
nano .env.local # 编辑配置
关键配置项(更换示例参数)
# LLM配置
LLM_API_BASE_URL='http://localhost:11434/v1/' # Ollama API地址
LLM_MODEL='llama3:8b' # 使用Llama 3模型
LLM_MAX_TOKENS=2048 # 增加最大 tokens 限制
# 嵌入模型配置
EMBEDDING_API_BASE_URL='http://localhost:11434/v1/'
EMBEDDING_MODEL='all-MiniLM-L6-v2' # 轻量级嵌入模型
# 本地服务配置
MCP_SERVER_URL='http://localhost:8088' # MCP服务地址
LOCAL_STORAGE_PATH='/var/airi/data' # 本地数据存储路径
操作难度:★★☆☆☆
依赖安装与项目构建
为什么需要pnpm?pnpm采用内容寻址存储,比npm/yarn节省磁盘空间并提高安装速度,特别适合AIri这样的多包项目。
安装项目依赖
cd ../../.. # 返回项目根目录
pnpm install # 安装所有依赖
pnpm list | grep '@airi/' # 验证依赖安装,应显示airi相关包
操作难度:★★☆☆☆ ⚠️首次安装可能需要30分钟以上
构建核心模块
pnpm build:core # 构建核心库
pnpm build:server # 构建后端服务
ls packages/server-runtime/dist # 验证构建结果
操作难度:★★★☆☆
前端应用配置
为什么需要单独配置前端?前端需要指向本地API服务,禁用远程资源加载,确保完全离线运行。
修改前端环境配置
cd apps/stage-web
cp .env.example .env.local
nano .env.local
关键前端配置
VITE_API_BASE_URL=http://localhost:8088/api # 本地API地址
VITE_LOAD_REMOTE_RESOURCES=false # 禁用远程资源
VITE_OFFLINE_MODE=true # 启用离线模式
VITE_MODEL_PROVIDER=local # 使用本地模型
操作难度:★☆☆☆☆
场景化验证流程:确保本地部署有效性
场景一:基础文本对话功能验证
✅ 目标:验证本地LLM模型能否处理文本对话
启动核心服务
# 启动后端API服务
cd packages/server-runtime
pnpm start &
# 启动前端应用
cd ../../apps/stage-web
pnpm dev &
操作难度:★☆☆☆☆
验证步骤
- 访问 http://localhost:5173(前端默认地址)
- 在聊天框输入"你好,介绍一下自己"
- 观察响应:应在5-10秒内收到AIri的文本回复
- 检查网络活动:通过浏览器开发者工具确认无外部API请求
🔍 检查点:回复内容应包含"AIri"和"本地部署"相关描述
场景二:语音交互功能验证
✅ 目标:验证本地语音识别(ASR)和语音合成(TTS)功能
配置音频服务
cd apps/realtime-audio
pnpm install
pnpm start &
操作难度:★★☆☆☆
验证步骤
- 在前端界面点击麦克风图标
- 说出"今天天气怎么样"
- 观察系统:应显示文字转录并听到AIri的语音回复
- 检查音频服务日志:确认使用本地模型处理
🔍 检查点:语音识别准确率应>90%,TTS语音自然度良好
场景三:完全离线运行验证
✅ 目标:验证断网状态下的功能完整性
验证步骤
- 断开网络连接(拔网线或禁用Wi-Fi)
- 重启所有服务:
pnpm restart:all - 重复场景一和场景二的验证步骤
- 检查应用稳定性:连续10次对话无崩溃或超时
🔍 检查点:所有功能应与联网状态下表现一致
故障排除决策树
模型无法加载
模型无法加载
├─ 检查Ollama服务状态 → systemctl status ollama
│ ├─ 服务未运行 → systemctl start ollama
│ └─ 服务运行异常 → 查看日志 journalctl -u ollama
├─ 检查模型是否存在 → ollama list
│ └─ 模型缺失 → 重新拉取 ollama pull [模型名]
└─ 检查资源使用 → htop
└─ 内存不足 → 关闭其他应用或使用更小模型
API连接失败
API连接失败
├─ 检查MCP服务状态 → curl http://localhost:8088/health
│ └─ 服务未运行 → 重启MCP服务
├─ 检查防火墙设置 → sudo ufw status
│ └─ 端口被阻止 → sudo ufw allow 8088
└─ 检查环境变量配置
└─ 地址错误 → 修正.env.local中的MCP_SERVER_URL
技术词汇表
- LLM(大语言模型):基于海量文本训练的AI模型,能理解和生成人类语言
- Ollama:轻量级LLM管理工具,简化本地模型部署和API服务
- MCP(模型控制协议):AIri项目专用的模型管理组件,协调多模型工作流
- ASR(自动语音识别):将语音转换为文本的技术,实现语音交互输入
- TTS(文本转语音):将文本转换为自然语音的技术,实现AI语音输出
扩展阅读路径
- 模型优化方向:探索模型量化技术(4-bit/8-bit量化)和模型蒸馏,进一步降低硬件需求
- 自定义技能开发:学习如何为AIri添加本地运行的自定义技能,参考crates/tauri-plugin-mcp/src/skills
- 多模型协同:研究如何让不同专长的LLM模型协同工作,提升AIri的综合能力
通过本文的步骤,你已成功构建了完全离线的AIri运行环境。这种部署方式不仅解决了网络依赖和隐私顾虑问题,还为定制化AI交互提供了基础。随着本地LLM技术的不断发展,你的AIri将变得越来越智能,真正成为不受限制的虚拟伙伴。
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
atomcodeAn open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust023
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
ERNIE-ImageERNIE-Image 是由百度 ERNIE-Image 团队开发的开源文本到图像生成模型。它基于单流扩散 Transformer(DiT)构建,并配备了轻量级的提示增强器,可将用户的简短输入扩展为更丰富的结构化描述。凭借仅 80 亿的 DiT 参数,它在开源文本到图像模型中达到了最先进的性能。该模型的设计不仅追求强大的视觉质量,还注重实际生成场景中的可控性,在这些场景中,准确的内容呈现与美观同等重要。特别是,ERNIE-Image 在复杂指令遵循、文本渲染和结构化图像生成方面表现出色,使其非常适合商业海报、漫画、多格布局以及其他需要兼具视觉质量和精确控制的内容创作任务。它还支持广泛的视觉风格,包括写实摄影、设计导向图像以及更多风格化的美学输出。Jinja00
