44岁被裁后用AI写鸿蒙App(2):Hermes Agent 环境搭建实战

13 阅读12分钟

第一篇:Hermes Agent × 鸿蒙开发环境搭建——一个 AI Agent 怎么帮你写 ArkTS

「这是上一篇的续篇,没看过的可以先去第一篇了解背景:(44岁被裁60天,我用AI给健忘的母亲建了款鸿蒙App44岁程序员被裁,母亲健忘导致家庭矛盾,血压飙到180。我用AI - 掘金)」

这套环境已经帮我写了几个月 ArkTS 代码,零成本,全免费。 我把搭建过程完整写下来,你跟着做就行。

前言:为什么我选 Hermes Agent,而不是 Claude Code

你可能注意到我在第一篇文章里提到——我被裁,直接原因就是 Claude Code 和 OpenCode CLI。

听起来很讽刺对吧?被 AI 裁了,然后又用 AI 来写代码。

但这也说明一件事:工具本身没有立场,关键看谁在用、怎么用。

市面上 AI Coding Agent 不少:Claude Code、OpenCode CLI、Cursor、GitHub Copilot……我最终选了 Hermes Agent,几个原因:

对比项Claude CodeCursorHermes Agent
费用需要 API 付费$20/月 起步完全开源免费
模型只能用 Claude自己带模型任意模型,我用的 DeepSeek 极便宜
技能记忆会记住你的开发习惯,越用越好用
平台终端IDE终端+微信+Telegram全平台
鸿蒙适配不认识 ArkTS不认识 ArkTS我给它装了 ArkTS 规则,它会了

最打动我的是最后一条。Hermes 有个「技能(Skills)」系统——你教它一次,它记住,下次自己就会了。我给它装了一套 ArkTS 语法规则,从此它写出来的代码不会再犯莫名其妙的编译错误。


一、安装 Hermes Agent(逐步骤)

先声明:我的环境是 WSL(Windows Subsystem for Linux),Ubuntu 26.04。Windows/macOS/Linux 步骤大同小异。

步骤 1:一键安装

打开终端,执行:

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

安装脚本会:

  1. 检查系统依赖(Python 3.10+、Node.js 18+、Git)
  2. 克隆 Hermes Agent 仓库到 ~/.hermes/hermes-agent/
  3. 创建 Python 虚拟环境并安装依赖包
  4. 创建默认配置 ~/.hermes/config.yaml

安装完成后,重启终端(或者 exec $SHELL -l 重新加载 shell)。

步骤 2:验证安装

hermes --version

正常应该输出版本号,例如 v0.x.x

如果提示 command not found,检查 ~/.local/bin 是否在 PATH 中:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

步骤 3:配置 DeepSeek

我用的是 DeepSeek(性价比最高),配置方式:

hermes config set model.default deepseek-v4-flash
hermes config set model.provider deepseek

然后编辑 API Key:

hermes config env-path   # 查看 .env 文件路径

打开那个文件,添加:

DEEPSEEK_API_KEY=sk-你的key

没有 Key?去 platform.deepseek.com 注册。充值 10 块钱能用很久。具体价格以官网实时为准。

步骤 4:健康检查

hermes doctor

它会逐项检查所有依赖是否就绪。我第一次遇到两个常见问题:

问题 A:Playwright Chromium not installed

cd ~/.hermes/hermes-agent
PLAYWRIGHT_HOST_PLATFORM_OVERRIDE="ubuntu24.04-x64" npx playwright install chromium

这是 Ubuntu 26.04 太新导致的,强制指定 24.04 的版本即可。

问题 B:系统依赖缺少

sudo apt install -y libnss3 libnspr4 libdbus-1-3 libatk1.0-0t64 \
  libatk-bridge2.0-0t64 libcups2t64 libdrm2 libxkbcommon0 \
  libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1

解决完所有 ⚠️ 后再跑一遍 hermes doctor,直到全部 ✓。

步骤 5:试运行

hermes chat -q "你好"

如果 Hermes 能正常回复,安装完成。


二、针对鸿蒙开发做配置

装好只是开始。真正让它成为「鸿蒙开发助手」,还需要一些关键配置。

1. 启用必要的工具集 —— 但不花一分钱

Hermes 的工具集(Toolsets)就像你的工具箱。开发鸿蒙需要这几个:

hermes tools enable terminal    # 执行命令、编译、构建
hermes tools enable file        # 读写文件、搜索代码
hermes tools enable web         # 查文档、搜索方案

