Agent 架构研究:Claude Code & Hermes Agent
AGENT ARCHITECTURE
状态:🟡 规划 · 最后核对 2026-06-30
2026-06-30 · 研究目的:为 Rhodes Island 的记忆与 agent 架构提供参考
Claude Code(Anthropic,2026-03 源码泄露)
记忆系统
极简文件系统方案,src/memdir/ 下 ~1700 行 TypeScript:
~/.claude/projects/<repo>/memory/
MEMORY.md ← 索引文件,≤200 行,≤25KB,每行一个文件指针
{slug}.md ← 独立记忆,YAML frontmatter + 正文
四种记忆类型:user(用户偏好)、feedback(纠正/确认的路径)、project(架构决策、截止日期)、reference(外部资源指针)。
召回机制:无向量、无 embedding、无语义搜索。扫描 MEMORY.md → 生成文件清单 → 发给 Claude Sonnet(小模型)做 side-query → 选 5 个 → 加载全文。
缺陷:200 行硬上限(静默截断)、纯关键词匹配(无语义)、只记不查(write-optimized)。
值得借鉴:
- 索引分离——MEMORY.md 只是钩子,正文懒加载,不会撑爆上下文
- 双向链接
[[cross-links]]形成天然知识图谱 - 简单到可以
cat调试
Hermes Agent(NousResearch,MIT 开源)
五层记忆
| 层 | 存储 | 特性 |
|---|---|---|
| L1 短期推理 | Transformer 上下文窗口 | 会话结束即丢失 |
| L2 持久文件 | MEMORY.md + USER.md |
跨会话,溢出自动合并 |
| L3 技能记忆 | ~/.hermes/skills/ 目录 |
自动生成:任务 ≥5次工具调用 + 有错误恢复 → 创建 SKILL.md |
| L4 Honcho 用户建模 | 后台异步推理 | 只存结论(用户偏好),不存原始对话 |
| L5 FTS5 全文搜索 | SQLite + FTS5 索引 | 所有历史交互可全文检索 + LLM 摘要 |
会话血统
压缩不覆盖原文。创建子会话行,记录 parent-child lineage。旧上下文不丢,可回溯。
上下文分层缓存
System prompt 分三层:
- Stable:身份、工具指引、技能——缓存不变
- Context:项目文件、规则——项目切换才变
- Volatile:记忆快照、时间戳——每轮更新
缓存只失效 Volatile 层,降低 token 重复计算。
技能创建循环
完成任务 → 判断条件(≥5工具调用 + 错误恢复 + 用户纠正)
→ 自动生成 SKILL.md
→ 下次同类任务:从技能模板启动(减少 30-85% token 消耗)
工具系统
- Import 即注册——工具文件首次 import 时通过
registry.register()自动注册 - 注册 ≠ 暴露——toolset 层决定哪些工具对模型可见
- 40+ 内置工具,28 个 toolsets
九组件 Harness 模型
| # | 组件 | Hermes 实现 |
|---|---|---|
| 1 | 外层迭代循环 | AIAgent.run_conversation() — provider 无关 |
| 2 | 上下文管理 | ContextCompressor — 辅助模型摘要 + 分层缓存 |
| 3 | 工具/技能管理 | 注册与暴露分离 |
| 4 | 子 agent 管理 | delegate_task — 临时子 agent,深度限制 2 |
| 5 | 预打包技能 | 166 个技能,26 类别 |
| 6 | 会话持久化 | SQLite + FTS5 + WAL |
| 7 | System prompt 装配 | Stable / Context / Volatile 三层 |
| 8 | 生命周期钩子 | 插件钩子 + 文件系统钩子 |
| 9 | 权限/安全 | Codex 风格审批 + 危险命令检测 + PII 脱敏 |
Rhodes Island 对比
| 维度 | Claude Code | Hermes | Rhodes |
|---|---|---|---|
| 语言 | TypeScript | Python | Python |
| 记忆层数 | 1(文件) | 5 | 4 |
| 语义检索 | ❌ grep | ✅ FTS5 | ✅ embedding |
| 技能学习 | ❌ | ✅ 自动 | ❌ |
| 会话血统 | ❌ | ✅ | ❌ |
| 上下文缓存分层 | ❌ | ✅ Stable/Context/Volatile | ❌ |
| 开源许可 | 泄露(无) | MIT | 私有 |
可直接借鉴的改进(按优先级)
- System prompt 分层缓存——身份/人设/Writing Rules 跨轮不变,只重建 Volatile 层(记忆/情绪/时间)。改动小,收益大。
- 会话血统——压缩时创建子会话而非覆盖,记录 parent_id。L2 已有 JSON 结构,加一个字段即可。
- FTS5 全文搜索——L3 ChromaDB 做语义搜索,但"博士上次说喜欢下雨"这种精确短语检索很弱。加 SQLite FTS5 做互补。
- 技能沉淀——深聊中重复出现的互动模式自动提取为 procedure 记忆。长线目标。