罗德岛通讯与技术部

Agent 架构研究:Claude Code & Hermes Agent

AGENT ARCHITECTURE

极简文件系统方案,src/memdir/ 下 ~1700 行 TypeScript:

状态:🟡 规划 · 最后核对 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 私有

可直接借鉴的改进(按优先级)

  1. System prompt 分层缓存——身份/人设/Writing Rules 跨轮不变,只重建 Volatile 层(记忆/情绪/时间)。改动小,收益大。
  2. 会话血统——压缩时创建子会话而非覆盖,记录 parent_id。L2 已有 JSON 结构,加一个字段即可。
  3. FTS5 全文搜索——L3 ChromaDB 做语义搜索,但"博士上次说喜欢下雨"这种精确短语检索很弱。加 SQLite FTS5 做互补。
  4. 技能沉淀——深聊中重复出现的互动模式自动提取为 procedure 记忆。长线目标。