综合介绍
MacOS LLM Controller 是一个开源桌面应用,托管在 GitHub 上,允许用户通过语音或文字输入自然语言指令来执行 macOS 系统命令。它基于 Llama-3.2-3B-Instruct 模型,利用 LlamaStack 生成 Python 代码,调用 macOS 系统 API 完成任务。用户可以说“打开终端”或输入“新建文件夹”,工具会自动解析并执行操作。该项目采用 React 前端和 Flask 后端,支持实时状态反馈和命令历史记录,适合 macOS 用户提升操作效率,尤其便于开发者或无障碍需求人群。代码公开,社区可参与优化。
功能列表
- 语音指令识别:通过麦克风输入语音,实时转化为 macOS 系统命令。
- 文字指令输入:支持文本输入自然语言,执行系统操作。
- 命令历史记录:显示已执行命令的成功或失败状态。
- 实时状态反馈:界面动态更新服务连接和命令执行状态。
- Python 代码生成:基于 LlamaStack 将指令转为可执行的 macOS API 调用代码。
- 本地化运行:所有处理在本地完成,保护用户隐私。
- 安全检查:对生成的 Python 代码进行基本安全验证。
使用帮助
安装流程
MacOS LLM Controller 需要在 macOS 系统上配置环境,包括前端、后端和 LlamaStack 模型。以下是详细的安装步骤,确保用户可以顺利运行:
1. 环境准备
确保系统满足以下要求:
- 操作系统:macOS(项目专为 macOS 设计,未明确支持其他系统)。
- Node.js:版本 16 或更高,包含
npm
。可从 Node.js 官网 下载。 - Python:版本 3.8 或更高,包含
pip
。可从 Python 官网 下载。 - Ollama:用于运行 Llama 模型。访问 Ollama 官网 安装。
- Docker:用于运行 LlamaStack。安装 Docker Desktop。
- 硬件要求:建议 16GB 以上内存和多核 CPU,以支持模型推理。
2. 克隆项目代码
打开终端,运行以下命令克隆代码:
git clone https://github.com/duduyiq2001/llama-desktop-controller.git
cd llama-desktop-controller
3. 配置 LlamaStack
LlamaStack 是项目的核心依赖,用于生成 Python 代码。配置步骤如下:
设置环境变量:
在终端运行以下命令,指定推理模型:
export INFERENCE_MODEL="meta-llama/Llama-3.2-3B-Instruct"
export OLLAMA_INFERENCE_MODEL="llama3.2:3b-instruct-fp16"
启动 Ollama 推理服务器:
运行以下命令启动模型,设置 60 分钟保持活动:
ollama run $OLLAMA_INFERENCE_MODEL --keepalive 60m
使用 Docker 运行 LlamaStack:
设置端口并启动容器:
export LLAMA_STACK_PORT=5001
docker run \
-it \
-p $LLAMA_STACK_PORT:$LLAMA_STACK_PORT \
-v ~/.llama:/root/.llama \
llamastack/distribution-ollama \
--port $LLAMA_STACK_PORT \
--env INFERENCE_MODEL=$INFERENCE_MODEL \
--env OLLAMA_URL=http://host.docker.internal:11434
确保 LlamaStack 在 http://localhost:5001
运行正常。
4. 后端设置
后端基于 Flask,负责处理 API 请求和代码生成。操作步骤如下:
- 进入后端目录:
cd backend
- 安装 Python 依赖:
pip install -r ../requirements.txt
依赖包括
flask
、flask-cors
、requests
、pyobjc
和llama-stack-client
。若安装失败,可使用国内镜像:pip install -r ../requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
- 启动 Flask 服务器:
python server.py
- 确认后端运行在
http://localhost:5066
。
5. 前端设置
前端基于 React,提供用户界面。操作步骤如下:
- 进入前端目录:
cd .. # 返回项目根目录
- 安装 Node.js 依赖:
npm install
- 启动开发服务器:
npm run dev
- 确认前端运行在
http://localhost:5173
。
6. 访问应用
打开浏览器,访问 http://localhost:5173
。确保后端和 LlamaStack 正常运行,否则功能可能受限。
功能操作指南
1. 使用语音指令
语音输入是项目的核心功能,适合快速操作。操作步骤如下:
- 启动语音模式:在主界面点击“语音输入”按钮(或使用快捷键,需查看文档确认)。
- 录制指令:对着麦克风说指令,例如“打开 Finder”或“关闭 Safari”。保持环境安静以提高识别率。
- 执行过程:工具通过 SpeechRecognition API 将语音转为文字,LlamaStack 解析为 Python 代码,调用 macOS API 执行任务。
- 常见指令示例:
- “打开终端”:启动 Terminal.app。
- “新建文件夹”:在当前目录创建文件夹。
- “截屏”:触发 macOS 截图功能。
- 注意事项:
- 首次使用需授权麦克风权限。
- 若识别失败,检查麦克风设置或切换文字输入。
2. 使用文字指令
文字输入适合精确控制。操作步骤如下:
- 打开输入框:在界面找到文本输入区域。
- 输入指令:键入自然语言,例如“打开日历”或“将音量调到 50%”。
- 提交指令:点击“执行”按钮或按回车,工具生成并运行 Python 代码。
- 高级用法:支持复杂指令,如“在桌面新建一个名为‘项目’的文件夹并打开”。LlamaStack 会分解任务并按序执行。
- 提示:指令明确可提高成功率,例如“打开 Chrome”优于“打开浏览器”。
3. 查看命令历史
界面提供命令历史区域,显示每次指令的执行状态:
- 成功状态:绿色标记,表示命令已正确执行。
- 错误状态:红色标记,附带错误提示(如“权限不足”)。
- 操作:可点击历史记录重新运行指令,或查看生成的 Python 代码。
4. 实时状态监控
界面右上角显示服务状态:
- 绿色:后端和 LlamaStack 连接正常。
- 红色:服务断开,需检查 Flask 或 LlamaStack 是否运行。
- 操作:点击状态图标可手动刷新连接。
5. 安全检查
工具对生成的 Python 代码进行基本安全验证:
- 过滤高风险命令(如删除系统文件)。
- 检查语法错误,确保代码可执行。
- 注意:仍需谨慎使用,避免运行未知来源的指令。
注意事项
- 模型依赖:项目固定使用 Llama-3.2-3B-Instruct,无法直接替换其他模型。
- 性能要求:运行 LlamaStack 需要较高算力,建议关闭无关程序。
- 调试方法:若启动失败,检查终端日志,或访问
http://localhost:5066/status
查看后端状态。 - 权限问题:部分 macOS 命令需授权(如访问文件或控制音量),首次运行会弹出权限提示。
- 社区支持:问题可通过 GitHub Issues 提交,附带错误日志以便开发者排查。
应用场景
- 无障碍辅助
视障或行动不便用户可通过语音指令操作 macOS,例如“打开邮件”快速启动 Mail.app,提升使用便利性。 - 开发者效率
开发者可快速执行命令,如“打开 Xcode 并新建项目”,节省手动操作时间,专注于开发任务。 - 日常自动化
用户可通过文字指令完成重复任务,例如“每天整理桌面文件到归档文件夹”,适合高效办公。 - 教育与实验
编程爱好者可研究 LlamaStack 如何将自然语言转为代码,学习 AI 与系统集成的原理。
QA
- 语音识别不准确怎么办?
确保麦克风正常,环境无杂音。若仍失败,切换文字输入,或检查 SpeechRecognition API 配置。 - 后端启动失败怎么办?
确认 Python 依赖完整安装,LlamaStack 是否运行在http://localhost:5001
。查看server.py
日志定位错误。 - 支持非 macOS 系统吗?
当前仅支持 macOS,因代码依赖 macOS API。未来可能通过社区扩展其他平台。 - 如何优化性能?
增加内存或使用高性能 CPU/GPU,关闭其他占用资源的程序。也可尝试更高效的 LlamaStack 配置。 - 如何贡献代码?
Fork 仓库,提交 Pull Request。建议先阅读项目文档,遵循贡献指南。