ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

把 Hermes 装进手机:从零搭建 Robot Phone 智能体实战指南

把 Hermes 装进手机:从零搭建 Robot Phone 智能体实战指南 把 Hermes 装进手机这件事我前后折腾了快两周。头几天一直在纠结一个问题手机端到底需要什么样的 Agent后来想明白了——真正让手机变成 Robot Phone 的不是某个 App 里的聊天窗口而是一个能调用系统能力、能定时触发、能按剧本干活的后台智能体。Hermes 正好干这个事你可以把它理解成给手机装了一套自动化大脑接上大模型 API 之后它能读指令、拆任务、调用工具再配合手机本地的脚本和通知系统完成从被动等用户点按到主动帮你处理信息的转变。这篇文章我会把从零到跑通的完整路径写清楚先帮你判断该走哪条部署路线再分别讲 Android 直装和桌面端部署加手机遥控的两套方案然后是几个实用的 Robot Phone 场景最后是我实际踩过的坑。无论你手上是 Android 还是 iPhone都能找到对应的玩法。1. Robot Phone 不是概念是一台能听懂指令的机器1.1 Hermes 到底是什么很多人第一次听 Hermes以为它是个语音助手其实不是。Hermes 是一个 Agent 框架核心能力是拆解任务而不是对话。普通语音助手的工作方式是你一句、它一句顶多帮你设个闹钟、查个天气。Hermes 这种 Agent 更像一个实习生你给它一个目标比如每天早上八点整理一遍行业热点用三百字总结好发到我的微信它会自己去规划步骤先确定信息来源再调用爬虫或者 RSS 读取内容接着把内容丢给大模型做摘要最后通过通知接口推送。每个步骤都可以写死在配置里也可以让它现场决定。在手机这个场景下这个区别非常关键。手机上的通知、短信、位置、日历、应用跳转入口都有现成的系统接口Agent 可以做自动化编排把零散的手机能力组装成一个能自己干活的人。这也是 Robot Phone 的核心含义不是手机里住了一个会聊天的人而是手机本身变成了一个会动手干活的机器人。1.2 手机承载 Agent 的独特优势有人会问Agent 在电脑上跑不是更省事吗为什么要放手机我的实际体验是手机有三个电脑替代不了的价值。第一是传感器和随身性。电脑不会跟着你出门手机可以。把 Agent 放在手机上它才有机会读取你的实时位置、运动状态才能在你要出门的时候主动推送路线而不是等你回到家才给你建议。第二是通知和交互渠道。Agent 干完活总得有出口手机的通知栏、短信、语音播报就是这个出口。电脑的 Agent 干完活只能写文件或发邮件体验完全不一样。第三是隐私边界。手机上有大量个人数据短信验证码、通讯录、支付通知这些数据如果都送去远端服务器处理很多人心里不踏实。在手机本地部署 Hermes让数据尽量留在本机只把需要大模型理解的内容发到模型接口隐私控制会清楚很多。当然手机也有明显的短板计算资源有限、后台容易被系统回收、网络不稳定。所以正确的做法不是把手机当成一台小型服务器而是把它当作 Agent 的神经末梢——感知和环境交互在手机重计算放到模型接口或者家里的服务器。1.3 两条部署路线直装和远程部署 Hermes 到手机我梳理下来有两条路线。路线 A 是 Android 手机直装通过 Termux 终端模拟器跑一个本地 Python 环境再把 Hermes 装进去。优点是所有 Agent 逻辑都跑在手机里配合 Tasker、MacroDroid 这类自动化工具能实现对系统 API 的直接调用。缺点是对手机性能和用户折腾能力都有要求。路线 B 是桌面端部署 Hermes手机通过 WebUI 或 API 远程调用。优点是性能充裕、部署方便、iPhone 也能用缺点是 Agent 不在手机本地传感器和系统权限的调用会受限需要额外做一层桥接。我的建议是主力 Android 机且愿意折腾走 AiPhone 用户或者想快速验证场景走 B。后面两章我会把两条路线都写完整。2. 部署前必须想清楚的三件事2.1 接哪个大模型DeepSeek API 与本地模型怎么选Hermes 本身不带脑子它需要接一个大模型来理解和规划任务。目前社区里主流的选择有两类云 API 和本地模型。云 API 我用得最多的是 DeepSeek 的接口原因很实际第一中文理解能力强总结新闻、写摘要、理解口语化指令表现稳定第二价格低日常 Agent 任务一天几十次调用成本可以忽略第三兼容 OpenAI 的接口格式Hermes 配置里改个 base_url 就能用。本地模型则是通过 Ollama 跑在手机或者电脑上好处是断网可用、数据不出设备但手机端跑本地模型我实测非常勉强哪怕是 7B 量化模型在骁龙 8 系旗舰机上也会明显发热回答速度慢到失去实用价值。所以手机直装路线我强烈建议用云 API本地模型只适合桌面端路线或者你有一台性能足够的家用服务器。2.2 安装源与网络准备部署 Hermes 绕不开装依赖Python 包要从 PyPI 拉源码可能要从 GitHub 或者代码仓库拉。在国内网络环境下直接拉取会慢到怀疑人生。我的做法是提前把 pip 源和 GitHub 访问都配好。pip 源换成清华或者阿里云的镜像这一步能省下九成等待时间。命令行执行方式一般是在当前用户目录下建一个pip.conf把 index-url 指到镜像站。Termux 环境和桌面环境都一样先换源再装包顺序千万别反。GitHub 那边如果访问受限可以找找社区维护的镜像仓库或者加速地址。注意一点不要依赖临时性的加速方案最好把代码仓库 clone 到本地之后再慢慢研究避免反复拉取。这个预处理工作看起来不起眼实际能帮你避开大量装到一半卡住的问题。2.3 手机硬件基线要求手机直装 Hermes对硬件的要求比大多数人想象的低。Agent 本身只是一个 Python 进程内存占用大概几百 MB真正消耗资源的是大模型推理而这一步我们交给了云 API所以手机端压力并不大。我的建议基线是这样的Android 设备内存至少 4GB系统版本 Android 10 以上存储剩余空间至少 2GB。CPU 性能不需要太强但需要能支持虚拟化或者至少不被系统频繁冻结。实际上我手上一台几年前的骁龙 778G 中端机跑得很稳真正难处理的从来不是性能而是后台保活——这个问题我会在第六章详细讲。桌面端路线对硬件的要求就更低了一台普通的家用电脑就够了甚至用一台长期开机的迷你主机效果更好。3. Android 直装实操Termux 环境到 Hermes 跑通3.1 安装 Termux 的正确姿势Termux 是 Android 上的终端模拟器它给你一个完整的 Linux 用户空间可以安装 Python、Node.js、Git 以及各种命令行工具。这是当前在 Android 上跑 Agent 最成熟的方案没有之一。安装 Termux 有个很重要的坑不要从应用商店直接装。应用商店里的版本可能长时间不更新导致后面装包各种报错。正确做法是去 Termux 的官方发布渠道下载安装包或者用 F-Droid 这个开源应用市场。安装好之后第一件事是在 Termux 里执行termux-setup-storage这个命令会申请存储权限把手机的存储目录挂载到 Termux 环境下后面写配置文件、存日志都会用到。然后更新软件源和现有包pkg update pkg upgrade整个过程可能会提示确认一路回车就行。这里我建议再装几个基础工具后面会用到pkg install python python-pip nodejs git nano3.2 安装 Hermes 及其依赖Hermes 在 Android 上的安装方式和桌面端基本一致都是通过 Python 包管理器安装。以社区里最常见的安装包为例核心命令是pip install hermes-agent安装完成后执行初始化来生成配置文件hermes init这个命令会在当前用户目录下创建一个.hermes文件夹里面包含配置文件和插件目录。如果执行hermes init报找不到命令多半是 Python 的 bin 目录没加到 PATH 里。Termux 下可以用export PATH$PATH:$HOME/.local/bin然后重新执行。依赖方面如果 Hermes 需要额外的系统库比如ffmpeg用于音频处理或者libxml2用于解析网页可以直接用 Termux 的包管理装pkg install ffmpeg libxml2装完依赖后建议先跑一下版本检查确认 Hermes 核心文件完整。3.3 配置模型接入并跑通首个任务Hermes 的配置文件一般在~/.hermes/config.yaml或者~/.hermes/config.json具体格式取决于版本。我用的是 YAML 版本的配置核心内容是这样的model_provider: name: deepseek base_url: https://api.deepseek.com/v1 api_key: ${DEEPSEEK_API_KEY} model: deepseek-chat temperature: 0.7 max_tokens: 2048api_key建议不要直接写在配置文件里而是用环境变量引用这样即使手机被别人拿到也不会直接泄露 key。Termux 里设置环境变量可以在~/.bashrc里加一行export DEEPSEEK_API_KEY你的key配置好之后跑第一个任务验证链路。Hermes CLI 的使用方式类似hermes run 用一句话总结今天的热点新闻如果配置正确你会看到 Hermes 先输出任务拆解过程然后调用工具获取信息再调用大模型生成总结最后把结果打印出来。第一次跑通这个流程的时候我还是挺激动的——手机上真的多了一个能自己安排工作的员工。3.4 开机自启与后台保活Termux 默认不能开机自启而且 Android 系统对后台进程限制很严格这是手机直装方案最大的坎。我的做法是先用 Termux 的唤醒锁让进程在屏幕熄灭后继续运行termux-wake-lock然后执行hermes start或者hermes serve启动常驻服务。如果你的 Hermes 版本支持配置定时任务可以在配置文件里设置 cron 表达式。要做到开机自启需要用到 Termux 的Termux:Boot插件。安装这个插件后在~/.termux/boot/目录下放一个启动脚本内容大致是#!/data/data/com.termux/files/usr/bin/sh termux-wake-lock hermes start然后去 Android 系统设置里把 Termux 的后台运行权限打开并把电池优化设置为不优化。每个品牌的手机设置路径不一样但核心就这两步允许后台运行、忽略电池优化。做完这些你的 Android 手机才算真正具备 Robot Phone 的雏形。4. 另一条路线桌面端部署 Hermes手机当遥控器4.1 为什么低配手机和 iPhone 建议走这条如果你是 iPhone 用户基本可以放弃手机直装的念想。iOS 的系统限制非常严格Termux 这种终端模拟器根本无法安装即使通过开发者签名装上去权限也远远不够。iPhone 用户想玩 Hermes最实际的方案就是桌面端部署、手机当遥控器。低配 Android 手机也一样内存只有 4GB 甚至更低的机型跑 Termux 加 Hermes 常驻进程再叠加微信、支付宝这些日常应用系统大概率会频繁回收后台进程。与其跟系统斗智斗勇不如把 Agent 放在一台长期开机的电脑或者家庭服务器上手机只负责访问和展示结果。这条路线的本质是Hermes 在电脑上闭环运行手机通过浏览器打开 Hermes 的 WebUI 界面或者在本地网络里用手机 App 调用 Hermes 的 API 接口。你不需要在手机上装任何 Agent 组件手机只是遥控器和显示器。4.2 桌面端安装与 WebUI 启动桌面端安装 Hermes 比手机上还简单。以 Ubuntu 系统为例先确保 Python 3.10 以上版本然后pip install hermes-agent hermes init如果需要在 Windows 上跑建议优先考虑装 WSL2 或者直接用 Docker我在 4.4 会专门说这两者的取舍。桌面端配置模型的方式和手机端完全一样改config.yaml里的模型供应商信息就行。完成后启动 WebUI 服务hermes webui --host 0.0.0.0 --port 8080--host 0.0.0.0是关键这样手机才能在局域网内访问到。启动后在同一 WiFi 下手机浏览器输入电脑的局域网 IP 加端口号比如192.168.1.5:8080就能看到 Hermes 的控制台。WebUI 里能看到 Agent 的运行日志、历史任务、工具调用记录也可以直接在文本框里给 Hermes 下发指令。实测下来这个模式最大的价值是日志可视化——Agent 每一步做了什么、调用了什么工具、花了多长时间一目了然排查问题效率高很多。4.3 手机远程调用与内网访问的安全设置WebUI 启动后默认没有任何访问控制意味着同一个 WiFi 下的所有人都能打开你的控制台、给你的 Hermes 下发指令。如果 Hermes 配了联网工具后果可能比较严重别人可以直接让你的 Agent 去访问内网资源。我的建议是至少做两层防护。第一层给 WebUI 加访问令牌。不同版本配置方式不同常见的做法是在启动命令里加--token参数hermes webui --host 0.0.0.0 --port 8080 --token 你设置的强密码第二层如果家里路由器支持访客网络可以把手机和电脑放在主网络访客网络隔离掉。另外不要把 WebUI 端口直接暴露到公网除非紧急且确实需要否则风险很大。如果确实需要在外网访问家里的 Hermes可以考虑用组网工具把手机和家庭网络连成一个虚拟局域网这样手机在 4G/5G 环境下也能像在局域网一样访问 WebUI。但你要自己评估这种方式的安全性和合法性我不会在这里展开讨论。4.4 Docker 还是 WSL2 / Linux 原生Windows 用户部署 Hermes 经常会纠结一个问题用 Docker 还是 WSL2社区里有个说法是 Docker 比 WSL2 更省资源我的实测结论是不一定显示得更省但 Docker 的资源使用更可控。WSL2 默认会给虚拟机分配大量内存而且内存回收策略比较激进经常出现明明只在终端里开了几个窗口内存占用却居高不下。如果你要用 WSL2记得在用户目录下建一个.wslconfig文件限制内存上限[wsl2] memory4GB processors4 swap2GBDocker 的优势在于环境干净、隔离彻底、启动速度可控。缺点是挂载目录和端口映射需要额外配置对新手有学习成本。我的建议是如果你本来就会 Docker直接用 Docker 跑的体验更省心如果你不太熟 Docker 又想长期玩还不如直接用 WSL2 或者原生 Linux反而少一层抽象。实际上我自从换了 Linux 小主机常驻跑 Hermes 之后就再没折腾过 Windows 环境了。省心。5. 让 Robot Phone 真正干活四个可复制的 Agent 场景5.1 晨间信息汇总与语音播报这是我用得最多的一个场景。每天晚上睡觉前我坐在阳台喝口水手机就已经开始干活定时任务触发Hermes 读取天气接口、抓取我订阅的几个信息源、汇总当日需要关注的待办事项然后调用大模型生成一段不超过 300 字的晨间简报。早上的播报方式Android 上用 Termux 的 API 插件直接用语音合成读出来。在~/.termux/boot/的启动脚本里加一行pkg install termux-api然后通过 Termux:API 调用语音播报termux-tts-speak 早上好以下是今天的简报配合 Hermes 的输出你可以写一个脚本把 Agent 生成的简报内容传给语音播报。整个链路不到 20 行脚本就能打通。这套东西跑通之后你会明显感觉到机器人手机和装了语音助手的手机是两种完全不同的东西。5.2 位置感知类的 Agent 技能高德地图接入思路手机最独特的传感器信息就是位置Robot Phone 不理解位置就少了一半灵魂。社区里我看到不少人把高德地图的开放接口接入 Hermes做成位置感知技能。思路不复杂Hermes 通过系统接口拿到当前经纬度然后作为参数传给高德地图的逆地理编码接口把经纬度转成可读的地址描述接着再把地址描述丢给大模型让它结合时间、路线规划任务给出建议。具体到手机上Android 可以通过 Termux 的 API 获取定位termux-location -p gps拿到经纬度后用 Python 脚本或者 Hermes 的 HTTP 工具去请求高德的反地理编码 API。接入后你可以让 Hermes 实现这类任务查看我当前位置附近的咖啡厅推荐一家评分最高的并把路线预估时间告诉我。这类场景不需要特别复杂的依赖核心是把位置数据这个传感器输入接入到 Agent 的上下文里。这也是 Robot Phone 区别于普通桌面 Agent 的最典型特征。5.3 自动化联动让 Hermes 调用手机 AppAgent 和人最大的区别是不会嫌麻烦。设定好规则之后它可以替代你完成一些重复性的手机操作。思路是把手机上的自动化工具作为 Hermes 的执行器。Android 上我常用 Tasker 或 MacroDroid它们都能接收来自命令行的指令。Termux 下可以通过am broadcast这类系统命令触发 Tasker 的配置文件am broadcast -a net.dinglisch.android.tasker.ACTION_TASK -e task_name 打开勿扰模式Hermes 可以把这条命令封装成一个工具函数。当 Agent 发现自己处于会议时间段就主动触发打开勿扰模式的 Tasker 配置。整个过程不需要你手动点一下。这个组合真正的威力在于Agent 负责做判断Tasker 负责执行系统操作。自由度和传统自动化脚本完全不在一个量级。以前 Tasker 只能做如果满足条件就执行动作的机械判断现在可以让大模型来理解模糊任务比如工作日 9 点我一般开会帮我把手机调成勿扰但如果家里人的号码来电要放行。5.4 定时巡检与通知推送还有一个很实惠的场景是定时巡检。把 Hermes 当作一个值班机器人定期去检查你关注的信息源有变化就通知你。我在手机上配了一个定时任务每半小时检查一次某个服务的状态页如果发现异常就用 Termux 通知发一条推送。Hermes 可以通过 cron 定时触发也可以直接配置它内置的定时调度。通知推送的命令也很简单termux-notification --title 巡检告警 --content 服务异常请检查这个场景虽然简单但特别能体现 Agent 的价值它不厌其烦地做着规律的、低容错率的检测工作把结果压缩成一条精准的通知。人不用守着页面刷新了。6. 实测排坑后台被杀、转接限流与中文环境的坑6.1 Termux 后台被杀与缓解方案手机直装方案中我遇到最多的就是进程被系统回收。哪怕设置好了电池优化白名单某些激进的内存管理策略依然会在内存不足时优先杀掉 Termux。我的缓解手段分三层。第一层是上述的termux-wake-lock它能让 CPU 保持活跃状态避免系统进入深度睡眠第二层是在 Hermes 的常驻进程外面套一个看门狗脚本定时检查进程是否存活挂了就重新拉起第三层是减少 Agent 进程本身的内存占用比如不要同时开启太多高质量嵌入模型只在需要时加载。第三层这个细节容易被忽略。Hermes 有些功能会加载本地嵌入模型做向量检索在手机上是内存大户。如果你的场景不需要本地知识库尽量把嵌入模型的功能关掉能省出好几百 MB 内存稳定性会明显提升。6.2 模型接口报 block 和限流定位思路社区里有人提到 Hermes 在调用模型接口时会报 block 错误我也遇到过。绝大多数情况下它不是 Hermes 本身的问题而是模型 API 供应商侧的限制。排查顺序建议这样第一步确认 API key 是否正确、额度是否充足第二步看是不是并发数过高有些聚合接口对单 key 的并发限制很严格第三步看请求的模型名是否被接口支持比如有些中转接口不开放deepseek-reasoner这类模型。如果确认是并发限制可以在 Hermes 配置里把最大并发数调小改成串行处理任务。Agent 的响应会慢一点但稳定。我的原则是宁可慢不可断。一个每天稳定跑 100 次任务的 Agent比一个偶尔能跑 1000 次但经常挂在半路的 Agent 有价值得多。6.3 中文语料与角色设定的调优接好 DeepSeek 之后Hermes 默认输出的中文质量已经相当不错但要达到懂你的助手这个水平得在角色设定上花心思。我在 Hermes 的系统提示词里明确了几件事第一输出用简体中文第二重要结论放前面背景信息放后面第三遇到不明确指令先问清楚再执行不要盲目猜测。这几条就足够避免大部分答非所问的尴尬。另一个调优点是工具使用偏好。Hermes 当你给它太多工具时会乱选我的做法是只挂当前场景必要的工具。比如晨间简报场景只挂信息源读取和天气查询两个工具其余全部禁用。工具越少Agent 的选择越精准。6.4 资源占用与发热实测对比最后给一组我实测的数据参考。同样一个生成晨间简报的任务纯云 API 方案在手机端的内存占用大约 350MB发热可以忽略如果用手机本地模型推理内存占用直接到 2GB 以上运行两分钟机身就开始明显发热任务耗时也从几秒变成几分钟。如果你真的需要在没有网络的场景下使用 Agent一个折中方案是让手机在 WiFi 环境跑云端 API同时把任务结果缓存到本地离线时直接看缓存。不要指望手机本地跑大模型能替代云 API至少在现有的硬件条件下体验差距太大了。说实话我一开始也是抱着万物本地化的想法去搞的折腾一圈之后才明白Robot Phone 的真正价值不在于把所有计算都放在手机上而在于让手机更主动、更智能地介入你的生活。把这个想清楚Hermes 的部署方案选择就变得非常简单了。
返回列表