系列:Hermes Agent 源码探秘 作者:元思未来 字数:约2800字
前面八篇都在拆源码、讲原理。这篇我们放松一下,聊点实际的。
作为一个 10 年全栈老程序员,我是怎么在日常工作副业中用 Hermes 的?它到底帮我省了多少事?
一、背景:我是什么用户?
先交代一下背景,方便你对号入座:
| 维度 | 我的情况 |
|---|---|
| 技术栈 | 全栈(前端+后端+运维+AI) |
| 日常 | 写代码、做副业、写自媒体 |
| 性格 | 懒,不喜欢重复劳动 |
| 痛点 | 查资料费时间、写重复代码烦、整理素材累 |
| 对 AI 的态度 | 工具,不是替代品 |
二、场景 1:写文章(周更的"内容助理")
我现在在写的这个"Hermes 源码探秘"系列,每篇文章都离不开 Hermes 的帮助。
我的写作流程
markdown
【传统做法】
1. 想选题 → 翻资料(30分钟)
2. 写大纲 → 手写(20分钟)
3. 查代码 → 打开项目逐文件阅读(1小时+)
4. 写正文 → 码字(2小时)
5. 改稿 → 通读修改(30分钟)
总计:4小时+/篇
【用 Hermes 的做法】
1. 想选题 → 跟 Hermes 讨论(10分钟)
2. 写大纲 → Hermes 帮我搭框架(5分钟)
3. 查代码 → 让 Hermes 读取关键代码并解释(20分钟)
4. 写正文 → 我口述思路,Hermes 扩写成文(30分钟)
5. 改稿 → 通读 + 让 Hermes 检查逻辑漏洞(15分钟)
总计:1.5小时/篇
效率提升:约 60% 的时间节省。
具体怎么操作
互动式写作:
markdown
我:我想写一篇关于 Hermes 核心循环的文章,面向有编程基础的读者。
我需要解释 run_conversation() 的 while 循环是怎么工作的。
帮我搭一个大纲。
Hermes:好的,以下是这篇文章的建议大纲:
1. 核心循环的定位(在项目中的位置)
2. 循环骨架(while 条件、控制变量)
3. LLM 调用(tools 参数传递)
4. 响应解析(文字 vs tool_calls)
5. 工具执行
6. 边界机制(重试、压缩、中断)
...
我:帮我读一下 agent/conversation_loop.py 中的错误处理部分,
我想要具体的代码片段放在第6节。
Hermes:(读取文件,返回关键代码片段和解释)
这个交互过程本身就是一种"结对编程"------我提供方向和技术判断,Hermes 提供执行效率和知识广度。
文章写完后的检查
bash
hermes chat -q "帮我检查一下 articles/hermes-agent-deep-dive/03-core-loop.md,
有没有技术表述不准确的地方?有没有遗漏的重要机制?"
三、场景 2:辅助写代码(Python 小工具)
我在开发一个自用的炒股记账小工具(Python + CustomTkinter),Hermes 帮我做了大量工作。
例子:搭建项目骨架
css
我:帮我创建一个 Python 炒股记账工具的项目结构。
使用 CustomTkinter 做 GUI,SQLite 存储数据。
帮我生成 main.py 和基本的界面框架。
Hermes:(思考中...)
→ 创建项目目录
→ 生成 main.py(包含主窗口代码)
→ 生成 database.py(SQLite 初始化脚本)
→ 生成 requirements.txt
→ 提供 CustomTkinter 的基本使用示例
整个过程不到 30 秒,我拿到了一个可以直接跑起来的项目框架。
例子:调试问题
go
我:我的 SQLite 查询报错了,报错信息是:
"sqlite3.OperationalError: no such column: buy_price"
数据库初始化代码在 data/database.py,帮我看看哪里有问题。
Hermes:(读取文件)
问题在第15行:你定义表结构时用的是 `price` 列名,
但在第28行的 INSERT 语句里写的是 `buy_price`。
列名不一致导致的。建议统一为 `price` 或 `buy_price`。
不用自己 grep 翻代码,一句话定位问题。
例子:添加功能
scss
我:帮我给持仓看板加一个"盈亏百分比"的计算列。
数据在 portfolio_tab.py 中展示,数据来自 database.py 的 get_portfolio()。
Hermes:(读取两个文件后)
需要改两个地方:
1. data/database.py 的 get_portfolio() 加一个计算字段
2. gui/portfolio_tab.py 的表格加一列
改动如下:
...
四、场景 3:定时任务(每天自动整理信息)
我设了一个定时任务,每天早上帮我整理行业信息:
bash
hermes chat -q "设置一个定时任务,每天早上8点,
搜索AI Agent和开源AI工具的最新动态,
整理成摘要发到我的微信上"
背后发生了什么:
markdown
1. Hermes 创建了一个 cronjob
2. 每天早上8点,Hermes 自动运行
3. 搜索指定关键词的最新资讯
4. 用 LLM 整理成结构化摘要
5. 通过 WeCom 网关推送到我的微信
一次设置,长期自动运行。 这是我作为"懒人"最喜欢的用法。
五、场景 4:把经验变成"技能"
做这个系列的过程中,我积累了不少关于"拆解开源项目"的经验。我把它写成了一个技能:
markdown
---
name: open-source-deep-dive
description: 拆解开源项目的流程:定位、阅读、分析、撰写
---
## 拆解开源项目流程
### 1. 快速概览
- 看 README 了解项目定位
- 看项目结构了解模块划分
- 看 pyproject.toml/setup.py 了解依赖
### 2. 定位核心模块
- 找入口文件(main.py, cli.py, run_agent.py等)
- 找注册机制(registry、plugin等)
- 寻找核心循环
### 3. 深度阅读
- 从入口到核心逻辑的调用链
- 记录关键函数和类
### 4. 分析和输出
- 核心逻辑用流程图表达
- 代码引用选取关键片段
- 给每篇设置明确的技术深度目标
以后我拆其他开源项目时,加载这个技能,Hermes 就会按照这个流程帮我分析。
这就是"技能"的价值------把你的经验结构化,让 AI 也能按你的方式工作。
六、场景 5:知识管理助手
我经常需要:
- 查某个技术概念
- 对比不同方案的优劣
- 整理零散的笔记
Hermes 在这方面也帮了大忙:
javascript
我:解释一下 MCP (Model Context Protocol) 是什么,
跟 Function Calling 有什么区别?
要有例子,通俗易懂。
Hermes:MCP 是 Anthropic 提出的一个开放协议...
对比:
- Function Calling:每个框架自己定义格式
- MCP:统一标准,一次接入到处用
举个例子:...
它不仅仅告诉"是什么",还会根据我的技术背景给出有针对性的解释。
七、还有哪些场景我没用上?
Hermes 的能力远不止我用的这些。我没用上但值得提的:
| 功能 | 我没用的原因 | 适合谁用 |
|---|---|---|
| 多平台接入(Telegram/Discord等) | 我主要用WeCom | 跨平台团队 |
| MCP 服务器 | 暂时没这个需求 | 需要自定义工具链的开发者 |
| 子代理并行 | 我的任务复杂度还没到 | 大型项目/研究 |
| 技能自动化发布 | 技能还不多 | 有大量技能需要管理时 |
| Worktree 模式 | 单人开发 | 多人协作/多分支并行 |
八、使用心得总结
最让我惊讶的
- 效率提升是真实的,不是噱头。写文章省60%时间,写代码省40%
- 调试问题尤其好用------不用自己翻代码上下文
- "看不懂代码?问它"------读开源项目时特别有用
最需要注意的
- AI 会犯错------关键操作要验证,不能盲信
- 提示词要具体------越具体,输出质量越高
- 不能代替判断力------架构决策、代码质量判断,还是得靠自己
一句话总结
Hermes 是一个'提效工具',不是一个'替代品'。它让我把精力集中在真正需要判断力的事情上,把重复劳动交给它。
九、下一篇预告
这是系列的最后一篇了。第10篇我们来一个总结和大复盘。
从第1篇到第9篇,我们走完了"从入门到源码拆解到实战应用"的完整旅程。最后一篇我会总结:
- 我从 Hermes 源码中学到的 5 个架构设计智慧
- 哪些设计模式可以复用到自己的项目中
- 一个开发者的学习建议:怎么通过读源码提升自己
- 什么时候用现成的,什么时候自己写
用的模型: DeepSeek V4 Flash(速度够快,性价比高)
运行方式: 企业微信(WeCom)远程使用 + 终端本地使用
使用时长: 持续使用中
元思未来 · 行稳致远,进而有为