在华为 Mate 20 Pro 上安装 Hermes Agent 完整总结
在华为 Mate 20 Pro 上安装 Hermes Agent 完整总结
一、设备环境
- 手机型号:华为 Mate 20 Pro
- 处理器:麒麟 980(ARM64 架构)
- 运行环境:Termux(从 F-Droid 或 github 安装,不能用 Google Play 版本太旧)
- Python 版本:3.11(使用
venv311,系统自带的 Python 3.13 兼容性差)
二、安装步骤
1. 安装 Termux 基础依赖
pkg update && pkg install python git nodejs openssh
2. 准备 Python 虚拟环境
Hermes 仓库通常位于 /data/data/com.termux/files/home/hermes-agent,里面有两个虚拟环境:
venv/— Python 3.13(不推荐)venv311/— Python 3.11(推荐,预装部分依赖)
使用 venv311 作为主环境。
3. 安装纯 Python 依赖
pip install python-dotenv fire httpx rich tenacity prompt_toolkit \
pyyaml requests jinja2 debugpy fal-client edge-tts croniter \
aiohttp psutil ipython parallel-web
4. 安装核心 SDK(必须指定版本)
pip install --no-deps openai==1.35.0
pip install --no-deps anthropic==0.39.0
5. 安装 Hermes Agent 本体
cd /data/data/com.termux/files/home/hermes-agent
pip install --no-deps -e .
6. 锁定依赖版本(防止意外升级)
cat > ~/.config/pip/constraints.txt << 'EOF'
openai==1.35.0
anthropic==0.39.0
pydantic==1.10.26
httpx==0.27.2
EOF
cat >> ~/.config/pip/pip.conf << 'EOF'
[install]
constraint = ~/.config/pip/constraints.txt
EOF
7. 创建 jiter 兼容桩(关键步骤)
由于 jiter 是 Rust 编写的,无法在 Termux 的 armv8l 架构上编译,必须创建纯 Python 兼容层:
cat > venv311/lib/python3.11/site-packages/jiter.py << 'STUB'
"""jiter compatibility stub for Termux/Android."""
import json
from typing import Any
def from_json(data, **kwargs):
if isinstance(data, (bytes, bytearray)):
data = data.decode("utf-8")
return json.loads(data, **kwargs)
def to_json(obj, **kwargs):
return json.dumps(obj, **kwargs)
class JiterError(Exception):
pass
STUB
8. 验证安装
venv311/bin/python3 hermes --help
venv311/bin/python3 hermes doctor
三、遇到的核心问题与解决方案
问题 1:maturin 编译失败 —— Unsupported Android architecture: armv8l
现象:
安装 jiter、pydantic-core、cryptography 等含 Rust 代码的包时全部失败。
原因:
Termux 将 uname -m 报告为 armv8l(32 位兼容模式),但 maturin 的 Rust 代码不认识这个架构字符串。
尝试过但失败的方案:
- 用
sitecustomize.py修补platform.machine()—— 无效,maturin 用的是原生系统调用 - 设置
CARGO_BUILD_TARGET=armv7-linux-androideabi—— 无效,maturin 在交叉编译前就检查了 - 伪造
uname命令 —— 无效,maturin 是编译好的 Rust 二进制文件,不走 PATH
最终方案:
- 所有依赖用
--no-deps安装,跳过 Rust 编译步骤 - 核心 SDK 锁定到不需要 jiter 的版本:
openai==1.35.0(>=1.36 需要 jiter,会直接崩溃)anthropic==0.39.0(0.95+ 需要 jiter)pydantic==1.10.26(v2 需要 pydantic-core,也是 Rust)httpx==0.27.2(0.28+ 移除了proxies参数,openai 1.35.0 内部需要这个参数)
问题 2:Agent 运行后卡住不动
现象:
启动 Hermes Agent 后,AI 没有响应,长时间无输出。
排查方法:
查看日志文件:
cat /data/data/com.termux/files/home/.hermes/logs/agent.log
发现的根因:
日志中反复出现 ModuleNotFoundError: No module named 'jiter' 错误,导致 API 调用不断重试失败,请求队列堆积,最终整个 Agent 卡死。
解决方案:
- 确认
jiter兼容桩是否正确创建在venv311/lib/python3.11/site-packages/jiter.py - 确认
openai==1.35.0(不能用更高版本) - 删除残留的 gateway PID 文件,重启 Agent:
rm ~/.hermes/gateway.pid hermes gateway start
问题 3:连接微信时卡住
现象:
配置微信(WeCom/企业微信或微信机器人通道)后,消息收发没有反应,Agent 卡住。
排查过程:
- 查看
messaging工具的日志输出 - 发现 Termux 上缺少微信 SDK 所需的系统依赖
- 某些第三方微信库(如 itchat、WeChatPYAPI)在 ARM Android 上无法正常工作
解决方案:
方案 A(推荐):改用 Telegram/Discord 等替代平台
Termux 对这些平台的支持更好,安装简单:
pip install --no-deps python-telegram-bot discord.py
在 config.yaml 中配置 Telegram Bot Token 即可使用,稳定性远超微信方案。
方案 B:企业微信(WeCom)Webhook 模式
如果必须用微信体系,使用企业微信的 Webhook 方式:
- 不需要微信 SDK,纯 HTTP 调用
- 在 Hermes 中通过
webhook工具与企业微信对接 - 避免了 Python 微信库在 Termux 上的兼容性问题
方案 C:在手机上用系统键盘的语音输入
Termux 上语音识别方案(faster-whisper、vosk、pocketsphinx)都无法在 armv8l 上编译。最实用的替代方案是用手机自带的键盘语音输入,把语音转文字后发送给 Agent。
问题 4:pydantic v2 需要 pydantic-core(Rust 编译失败)
现象:
安装 pydantic >=2.0 时编译失败。
解决方案:
锁定到 pydantic==1.10.26(v1 版本),Hermes 完全兼容。
问题 5:httpx 版本不兼容
现象:
安装 httpx 0.28+ 后,openai SDK 报错:
Client.__init__() got an unexpected keyword argument 'proxies'
解决方案:
锁定到 httpx==0.27.2,这个版本保留了 proxies 参数。
四、最终可用的依赖版本表
| 包名 | 版本 | 说明 |
|---|---|---|
| openai | 1.35.0 | >=1.36 需要 jiter |
| anthropic | 0.39.0 | 0.95+ 需要 jiter |
| pydantic | 1.10.26 | v2 需要 pydantic-core |
| httpx | 0.27.2 | 0.28+ 缺少 proxies 参数 |
| python-telegram-bot | latest | 通过 --no-deps 安装 |
| discord.py | latest | 通过 --no-deps 安装 |
五、让 Hermes 全局可用
创建全局命令包装器:
cat > /data/data/com.termux/files/usr/bin/hermes << 'WRAPPER'
#!/data/data/com.termux/files/home/hermes-agent/venv311/bin/python3
import sys
sys.path.insert(0, '/data/data/com.termux/files/home/hermes-agent')
from hermes_cli.main import main
main()
WRAPPER
chmod +x /data/data/com.termux/files/usr/bin/hermes
之后在任何目录下都可以直接运行 hermes --help。
六、后续建议
- 优先使用 Telegram/Discord 而非微信 —— Termux 上生态兼容性更好
- 永远用
--no-deps安装带 Rust 扩展的包 —— 避开 maturin 编译 - 用
hermes doctor定期检查环境 —— 及时发现缺失的工具 - 日志是诊断的第一手段 —— 遇到卡住先看
~/.hermes/logs/agent.log - 不要用 Python 3.13 —— Termux 上 3.11 更稳定
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)