乐于分享
好东西不私藏

我用这个开源 AI Agent,一周研究了200个代码库,它彻底改变了我学编程的方式

我用这个开源 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 核心能力

能力
说明
「技能自创建」
完成复杂任务后,自动创建可复用技能
「记忆持久化」
MEMORY.md 跨会话记住项目习惯
「跨会话搜索」
FTS5 全文搜索,找回历史讨论
「多后端执行」
本地 / Docker / SSH / Modal / Daytona
「多平台接入」
Telegram / Discord / Slack / WhatsApp
「200+ 模型」
OpenRouter / OpenAI / Anthropic 随意切换

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 多后端支持

后端
说明
适用场景
local
本地执行
开发调试
docker
容器隔离
安全第一
ssh
远程服务器
已有服务器
modal
Serverless
低成本,按需唤醒
daytona
托管沙箱
自动化场景

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

每次对话开始,这些信息自动注入。

「容量限制」

文件
限制
约等于
MEMORY.md
2,200 字符
~800 tokens
USER.md
1,375 字符
~500 tokens

满了会自动整合,删除低优先级条目。

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