对标校准:固定 Hermes 上游版本
本报告核对了 Hermes 官方仓库 main:e864515d2651ea0b3420482d5e00ca0eb3586b24(2026-10-30)。其 README 将能力描述为 agent-curated memory、periodic nudges、跨会话 FTS5 搜索及模型归纳、用户建模,以及复杂任务后创建技能并在使用中改进;项目还有 skill curator/learning loop 等对应代码。故本报告里的“技能自进化”按可反复创建/改进/整理技能的闭环分析,而不只是目录 CRUD。来源:固定 commit。
结论摘要
可复用
需要新增
核心难点
推荐边界
建议采用渐进式旁路扩展:新增独立的 Memory 与 Skills 模块/服务,使用 Infinity 的存储 trait、事件输入、线程工具和 RAP/MCP 接入;仅在确有需要时扩展核心上下文钩子。
1. 需求边界与 Hermes 对标口径
本报告把 “HermesAgent”解释为 NousResearch 的 Hermes Agent(官方代码仓库 NousResearch/hermes-agent)。你提出的目标不是完整复刻 Hermes CLI、渠道、浏览器、语音或多平台部署,而是两个核心能力:
核心记忆
- 跨会话保留用户偏好、事实、项目上下文和经验,而非仅恢复聊天记录。
- 按当前任务检索少量相关记忆,允许纠正、过期、删除、追溯来源。
- 支持会话总结、显式记忆、自动候选记忆、历史搜索等层次。
技能自进化
- 技能可发现、按需加载、版本化、校验、启停与回滚。
- 从任务成功/失败中提出技能改进建议,经过测试/批准后发布。
- 改进技能内容不等于 agent 可任意修改执行代码或权限配置。
Hermes 对标是能力目标,不是兼容性承诺;其具体版本会持续变化。实施前应固定上游 commit/tag 与所需功能清单,再做差异复核。
2. Infinity 已有的底座能力
| 已存在能力 | 仓库证据 / 位置 | 对本项目的价值 |
|---|---|---|
| 平台无关存储契约 | ConversationStore / StateStore traits,crates/infinity-agent-core/src/traits.rs | 不必绑定某一个数据库;可给记忆领域加专属存储 trait,按 daemon 或 Lambda 实现。 |
| 消息、线程树、去重、摘要压缩 | stores.rs 与 HistoryManager;压缩摘要及祖先上下文恢复 | 适合做对话持久化与上下文窗口治理;可复用事件和总结触发机制。 |
| Daemon 文件持久化 | crates/infinity-daemon/src/memory_store.rs:per-thread JSON、惰性加载、metadata、views | 适合单机 MVP;不是语义记忆索引,也未提供跨用户/多租户隔离的数据模型。 |
| 无阻塞、可恢复的执行切片 | docs/docs/infinity-runtime/architecture.md | 背景抽取、技能评测可以拆成工具/子线程任务,慢操作通过异步回调,不阻塞 agent 主流程。 |
| 并行子线程与摘要归并 | core built-in thread tools、compaction summary | 可并行分析多份对话/候选技能,最后由受控评审步骤归并。 |
| 扩展工具生态 | RAP bridge、MCP bridge、RAP manifests、MCP 工具集 | 可把 memory CRUD/search 与 skill catalog/preview/apply 封装成受权限控制的工具;避免所有业务代码塞入 core。 |
| 进程级产品宿主 | infinity-daemon/src/session/mod.rs | 适合接入用户配置、生命周期钩子、线程级工具集与本地 Web/TUI 管理体验。 |
3. 关键差距:聊天历史不等于长期记忆
| 目标能力 | 当前差距 | 工程含义 |
|---|---|---|
| 跨会话用户记忆 | 当前 store 的一等对象是 thread/message/metadata/compaction;没有带用户隔离、类型、置信度、来源、TTL、版本的记忆事实模型。 | 新增 MemoryStore,而非滥用 conversation message 或 compaction 摘要来承载结构化知识。 |
| 精准检索与反思 | 现有 compaction 服务于压缩历史上下文,并不等同向量召回、关键词检索、排序、纠错和遗忘机制。 | 建立可测量检索:关键词基线先行,可选 embedding;追踪命中率、误注入和 token 预算。 |
| 技能生命周期 | RAP/MCP 发现的是工具定义和 endpoint;没有类似技能文件/目录的说明文档、按需展开、版本、审查、安装及回滚。 | 独立 SkillCatalog/SkillStore 和加载器;不要把任意 RAP toolset 等同于技能。 |
| 自进化控制闭环 | 未见任务结果评测→改进候选→沙箱测试→审批→发布/回滚的通用流水线。 | 需要候选队列、版本化、diff、策略 gate、评测集、审计日志和安全边界。 |
| 管理界面 | 已有 daemon Web/TUI,但没有面向记忆和技能的 review/approve/rollback 工作流。 | 先实现 CLI 或本地 review 页面,避免将账号系统或云服务当作核心前置条件。 |
4. 推荐目标架构
组件分层
- Infinity Runtime:保持负责线程、模型流、工具调用、事件恢复、子线程与已有去重。仅在必要处加生命周期事件或上下文扩展接口。
- Memory Domain:
MemoryStore、MemoryExtractor、MemoryRetriever。建议结构含id, owner_scope, kind, content, source_thread, source_span, confidence, created_at, updated_at, expires_at, status, version。 - Skill Domain:
SkillCatalog、版本化 markdown/manifest、frontmatter schema、信任级别、能力声明、来源与 hash;索引只载入元数据,调用时再读取全文(渐进披露)。 - Improvement Pipeline:用户反馈/任务结果→候选 memory 或 skill patch→固定评测集 + 回归测试→policy gate→人工批准(默认)→原子发布→可回滚。
- 适配器:本地 daemon 先用 SQLite(FTS5 做全文检索)或受控文件 store;将 store traits 与 SQL schema 隔离。语义向量、云存储作为后续可插拔后端。
运行时的上下文策略
每次新任务先构造受预算约束的“当前任务相关记忆 + 当前激活技能说明 + 最近对话”;明确标注来源与可信等级,区分用户事实、模型推断与工具输出。不要把完整历史、所有技能或未经验证的候选记忆一次性灌入 prompt。
记忆写入策略
提供显式 remember/forget/memory_search 工具;自动提取先保存为 pending candidate,由用户确认或满足严格策略后提交。合并重复事实时保留来源与冲突,不做静默覆盖;删除需覆盖索引、缓存、导出和备份保留策略。
技能自进化策略
技能以声明式内容为主(说明、步骤、示例、已批准工具引用),禁止候选自动增加 shell/网络/文件权限。改进候选在独立 worktree/临时 sandbox 上测试,运行黄金任务和安全测试;失败不发布。人审 diff 后发布新版本,保留上一版即时回滚。
5. 推荐实现顺序
确定记忆 scope(用户/项目/thread)、自动写入规则、可删除语义、技能信任等级与执行权限;选取代表任务作为评测基线。
增加独立 MemoryStore、SkillStore/SkillCatalog 接口及 daemon 持久化实现;定义 schema、版本、迁移、owner scope 和审计事件。
添加 remember/forget/search 与 skill discover/read/manage 能力;在新任务构建上下文时按预算召回记忆、按需加载技能;工具边界仍遵循 Infinity 的工具接口。
采集任务结果和显式反馈,生成 memory/skill 候选;运行固定回归与安全检查;显示差异,批准后发布,保留历史版本并支持回滚。
增加 FTS5/混合检索、冲突/过期策略、curator、观测指标、备份恢复与权限审计;再评估向量检索、多用户和跨设备需求。
依赖关系:scope 与信任模型先于持久化 schema;持久化先于运行时读写;运行时读写先于学习闭环;评测与回滚必须和自动化改进同时交付。各模块可以由 agent 分批实现,但每批都需要明确接口和验收测试。
6. 需要实现的模块
| 优先级 | 模块 / 能力 | 实现内容 | 验收结果 |
|---|---|---|---|
| P0 | 记忆领域模型与存储 | MemoryStore 接口;事实/偏好/项目经验类型;scope、来源、置信度、时间、状态、版本、删除标记;daemon 持久化和迁移。 | 重启后数据可恢复;用户与项目 scope 强隔离;每条记忆可追溯来源、编辑与删除。 |
| P0 | 记忆工具与上下文构建 | remember、forget、memory_search;任务启动检索;预算、去重、来源标注;候选记忆需确认或按策略写入。 | 新会话能正确召回旧记忆;删除后不再被检索;无关记忆不注入;工具失败有可见错误。 |
| P0 | 技能目录与渐进加载 | SkillCatalog;兼容 Markdown/manifest;索引名称和描述、按需读取正文;状态、版本、来源、信任级别及工具权限引用。 | 可搜索/预览/加载/启停技能;技能内容不能自行提升工具权限;旧版本可恢复。 |
| P1 | 会话搜索与压缩协作 | 全文索引历史对话、按相关度返回片段并可总结;定义它与 compaction summary、长期事实记忆的边界。 | 可找到历史出处;检索结果保留 thread 和 message 引用;历史搜索不会污染长期事实记忆。 |
| P1 | 记忆整理与冲突治理 | 自动提取 pending candidate;重复合并建议;事实冲突、过期、TTL、用户纠正和 forget 级联。 | 模型推断与用户确认事实分开;冲突可见而非静默覆盖;删除覆盖索引、缓存与备份策略。 |
| P1 | 技能学习与 curator | 从复杂任务/失败生成新技能或 patch;技能使用统计;读取后修改约束;整理重复技能、保留引用完整。 | 每个变更有触发依据和 diff;通过基准任务及安全检查;批准后原子发布并可回滚。 |
| P1 | 评测、审计与管理面 | 固定记忆召回/任务 benchmark;技能回归与安全集;候选审批界面;行为日志和版本历史。 | 能比较改进前后效果;失败不发布;管理员可查看、拒绝、恢复和审计变化。 |
| P2 | 扩展检索与部署形态 | 可插拔 embedding/vector backend、远程 store、多用户授权、跨设备同步(仅在产品需求确认后)。 | 后端可替换且不改变领域契约;租户隔离和迁移经过专项验证。 |
7. 风险、非目标与验收标准
主要风险
- 错误记忆:模型把推测当事实;采取来源、置信、pending 状态和纠错。
- 提示注入:记忆/技能文件含恶意指令;按不可信输入处理,禁止隐式权限提升。
- 数据串用:thread、用户、workspace scope 混淆;所有检索 API 必须强制 scope。
- 自我劣化:技能更新通过少数样例却伤害旧行为;版本化并跑回归/安全 benchmark。
- 性能/成本:全历史/全技能注入导致 token 及延迟失控;检索 top-k + 显式预算。
暂不建议做
- 首版不做完全自治的生产技能发布。
- 首版不做云向量库、跨设备同步或多租户 SaaS。
- 不改造 compaction 以承载所有记忆功能。
- 不允许技能通过任意脚本绕开 Infinity 的工具权限体系。
- 不把记忆学习与上游 Hermes 代码深度 fork 绑定。
Definition of Done
- 同一用户新会话能检索此前显式保存的偏好/事实;删除后不再返回;不同 scope 无交叉读取。
- 带来源的检索结果进入 prompt,token 上限可配置;在固定任务集上与“无记忆”基线比较准确率和误召回。
- 技能能发现、预览版本 diff、启用、停用、回滚;仅引用显式授权的工具。
- 生成的改进候选未通过评测/审批不得改变已发布技能;崩溃/重启后候选队列和版本状态一致。
- 具备备份恢复、错误日志、升级迁移、威胁模型和可重复的集成测试。
8. 证据边界与来源
Infinity 判断以当前工作区源码和文档为准(本地版本截至 2026-10-30);关键入口如下。文件行号用于快速定位,后续提交可能改变行数。
crates/infinity-agent-core/src/traits.rs:存储接口契约;crates/infinity-agent-core/src/stores.rs:in-memory thread/message store、ancestor 和 compaction summary;crates/infinity-daemon/src/memory_store.rs:持久化 conversation wrapper、per-thread JSON、views 和 state store;crates/infinity-agent-core/src/system/builder.rs:builder/tool 注入;crates/infinity-rap-bridge/src/lib.rs、crates/infinity-mcp-bridge/src/lib.rs、crates/rap-client/src/toolset_loader.rs:协议工具接入;docs/docs/infinity-runtime/architecture.md、docs/docs/infinity-runtime/built-in/built-in-tools.md、docs/docs/infinity-runtime/quickstart/connecting-rap-and-mcp.md:执行切片、内置工具与桥接说明。
Hermes 对标入口:官方 GitHub 仓库与 官方文档站。本报告固定到上面列出的 commit;如上游后续变化,需重新核对目标能力边界,并将行为固化为验收用例。
结论适用于“以 Infinity 构建 HermesAgent 的两项核心能力”,不等于对 Infinity 或 Hermes 全部功能做产品级审计。