从零开始配置 Hermes Agent,把每一步选择都讲清楚,不走冤枉路
目录
- 前言:为什么写这篇文章
- 环境准备
- 安装 Hermes Agent
- 配置向导逐项解析
- Provider 选择:Custom endpoint 的必要性
- API Base URL 与 Key:火山方舟的特殊之处
- API 兼容模式:为什么选 Chat Completions
- Model name 与 Context length
- Terminal backend 与 Platform
- Browser、Image、TTS、Search:组件选择
- ⚠️ PATH 坑:hermes 命令找不到
- 微信接入:单独配置
- 火山方舟 Coding Plan 关键信息汇总
- 写在最后
- 免责声明
前言:为什么写这篇文章
我在配置 Hermes Agent 接入火山方舟 Coding Plan 的时候,翻遍了官方文档和社区帖子,发现一个问题:官方的文档太"官方"了——它告诉你有哪些选项,但不告诉你为什么选这个;它告诉你命令怎么敲,但不告诉你遇到问题怎么办。
所以我决定写一篇"实录",把我实际操作的每一步都记录下来,包括:
- 我看到了什么选项
- 我为什么选了这个
- 哪个选项让我犹豫了
- 哪个坑我踩了、怎么爬出来的
如果你也在 macOS 上配置 Hermes Agent,想接入火山方舟 Coding Plan,这篇文章应该能帮你省下至少半天时间。
环境准备
我的环境:
- 操作系统:macOS
- 包管理器:npm(用于安装 Hermes)
- 目标:接入火山方舟 Coding Plan 作为 LLM Provider
首先,确保你已经安装了 Node.js 和 npm:
bash
node --version
npm --version
如果没有安装,推荐使用 nvm 管理 Node.js 版本,避免全局污染。
安装 Hermes Agent
Hermes Agent 提供了多种安装方式,我实际用的是方式二(Git 克隆 + 安装脚本),这也是最灵活的方式——可以随时git pull更新,也能直接翻源码排查问题。
方式一:一键安装脚本(最快)
bash
# 适用于 Linux / macOS / WSL2 / Termux
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
一条命令搞定,脚本会自动处理依赖(uv、Python 3.11+、Node.js、ripgrep、ffmpeg)。
适合想快速体验、不想折腾的用户。
方式二:Git 克隆 + 安装脚本(推荐)
这是我实际使用的方式,优势是代码在本地,后续更新和排错都方便。
bash
# 克隆仓库
git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
# 运行安装脚本
./setup-hermes.sh
安装脚本会自动:
- 检查并安装
uv(Python 包管理器) - 创建 Python 虚拟环境
- 安装所有 Python 依赖
- 安装 Node.js 运行时和 npm 依赖
- 安装 ripgrep、ffmpeg 等辅助工具
⚠️踩坑提醒:
- 如果安装过程中报
EACCES: permission denied,不要直接sudo——先检查uv和 Python 虚拟环境的权限,确保用户目录下的.hermes/归当前用户所有 - 国内网络环境下,脚本中的 GitHub 资源下载可能超时,建议开启代理或使用镜像
- 安装完成后,脚本可能会提示你重新加载 shell 配置:
source ~/.zshrc或source ~/.bashrc
依赖说明
不管用哪种方式,以下依赖会被自动处理(无需手动安装):
表格
| 依赖 | 用途 |
|---|---|
uv | Python 包管理器(比 pip 快 10-100 倍) |
| Python 3.11+ | 运行时 |
| Node.js | MCP 工具链支持 |
| ripgrep | 高性能代码搜索 |
| ffmpeg | 语音/视频处理 |
验证安装
bash
# 检查版本
hermes --version
# 或通过 npx 运行(如果 PATH 没配好)
npx hermes-ai --version
如果看到版本号输出,说明安装成功。接下来就可以运行hermes init进入配置向导了。
配置向导逐项解析
安装完成后,运行初始化向导:
(也可以在安装时直接进入安装向导)
bash
hermes init
这一步会启动一个交互式配置流程。以下是我实际看到的每一项,以及我的选择和思考。
Provider 选择:Custom endpoint 的必要性
向导启动后,首先展示的是一个长长的 Provider 列表:
Hugging Face
Google AI Studio
DeepSeek
Z.AI / GLM
Kimi / Moonshot
StepFun
MiniMax
Ollama Cloud
Arcee AI
GMI Cloud
Kilo Code
OpenCode
AWS Bedrock
Azure Foundry
Qwen OAuth
Alibaba Cloud Coding Plan
...
Custom endpoint ← 选了这个
火山方舟 Coding Plan不在内置列表中。
所以我直接选择了最底部的Custom endpoint。这是一个被严重低估的选项——它适用于任何提供 OpenAI 兼容 API 的服务商,火山方舟恰好满足这个条件。
⚠️为什么不选 Alibaba Cloud Coding Plan?
虽然阿里云和火山引擎都是国内云厂商,但它们的 API 是不兼容的。Alibaba Cloud Coding Plan 使用的是阿里云的接口,而火山方舟走的是字节跳动的接口体系。选错了会导致后续验证失败。
API Base URL 与 Key:火山方舟的特殊之处
选择 Custom endpoint 后,向导要求填写两项:
API Base URL
https://ark.cn-beijing.volces.com/api/coding/v3
这是火山方舟 Coding Plan 的 OpenAI 兼容端点。关键点:
- ⚠️禁止使用
https://ark.cn-beijing.volces.com/api/v3(这是按量计费端点,不扣套餐额度,余额会直接扣光) - 必须用
/coding/v3路径,这是 Coding Plan 专属入口
API Key
火山方舟 Coding Plan 的 Key 格式是sk-sp-xxxxx,注意前缀是sk-sp-,不是普通的sk-。
这个 Key 需要在火山方舟控制台申请:
- 登录火山方舟 Ark Console
- 找到 API Key 管理
- 创建新的 Ke,类型选择 "Coding Plan 专属 Key"
填写后,向导显示了一个 Warning:
Warning: could not verify this endpoint via https://ark.cn-beijing.volces.com/api/coding/v3/models
提示说如果服务器需要/v1路径,可以尝试https://ark.cn-beijing.volces.com/api/coding/v3/v1。
⚠️这个 Warning 可以忽略!
我实际测试过,火山方舟的 Coding Plan 接口不需要额外的/v1路径,原始 URL 就能正常工作。这个 Warning 是向导对所有自定义端点的通用校验,不是火山方舟特有的问题。
API 兼容模式:为什么选 Chat Completions
接下来是 API 兼容模式的选择,向导给出了 4 个选项:
1. Auto-detect(默认)
2. Chat Completions(/chat/completions,标准 OpenAI 兼容)
3. Responses / Codex(/responses,Codex 兼容)
4. Anthropic Messages(/v1/messages,Anthropic 兼容)
我的选择:Chat Completions(选项 2)
选择理由:
Auto-detect 不可靠——向导会尝试调用端点的模型列表 API 来自动检测,但火山方舟的 Coding Plan 端点对这个探测请求的响应格式与向导预期的不一致,导致 Auto-detect 验证失败。
Chat Completions 是标准 OpenAI 兼容模式——火山方舟的 Coding Plan 提供的正是/v1/chat/completions接口,这是业界最广泛使用的接口形式,兼容性最好。
为什么不选其他选项?
- Responses / Codex:这个是 Codex 特有的接口格式,Codex 是 GitHub Copilot 的底层模型,火山方舟没有这个接口
- Anthropic Messages:这是 Claude 系列模型的接口,火山方舟 Coding Plan 不支持
Model name 与 Context length
Model name
填入:
ark-code-latest
这是火山方舟 Coding Plan 推荐的模型名称,表示使用最新版本的代码模型。"latest" 后缀会自动选择当前可用的最新版本,适合不想频繁手动更新的场景。
如果你想使用特定版本,可以替换为:
doubao-seed-2.0-codedeepseek-v3.2kimi-k2.6-code
Context length
向导给了一个默认值,但我的选择是手动填写256000,而不是使用 auto-detect。
为什么?
⚠️Auto-detect 的坑——它会尝试通过 API 调用来探测模型支持的上下文长度。火山方舟 Coding Plan 的响应可能与向导的预期格式不一致,导致探测失败或得到一个很小的值(比如 4096),严重影响 Agent 的能力。
手动填256000是火山方舟 Coding Plan 支持的最大上下文长度(单位是 tokens),这个值够大,能够支持长代码分析、多文件处理等复杂任务。
Display name
建议填入:
Volcengine Coding Plan
默认填充的是Ark.cn-beijing.volces.com,说实话我自己都记不住这个名字。填一个易识别的名字,后续在日志和状态输出中会方便很多。
Terminal backend 与 Platform
Terminal backend
向导列出了 5 个选项:
Local
Docker
Modal
SSH
Daytona
保持默认的Local就好。
Local的意思是让 Hermes 直接在本地机器上执行命令,不需要额外的容器或远程服务器。对于个人开发者来说,这是最简单、最快的方案。
- Docker:如果你想在隔离环境中运行,或者需要在多个项目间保持一致的依赖环境
- Modal:云端无服务器执行,适合 CI/CD 场景
- SSH:连接到远程服务器执行,适合服务器在别处的场景
- Daytona:一个 DevOps 平台,类似 Docker 但更企业化
Platform 配置
这一项比较长,列出了几乎所有主流通讯平台:
Mattermost、Signal、Weixin/WeChat、BlueBubbles、QQ Bot、元宝、钉钉、Discord、Email、飞书/ Lark、Google Chat、Home Assistant、IRC、LINE、Matrix、ntfy、iMessage via Photon、Raft、SimpleX Chat...
我的选择:全部跳过,后续单独配置微信。
原因:
- 不是所有人都需要接入这些平台
- 每接入一个平台都需要额外的授权和配置
- 微信是我最常用的通讯工具,后续单独配置更灵活
⚠️注意:如果你要接入平台,这里有个容易踩的坑——很多平台需要先在对应的开放平台注册应用、获取 App ID 和 Secret。这一步如果没做,后面的配置是无法完成的。建议先完成一个平台的全套注册流程,再回到向导中配置。
Browser、Image、TTS、Search:组件选择
Browser provider
选项如下:
Local Browser(免费推荐)
Nous Subscription
Camoffox
Browser Use
Browserbase
Firecrawl
我的选择:Local Browser
Local Browser 使用的是无头 Chromium(headless Chrome),完全免费,足够日常使用。
为什么不选其他?
- Nous Subscription / Browserbase:需要付费订阅
- Browser Use / Camofox:功能更强大,但需要额外的云服务支持
- Firecrawl:专业的网页抓取工具,不适合作为日常浏览 Provider
对于个人开发者的日常使用,Local Browser 完全够用。如果你是企业用户,或者需要处理大量网页抓取任务,可以考虑付费方案。
Image generation provider
选项:
Nous Subscription
FAL.ai
Krea
OpenAI
OpenAI Codex auth
xAI Grok Imagine
我的选择:Skip(跳过)
⚠️这里有个重要的坑——我最初想用 Coding Plan 来生成图片,但被官方文档明确告知:Coding Plan 只提供代码类 LLM 接口,不支持图片生成。
火山方舟 Coding Plan 的定位是"代码助手",它提供的所有模型都是纯文本的代码补全、代码分析类模型,不包括图像生成能力。如果你想生成图片,需要单独配置一个图片生成 Provider,比如 OpenAI DALL-E 或 Stable Diffusion。
如果你确实需要图片生成能力,建议:
- OpenAI DALL-E:需要 OpenAI API Key,按调用计费
- FAL.ai:有免费额度,支持 Stable Diffusion
- xAI Grok Imagine:如果是 xAI 订阅用户
TTS provider
选项:
Microsoft Edge TTS(免费推荐)
Nous Subscription
OpenAI TTS
xAI TTS
ElevenLabs
Mistral Voxtral
Google Gemini TTS
KittenTTS
Piper
我的选择:Microsoft Edge TTS
这是向导推荐的选项,也是我认为性价比最高的:
- 免费:不需要任何 API Key
- 质量不错:微软的 TTS 引擎经过了多年打磨,中英文发音都比较自然
- 延迟低:Edge TTS 走的是微软全球 CDN,响应速度快
ElevenLabs 和 OpenAI TTS 的质量更好,但需要付费。对于日常测试和开发,Edge TTS 足够用了。
Search provider
选项:
Nous Subscription
Firecrawl Self-Hosted
Brave Search Free
DuckDuckGo ddgs
Exa
Firecrawl
Parallel
SearXNG
Tavily
xAI Web Search
我的选择:DuckDuckGo
理由很简单:
- 免费:不需要 API Key
- 无需注册:配置完就能用
- 覆盖全面:DuckDuckGo 的搜索结果质量和 Google 差距不大
- 不追踪:隐私保护更好
如果 DuckDuckGo 搜索结果不理想,可以考虑:
- Tavily:专门为 AI 搜索优化的引擎,结果相关性高,但免费额度有限
- Exa:面向 AI 的搜索引擎,支持精确的内容类型过滤
⚠️ PATH 坑:hermes 命令找不到
配置向导能顺利完成,一切都显示 "🚀 Ready to go!",但当我满心欢喜地输入:
hermes
得到的却是:
zsh: command not found: hermes
重新开一下terminal 终端,再运行命令。如果不行再尝试一下方法。
这是 macOS 用户最常遇到的 PATH 问题。
原因分析
npm 全局安装的包通常放在/usr/local/lib/node_modules/或用户目录下的~/.npm-global/。如果这个路径没有加入 shell 的 PATH 环境变量,系统就找不到hermes命令。
解决方案
方案一:检查并添加 PATH(推荐)
首先,确认 npm 全局 bin 目录的路径:
npm bin -g
通常是/usr/local/bin或~/.npm-global/bin。
然后把这个路径加入 PATH 编辑~/.zshrc:
export PATH="$(npm bin -g):$PATH"
重新加载配置:
source ~/.zshrc
方案二:使用 npx 运行
如果你不想修改 PATH,可以用 npx 来运行:
npx hermes-ai init
npx hermes-ai gateway
方案三:使用绝对路径
找到 hermes 的实际位置,用绝对路径调用:
/usr/local/bin/hermes
# 或
~/.npm-global/bin/hermes
⚠️验证:修改 PATH 后,重新开一个终端窗口(或执行source ~/.zshrc),然后输入hermes --version确认能正常显示版本号。
微信接入:单独配置
微信接入是 Hermes Agent 最实用的功能之一,但配置相对复杂,需要单独处理。
最简单的方式其实是,终端运行Hermes,跟他说要接入微信,然后等待他返回二维码连接,浏览器打开后,微信扫码。
发条信息给-->
微信clawbot
ta会给一条命令 hermes pairing approve wexin XXXXXXXX(改为自己的)
复制命令到终端运行,然后配对成功。
接入方式
微信接入走的是腾讯官方 iLink Bot(微信 Clawbot)通道,这是目前最稳定的微信接入方案。
前置依赖
首先安装必要的 Python 依赖:
pip install aiohttp cryptography qrcode
⚠️依赖缺失的坑:如果漏装了某个依赖,后续启动网关时会报错。常见错误信息包括ModuleNotFoundError: No module named 'aiohttp'等。遇到这类错误,逐个安装缺失的包即可。
启动网关配置
bash
hermes gateway setup
在交互式菜单中选择Weixin(微信)。
扫码绑定
配置向导会生成一个二维码,用微信扫码授权。这一步需要:
- 打开微信
- 扫描屏幕上的二维码
- 确认授权
⚠️扫码无响应的坑:
- 如果二维码生成后长时间无响应,检查网络连接
- 如果在国内,可能需要关闭代理/VPN,腾讯服务器的某些域名在国内访问更稳定
- 微信账号需要实名认证,未实名的账号无法授权第三方应用
环境变量配置
配置完成后,需要在~/.hermes/.env文件中设置消息策略:
# 单聊开关
HERMES_DM_ENABLED=true
# 群聊开关
HERMES_GROUP_ENABLED=false
# 主人白名单(只响应特定用户)
HERMES_ALLOWED_USERS=wxid_xxxxx,wxid_yyyyy
⚠️群聊不稳定的坑:微信官方对群聊机器人有限制,群聊场景下消息接收可能不稳定。如果对稳定性要求高,建议使用单聊模式。
启动网关
hermes gateway
看到类似Gateway is running on http://localhost:8080的输出,说明网关启动成功。
火山方舟 Coding Plan 关键信息汇总
API 端点
Base URL: https://ark.cn-beijing.volces.com/api/coding/v3
支持的模型
表格
| 模型 | 特点 |
|---|---|
ark-code-latest | Auto 模式,自动选择最优模型 |
doubao-seed-2.0-code/pro/lite | 豆包代码系列 |
deepseek-v3.2 | DeepSeek 主打模型 |
kimi-k2.6/k2.7-code | 月之暗面代码模型 |
glm-5.1/5.2 | 智谱 GLM 系列 |
minimax-m3/m2.7 | MiniMax 系列 |
ark-code-latest | Auto 模式 |
额度机制
- 5小时滑动窗口:最近5小时内的用量有上限
- 周限额:每周的调用量有上限
- 月限额:每月的调用量有上限
具体额度根据套餐等级不同,建议在控制台查看实时用量。
写在最后
整篇实录写下来,核心想传递的就两点:
每一步选择都有理由:我不只是告诉你"选这个",而是告诉你"为什么选这个"。希望这些思考过程能帮你在遇到类似选择时做出自己的判断。
坑是真实存在的:配置 Hermes Agent 不难,但细节很多。PATH 问题、API 端点写错、微信扫码失败……这些都是我实际踩过的坑。希望我的经验能帮你少走弯路。
最后,如果你也完成了配置,欢迎在评论区分享你的经验和遇到的问题。独乐乐不如众乐乐,大家一起踩坑、填坑,才能让工具越来越好。
祝配置顺利!