macOS 部署 Hermes Agent 接入火山方舟 Coding Plan 全流程实录

macOS 部署 Hermes Agent 接入火山方舟 Coding Plan 全流程实录

从零开始配置 Hermes Agent,把每一步选择都讲清楚,不走冤枉路

目录

  1. 前言:为什么写这篇文章
  2. 环境准备
  3. 安装 Hermes Agent
  4. 配置向导逐项解析
  5. Provider 选择:Custom endpoint 的必要性
  6. API Base URL 与 Key:火山方舟的特殊之处
  7. API 兼容模式:为什么选 Chat Completions
  8. Model name 与 Context length
  9. Terminal backend 与 Platform
  10. Browser、Image、TTS、Search:组件选择
  11. ⚠️ PATH 坑:hermes 命令找不到
  12. 微信接入:单独配置
  13. 火山方舟 Coding Plan 关键信息汇总
  14. 写在最后
  15. 免责声明

前言:为什么写这篇文章

我在配置 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 ~/.zshrcsource ~/.bashrc

依赖说明

不管用哪种方式,以下依赖会被自动处理(无需手动安装):

表格

依赖用途
uvPython 包管理器(比 pip 快 10-100 倍)
Python 3.11+运行时
Node.jsMCP 工具链支持
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 需要在火山方舟控制台申请:

  1. 登录火山方舟 Ark Console
  2. 找到 API Key 管理
  3. 创建新的 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-code
  • deepseek-v3.2
  • kimi-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...

我的选择:全部跳过,后续单独配置微信。

原因:

  1. 不是所有人都需要接入这些平台
  2. 每接入一个平台都需要额外的授权和配置
  3. 微信是我最常用的通讯工具,后续单独配置更灵活

⚠️注意:如果你要接入平台,这里有个容易踩的坑——很多平台需要先在对应的开放平台注册应用、获取 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。

如果你确实需要图片生成能力,建议:

  1. OpenAI DALL-E:需要 OpenAI API Key,按调用计费
  2. FAL.ai:有免费额度,支持 Stable Diffusion
  3. 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(微信)。

扫码绑定

配置向导会生成一个二维码,用微信扫码授权。这一步需要:

  1. 打开微信
  2. 扫描屏幕上的二维码
  3. 确认授权

⚠️扫码无响应的坑

  • 如果二维码生成后长时间无响应,检查网络连接
  • 如果在国内,可能需要关闭代理/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-latestAuto 模式,自动选择最优模型
doubao-seed-2.0-code/pro/lite豆包代码系列
deepseek-v3.2DeepSeek 主打模型
kimi-k2.6/k2.7-code月之暗面代码模型
glm-5.1/5.2智谱 GLM 系列
minimax-m3/m2.7MiniMax 系列
ark-code-latestAuto 模式

额度机制

  • 5小时滑动窗口:最近5小时内的用量有上限
  • 周限额:每周的调用量有上限
  • 月限额:每月的调用量有上限

具体额度根据套餐等级不同,建议在控制台查看实时用量。

写在最后

整篇实录写下来,核心想传递的就两点:

  1. 每一步选择都有理由:我不只是告诉你"选这个",而是告诉你"为什么选这个"。希望这些思考过程能帮你在遇到类似选择时做出自己的判断。

  2. 坑是真实存在的:配置 Hermes Agent 不难,但细节很多。PATH 问题、API 端点写错、微信扫码失败……这些都是我实际踩过的坑。希望我的经验能帮你少走弯路。

最后,如果你也完成了配置,欢迎在评论区分享你的经验和遇到的问题。独乐乐不如众乐乐,大家一起踩坑、填坑,才能让工具越来越好。

祝配置顺利!