terminal 是核心——Hermes 可以直接在 WSL 里跑命令行编译。

web 我特别说一下。Hermes 的 web 工具默认依赖在线搜索服务,很多需要 API Key,一搜就花钱。我的方案是自己搭 SearXNG

SearXNG 是一个开源的元搜索引擎,它聚合 Google、Bing、百度、搜狗等多个搜索引擎的结果,通过 Docker 自部署,不花一分钱,隐私还好。

搭建步骤:

# 1. 创建配置目录
mkdir -p ~/.hermes/searxng/core-config

# 2. 下载官方 docker-compose 配置(如果 GitHub raw 无法访问,去官网手动下载)
cd ~/.hermes/searxng
curl -fsSL https://raw.githubusercontent.com/searxng/searxng/master/container/docker-compose.yml -o docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/searxng/searxng/master/container/.env.example -o .env

# 3. 创建 SearXNG 配置文件 core-config/settings.yml:

~/.hermes/searxng/core-config/settings.yml 写入:

use_default_settings: true

general:
  instance_name: "searxng-hermes"
  donation_url: false
  enable_metrics: false

search:
  safe_search: 0
  autocomplete: "google"
  default_lang: "zh-CN"
  formats:
    - html
    - json

server:
  secret_key: "改成你自己的随机密钥"
  limiter: false
  image_proxy: false
  disable_public_endpoints: false

engines:
  - name: baidu
    engine: baidu
    shortcut: bd
    enabled: true
    timeout: 10.0
    categories: general
  - name: sogou
    engine: sogou
    shortcut: sg
    enabled: true
    timeout: 10.0
    categories: general
  - name: bing
    engine: bing
    shortcut: bing
    enabled: true
    timeout: 10.0
    categories: general
  - name: duckduckgo
    engine: duckduckgo
    shortcut: ddg
    enabled: true
    timeout: 10.0
    categories: general
  - name: google
    engine: google
    shortcut: gg
    enabled: true
    timeout: 10.0
    categories: general
  - name: wikipedia
    engine: wikipedia
    shortcut: wp
    enabled: true
    timeout: 10.0
    categories: general
# 4. 修复 WSL 下权限问题(重要!不然后续容器启动会报权限拒绝)
sudo chown -R $USER:$USER ~/.hermes/searxng/

# 5. 启动 SearXNG
cd ~/.hermes/searxng
docker compose up -d

# 6. 验证是否启动成功
curl "http://localhost:8080/search?q=鸿蒙开发&format=json"

看到 JSON 结果就说明搭好了。

配置 Hermes 对接 SearXNG:

编辑 ~/.hermes/config.yaml,添加:

web:
  backend: searxng
  searxng_url: http://localhost:8080

或者直接设置环境变量:

export SEARXNG_URL="http://localhost:8080"

注意事项(踩坑经验):

常见问题原因解决
JSON API 返回 403json format 或 disable_public_endpoints 配置确保 settings.yml 里两个都配了
容器启动报权限拒绝WSL 下 Docker 改了文件所有者sudo chown -R $USER:$USER ~/.hermes/searxng/
改完配置不生效容器启动后加载的是内存配置cd ~/.hermes/searxng && docker compose restart core
国内无法下载 GitHub raw网络限制手动创建 docker-compose.yml,内容去 SearXNG GitHub 复制

从此 Hermes 搜技术文档、查报错信息,走的都是你自己的搜索引擎——免费、无广告、不限次数

省钱思路:能用开源自部署解决的,绝不花 API 订阅费。

2. 安装鸿蒙相关的技能

这是我发现 Hermes 最牛逼的功能。

——我自己踩了无数 ArkTS 的坑,把这些坑写成了一套「技能」,直接装进 Hermes 里:

hermes skills install harmonyos-arkts-rules

这个技能里有什么?

它是一份 SKILL.md 文件,包含了 66+ 条 ArkTS 语法约束和 API 规范。我摘几条你感受一下:

#规则正确做法
1禁止 any / unknown显式指定具体类型
14禁止解构赋值逐字段赋值
26禁止 delete 属性声明可空类型赋值 null
33禁止函数表达式箭头函数
52禁止 # 私有标识符private 关键字
53禁止动态字段访问 obj["field"]obj.field
66禁止 throw err(任意类型)throw new Error(err.message)
67禁止 @Builder 内用 let/const直接传参或移出 Builder
69禁止 spread 运算符 ...显式传参,逐字段赋值

