我用这个开源 AI Agent,一周研究了200个代码库,它彻底改变了我学编程的方式
0. 开篇引子
研究开源项目是什么体验?
打开 GitHub,star 2.3 万,文档写得像 API 说明书,代码分散在几十个目录。你一个个文件点开看,看完就忘,下次打开又是全新开始。
这不是你的问题,是工具的问题。
传统 Agent 也一样:你问它,它答,下一次对话它完全不记得你是谁、你关心什么、你之前研究到哪了。每次都在重复劳动。
最近我在用 Hermes Agent,一个由 Nous Research 开发的开源项目。它的思路不太一样——会记住你的习惯,会把复杂操作固化成技能,会在你忘记的时候帮你搜索历史对话。
用了大概一周,我重新审视了研究代码库这件事。今天把过程中的想法整理出来。
1. Hermes Agent 是什么?
Hermes Agent 是一个「有记忆的 AI 助手」。
它的核心区别在于:不只是你问我答,而是会积累、会学习、会记住。
1.1 和普通 Agent 的区别
普通 Agent 是单向的:
你问 → 它答 → 结束
Hermes 是双向的,有回执:
你问 → 它答 → 记住 → 下次记得你是谁
1.2 核心能力
|
|
|
|---|---|
| 「技能自创建」 |
|
| 「记忆持久化」 |
|
| 「跨会话搜索」 |
|
| 「多后端执行」 |
|
| 「多平台接入」 |
|
| 「200+ 模型」 |
|
1.3 技术栈
-
「语言」:Python(后端)+ TypeScript(前端 TUI) -
「数据库」:SQLite + FTS5 全文搜索 -
「终端 UI」:prompt_toolkit(CLI)+ React Ink(TUI)
2. 它和普通 Agent 有什么不同?
2.1 普通 Agent 的问题:每次都从零开始
用 ChatGPT 研究代码,每次都要重新说:
-
“我的项目在 ~/code/api” -
“我用的是 Go 1.22” -
“不要用 sudo,用户在 docker 组”
说完它也不会记住,下一次继续重复。
2.2 Hermes 的方案:记忆 + 技能
「记忆系统」:两个文件解决不同问题
MEMORY.md 是 Agent 的笔记:
项目 ~/code/api 使用 Go 1.22,sqlc 处理 DB 查询
用户用 'make test' 运行测试
预发服务器需要 SSH 端口 2222
USER.md 是用户画像:
用户偏好简洁回复
用 VS Code,Vim 键绑定
「技能系统」:把操作经验变成模板
我:教我部署 k8s
它:完成部署后问"要创建技能吗?"
下次:/deploy-k8s production 即可
2.3 多后端支持
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. 研究代码库的流程
3.1 基本流程
1. web_search("目标代码库")
→ 找到 GitHub 仓库
2. web_extract("https://github.com/...")
→ 获取 README 和关键文档
3. glob("**/*.py") 或 glob("**/*.go")
→ 列出项目结构
4. read_file("src/main.go", limit=500)
→ 分页读取核心代码
5. grep_tool("func main")
→ 定位关键函数
6. session_search("之前研究过 xxx")
→ 跨会话召回
3.2 工具能力
「文件工具」让我能安全读取代码:
-
分页读取:大文件自动分段 -
二进制防护:自动跳过 .exe/.so -
循环防护:连续读取同一区域 4 次后阻断
「网络工具」让我能快速定位目标:
-
多后端:Firecrawl / Exa / Parallel / Tavily -
LLM 摘要:网页内容自动压缩 -
分块处理:大内容并行处理
3.3 实际案例
研究一个 Rust Web 框架的过程:
我:研究这个仓库的架构
Agent:
1. 读取 README.md → 了解定位
2. glob("**/*.rs") → 列出源码结构
3. 读取 src/lib.rs → 核心模块
4. 读取 examples/ → 示例代码
5. grep_tool("#[actix") → 找到关键宏
6. 创建技能 "actix-web-研究模板"
研究完一个项目,流程会被保存。下次遇到类似项目,直接调用模板。
4. 自我进化是如何实现的?
4.1 MEMORY.md:记住你的习惯
# MEMORY.md 示例
项目 ~/code/api 使用 Go 1.22,sqlc 处理 DB 查询
用户用 'make test' 运行测试
CI 通过 GitHub Actions
预发服务器需要 SSH 端口 2222
每次对话开始,这些信息自动注入。
「容量限制」:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
满了会自动整合,删除低优先级条目。
4.2 技能创建:把经验固化
当任务复杂到一定程度(5+ 次工具调用),Agent 会问要不要创建技能。
任务:完成 k8s 部署
Agent:
"这个流程很通用,要创建 deploy-k8s 技能吗?"
创建的技能(SKILL.md):
---
name:deploy-k8s
description:Kubernetes部署标准流程
---
## 何时使用
需要将应用部署到K8s集群时
## 操作步骤
1.检查集群:kubectlcluster-info
2.构建推送:dockerbuild&&dockerpush
3.应用配置:kubectlapply-fk8s/
4.验证:kubectlgetpods
## 坑点
-镜像必须推送到集群能访问的仓库
-命名空间要提前创建
4.3 会话搜索:找回历史讨论
之前讨论过的 SSH 配置问题,现在想回顾:
/session-search SSH 隧道配置
返回:
"4月15日的会话:
讨论了 SSH 隧道的配置方法,包括密钥配置、端口转发。
最终方案:ssh -L 8080:localhost:80 user@host"
原理:所有会话存在 SQLite + FTS5 全文索引,搜索后用 LLM 摘要关键点。
5. 快速上手
5.1 安装
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
安装后:
source ~/.bashrc
hermes
5.2 配置
hermes setup
向导引导选择提供商和输入 API Key。
5.3 常用操作
hermes # 开始对话
hermes model # 切换模型
hermes gateway # 启动消息网关
「对话中命令」:
|
|
|
|---|---|
/help |
|
/tools |
|
/skills |
|
/session-search |
|
6. 总结
适合的场景
-
研究开源项目、理解新框架 -
构建 Agent 应用、学习设计思路 -
快速理解代码库、输出技术文档
局限性
-
中文资料少,官方文档英文为主 -
配置 API Key 对新手有门槛 -
某些后端需要额外资源
个人感受
用了一段时间 Hermes Agent,我更倾向于把它理解为一个「有积累的系统」,而不是单纯的问答工具。
记忆解决的是”我知道你是谁”,技能解决的是”我知道怎么做”,会话搜索解决的是”我知道我们之前聊过什么”。三个能力组合在一起,才构成了一个完整的体验。
当然,它不是银弹。配置和学习成本客观存在。对于只想简单聊天的场景,ChatGPT 更直接。但如果你是认真研究代码、构建 Agent 应用的人,它值得试试。
下一步
后续我会继续拆解 Hermes Agent 的技术细节:
-
记忆系统内部实现 -
技能系统的渐进式披露 -
FTS5 全文搜索原理 -
工具注册与分发机制
「相关资料」:
-
GitHub:https://github.com/NousResearch/hermes-agent -
官方文档:https://hermes-agent.nousresearch.com/docs/ -
研究笔记:https://gitcode.com/airuyi/hermes-agent
夜雨聆风