不止这些语法规则,技能里还包含了大量实战复盘的坑:

  • Repeat + virtualScroll 的正确用法 vs 错误用法(函数派生数组问题、totalCount 动态同步)
  • @Builder 值传递 vs @ComponentV2 @Param 引用传递(UI 不刷新的根因分析)
  • @Param 单例 + @Trace 布尔值不刷新的修复方案(private 直接持有引用)
  • Repeat.key() 必须用稳定 id,禁用 JSON.stringify(流式更新时组件重建的坑)
  • aboutToAppear 生命周期铁律(勿 async、勿 pushPathByName)
  • PersistenceV2 多 key 不一致陷阱(不同 key = 不同数据空间)
  • 工具调用结果卡片渲染(纯 @Trace 驱动,摒弃 NodeContainer + @Monitor)

安装后,每次 Hermes 写 ArkTS 代码时会自动加载这些规则。不用再说「用 ArkTS 规范写」——它自动就按规范来了。

完整 SKILL.md 在 ~/.hermes/skills/software-development/harmonyos-arkts-rules/SKILL.md,装了技能后可以直接看全部内容。

3. 配置个性化指令(SOUL.md)

打开 ~/.hermes/SOUL.md,可以告诉 Hermes 你的偏好和约束。我的 SOUL.md 里写了类似这样的内容:

你在 WSL 环境下工作。鸿蒙项目路径在 /mnt/d/workspace/my-parents-helper/。 ArkTS 代码请严格遵守 harmonyos-arkts-rules 技能中的语法规范。 用户偏好:边改边编译验证,每次小改动后立即构建确认不报错。

这样每次对话 Hermes 都知道你的环境和偏好,不用反复说。

4. 自定义 MCP:直接在终端查鸿蒙 SDK API

鸿蒙的官方 API 文档是有的,但要在官网一层一层点进去找,很麻烦。而且纯血鸿蒙迭代快(API 版本从 12 跳到 15+),网上搜到的很多信息已经过时了。

我也听说过有现成的鸿蒙 MCP 服务,但本着 "不花钱、不求人" 的原则,我换了一条路。

思路:把本地 SDK 目录下的 .d.ts 文件变成 Hermes 可直接搜索的 MCP 接口。

Hermes 支持对接 MCP(Model Context Protocol)服务器——可以理解为一种"工具扩展"机制。我配置了一个自定义 MCP 服务,提供两个工具:

  • mcp_harmonyos_sdk_search_harmonyos_api(query) —— 按关键字搜索 .d.ts 文件
  • mcp_harmonyos_sdk_get_harmonyos_api_detail(path) —— 读取指定文件的完整声明

前置条件:安装鸿蒙 Command Line Tools

Hermes 在 WSL 里运行,要访问鸿蒙 SDK 文件,需要命令行工具集:

  1. 在 DevEco Studio 里下载 SDK(或者从华为官网下载 Command Line Tools 独立包)
  2. 配置环境变量指向 SDK 路径
  3. 确认 SDK 目录下有 api/ 或类似目录存放 .d.ts 文件

MCP 配置方式:

编辑 ~/.hermes/config.yaml,在 MCP 部分添加:

mcp:
  servers:
    - name: harmonyos-sdk-api
      command: python3
      args:
        - /path/to/your/mcp-server.py
      env:
        SDK_PATH: "/path/to/harmonyos/sdk"

这个 MCP 服务会遍历 SDK 目录下所有的 .d.ts 文件,建立索引,Hermes 就可以直接搜索到任何 API 的签名。

实际效果:

你:鸿蒙里怎么做生物识别认证?
Hermes:调用 mcp_harmonyos_sdk_search_harmonyos_api 搜索…
找到 userAuth 模块的 .d.ts 文件,读取签名…
然后告诉你:userAuth.getAuthInstance() 参数是 … 返回值是 …

这样查到的 API 信息是第一手的、100% 准确的,不需要依赖任何第三方文档或网络搜索。


三、日常开发工作流

工具搭好了,怎么用?先说一个重要原则

绝不使用 Hermes Agent 创建项目或模块。

项目和模块一律手动通过 DevEco Studio 创建和配置。原因有两个:

  1. 省 token:每次让 AI 生成整个项目框架,返回几万行代码,浪费一大半。
  2. 避免依赖问题:DevEco Studio 创建项目时会自动配置 hap 包依赖、签名信息、资源索引。Hermes 生成的框架漏掉任何一环,修复起来极其麻烦。

Hermes 只负责写业务代码和逻辑,不碰项目结构。

我的日常工作流大概是这样的:

场景 1:写一个新组件

我:帮我在 feature/chat 模块下创建一个语音输入的 ArkTS 组件
Hermes:好的,根据 harmonyos-arkts-rules 规范,
我使用了 @ComponentV2 装饰器,@Param 传参…

它写完代码,会顺便帮你运行编译检查。一条命令的事。

场景 2:查鸿蒙 API

鸿蒙的 API 文档说实话——有,但不太好找。Hermes 可以帮你查。

比如我需要用「生物识别登录」功能,直接问:

我:鸿蒙里怎么做指纹认证?
Hermes:HarmonyOS 的指纹认证通过 userAuth 模块实现…

它甚至能帮你查到具体的 .d.ts 文件里的签名,不用自己去翻文档。

场景 3:调试报错

我:编译报错 H1001,Repeat 列表渲染不更新
Hermes:这个错误在 harmonyos-arkts-rules 技能里有记录。
原因是 @Builder 参数传值不触发 UI 重渲染,
改成引用传递 @ComponentV2 + @Param 即可。

它真的能记住。因为它之前帮你处理过的类似问题,已经被记录到技能里了。

场景 4:重构代码

我:我想把 ChatListView 拆成 CardBuilder 和 EntryContentGenerator
Hermes:好,我先分析当前 ChatListView 的依赖关系…
然后按模块拆分,每拆一个编译一次验证。

它会严格按照你「边改边编译」的习惯来,不会一次改一堆文件让你去解编译错误。


四、这些功能为什么重要

你可能会想:这不就是高级点的 ChatGPT 吗?

区别在于三个字——上下文

  • ChatGPT:你跟它聊一个项目,每次重新开窗口,它不记得你的代码
  • Claude Code:有文件上下文,但每次会话是独立的
  • Hermes:它记得你的项目结构、你的编码习惯、你踩过的坑、你偏好的工作方式。而且这些记忆跨会话持续存在。

这就是为什么它"越用越好用"。用了一个月之后,你不用再跟它说「用 ArkTS 组件规范写」,它自动就会。


五、费用统计(很多人在意的点)

说实话,我第一个月花了大概 100 块。

因为踩了不少坑——不懂的时候用 web 搜索搜了好多次计费服务、试过不同模型、让 AI 建过项目框架浪费了很多 token。

但如果你按照我上面写的方案走——自建 SearXNG 免搜索费、本地 MCP 免查文档费、DevEco Studio 手动建项目免框架费——至少能省一半。

项目我的实际按方案优化后
DeepSeek API~100 元/月(踩坑期)~50 元/月
文档搜索0 元(自建 SearXNG)0 元
SDK API 查询0 元(本地 MCP)0 元
Hermes Agent 本身0 元(开源)0 元
合计~100 元/月~50 元/月

注意: DeepSeek 定价极低(以官网实时价格为准),按正常开发用量一个月充几十块足够用了。

把你踩过的坑绕过去,就是我写这篇的价值。


六、遇到问题怎么办

搭建过程中不可能一帆风顺。下面是我知道的求助渠道:

渠道地址适合问
Hermes Agent GitHub Issuesgithub.com/NousResearc…Hermes 自身 bug、功能建议
Hermes Agent Discord在 GitHub 仓库 README 里找链接实时求助、社区交流
SearXNG 官方文档docs.searxng.orgDocker 部署、引擎配置
DeepSeek 开发者文档platform.deepseek.comAPI Key、计费
鸿蒙开发者社区developer.huawei.comSDK 安装、API 用法

最后一个建议: 这套环境不需要一次全部搭完。可以先装 Hermes + 配 DeepSeek,能用起来之后再慢慢加 SearXNG、MCP、技能。一点点来,别想一次性搞定所有。


「上一篇讲了为什么做这个App,这篇讲怎么搭环境。下一篇讲后端。」

下篇预告

下一篇我写:用 AI Agent 做全栈鸿蒙应用——AGC 认证 + CloudDB + 云函数一条龙。

这是 my-parents-helper 最核心的后端链路,从登录到数据存储到云函数调用,Hermes 实际帮我完成的全过程。

关注我 seal_._jing,一起见证一个 44 岁独立开发者的鸿蒙 App 诞生之路。


发布时间:2026年6月

作者:seal_jing,一个被裁后自己写 App 的中年程序员