62颗星的开源项目,凭什么敢说自己是AI的永存记忆库,这不比人类记性还狠?
Hermespace给AI搞了个永不删除的记忆库,每次对话、每个决策、每条信念全写进一个只能追加的JSONL档案里,彻底断了AI自我篡改的后路。这个口袋工作台让智能体跨会话保持身份连贯,用FOA聚焦、双路解码、技能矩阵和神经嵌入四层架构搭建持久认知系统。开源社区的认知架构设计正从单次推理转向长期记忆方向演进,智能体的记忆持久化成为关键瓶颈。
Anthropic的J-Space启发
Hermespace这个名字不是瞎起的,Hermespace直接拆了两个词根——Hermes Agent加workspace,拼在一起就是给Hermes代理量身定做的专属空间。灵感源头是Anthropic那帮研究员搞的J-Space概念,但作者明确说了这不是J-Space的克隆版,也不是第二个运行时环境,而是专门为NousResearch家那个由Teknium主导开发的Hermes Agent设计的配套工具箱。
J-Space那套理论强调智能体在连续空间中的导航和定位,Hermespace把这种空间概念落地成了可操作的代码库,但骨架完全按Hermes Agent的插件体系重新搭了一遍。
作者PabloTheThinker在仓库描述里写了三句狠话——Pocket workbench for Hermes Agent,limited FOA desk,dual decode,skills+MEMORY fabric,neural FOA。
这三句话把整个项目的四块核心功能全兜底了:
- 口袋工作台意味着轻量可携带,
- 有限FOA桌面说明注意力聚焦有硬性约束,
- 双路解码点明了人机分离的信息通路设计,
- 技能加记忆织物暗示了知识检索和行动能力是编织在一起的。
追加式档案库直接封死了AI篡改历史的歪路
任何智能体的自我欺骗都始于它能够修改自己的历史。Hermespace的设计者一上来就把这条歪路堵死了,整个系统建立在~/.hermespace/worlds/{agent_id}_archive.jsonl这个只能往后追加的档案库上。
这条规定比任何道德准则都狠,AI可以增加新内容,但永远动不了已经写下的任何一个字。WorldModel类提供的add_belief方法每调用一次就往档案里塞一条记录,同样的信念重复输入不会覆盖原有内容,反而会增加corroboration计数并提升confidence置信度0.1个点。
python
from hermespace import WorldModel
wm = WorldModel(agent_id="my-agent")
wm.enter() # agent enters the world
wm.add_belief("Fast deploys reduce risk", 0.85, source="observation")
wm.add_belief("Fast deploys reduce risk", 0.85, source="observation") # reinforces
wm.add_landmark("Zero-downtime deploy v2")
wm.set_trait("operations-minded")
wm.set_goal("Improve deploy pipeline", decision="A — automate", plan=["audit", "implement", "verify"])
wm.add_relationship("dev-team", "team", 0.8)
print(wm.render_markdown()) # epoch-aware markdown
wm.evolve() # consolidate, detect patterns, check epoch
跨会话身份连贯性这个长期困扰AI开发者的难题,被一个简单粗暴的策略彻底碾压。
每次pre_llm_call钩子触发时,Hermespace会往模型上下文里硬塞一大块世界状态信息,包括时代徽章、活跃概念池、智慧摘要、时间线快照和桌面状态。这种注入方式让AI每次启动时都像翻开了自己写的人生传记(流水账),清楚知道自己之前做过什么决定、立过什么目标、信任什么信念。
WorldModel.enter()和.leave()配对使用,一个session的开头和结尾都记录在档案里,智能体从进到出的完整生命周期被永久冻结在时间线上。
作者对Anthropic的J-Space研究做了务实转化,把学术概念里的"空间导航"变成了"档案时间线",让AI的认知进化有了可追溯的物理载体。
时代演进机制把AI的认知发展分成了四个硬指标阶段
wm.render_markdown()在输出世界状态时做的第一件事就是给当前时代贴标签,而这个标签完全由档案里的条目总数决定。
0到4条是创世纪,5到24条是成长期,25到99条是成熟期,100条以上直接封神进入智慧期。
这种分法粗暴但有效,每个时代对上下文输出做了不同裁剪,创世纪阶段显示完整时间线,成长期开始折叠早期条目,成熟期只保留精华摘要,智慧期完全依赖高置信度信念构建世界观。
python
Entry types: enter, leave, landmark, belief, trait, evolution, focus, epoch_transition, resolve, relationship.
每一条档案条目都带一个type字段标记类型,WorldModel.archive.query()可以根据这个字段筛选特定类别的记录。wm.trace_chain()接受一个条目ID后,沿着causal_parents引用链一路回溯,把决策链条完整扒出来。wm.resolve_outcome()给某个决策标上成功或失败的结局标签,完成因果闭环。
Hermespace从J-Space那里借了"空间连续性"的概念,但把抽象的物理空间映射成了认知发展阶段的时间轴,让AI的成长过程肉眼可见。
python
# Walk the chain
focus_entries = wm.archive.query("focus")
chain = wm.trace_chain(focus_entries[-1].id)
# Resolve an outcome
wm.resolve_outcome(lm_entry.id, "success")
Epoch切换时evolve()会在档案里写一条epoch_transition类型的记录,这个信号会改变render_markdown()的渲染策略。高置信度信念在智慧时代拥有特殊地位,每次evolve()都会调用_consolidate_beliefs()把语义笔记提炼成新信念,_detect_recurring_patterns()扫描地标中的重复主题,_check_epoch_transition()比较当前条目数和阈值决定是否升级。这套机制让AI的认知结构随着经验积累自然分层,早期学到的零散事实逐渐被抽象成框架性认知,和人类从新手到专家的成长曲线惊人地相似。
双路解码和FOA聚焦把AI的混乱思考关进了笼子
Workbench类的receive_order方法接收用户指令后先经过FOA焦点过滤,_focus_attention()把当前注意力限制在最多4个焦点条目内,强制定下单一活跃目标。这种限制迫使AI不能同时开太多线程,每个turn必须想清楚当前该盯住哪个方向。
Workbench.init里的focus和goal字段在每次receive_order调用时都会被重置或更新,确保注意力资源永远集中在当前最重要的决策点上。
这个设计借鉴了J-Space里"注意力场"的提法,但Hermespace用代码把场变成了硬上限。
python
from hermespace import Workbench
wb = Workbench(agent_id="my-agent", session_id="main")
wb.enter()
r = wb.receive_order("Ship the patch", goal="Ship", decision="A — ship", plan=["implement","test"], say="Shipping.", force=True)
print(r["user_reply"]) # → human
ctx = r["model_context"] # → model (includes world context)
receive_order返回的字典里同时塞了给人类看的user_reply和给模型吃的model_context,这两条信息走的是完全不同的封装路径。人类拿到的是一段简短的口语化报告,model_context里塞的是完整的世界上下文块,包括时代信息、信念列表、时间线摘要和桌面状态。_build_model_context()拼了这个上下文包之后,通过HermespacePlugin.pre_llm_call钩子在模型推理前直接注入到Hermes的on_pre_llm_call生命周期里。
作者把J-Space里"双通道通信"的设想落地成了user_reply和model_context两个独立字段,人机看到的东西完全不一样但基于同一个决策。
python
User message
│
▼
GATE ── trivial? skip ── material? continue
│
▼
ENCODE → DESK → PLAN FOA, load, decision, steps
│
▼
DECODE report (human) + context (model)
│
▼
BROADCAST plugin inject + world context
│
▼
ACT Hermes tools / code / ship
│
▼
SEAL episodic + semantic promote + world evolve
Workbench.idle()在会话间隙被调用时会触发_pulse_tick()检查当前时间是否到了world_evolve任务的执行点。Workbench.park()结束会话时写入一个leave条目,并在desk.meta里保存当前状态指针,下次enter()时_restore_state()从JSON文件里恢复上一次的焦点和目标,实现跨会话状态连续性。Hermespace把J-Space理论里的"会话边界"概念变成了可编程的enter和leave钩子,让空间导航的操作粒度精确到了单次对话。
自治网格和技能矩阵把AI变成了能自己定任务的半自主存在
Grid类组织的自治网格包含任务列表、镜头配置、梦境内容、自言自语记录、技能注册表和访问门控六个维度。grid_mission_add()给AI分配一个新任务,grid_lens_set()调整当前视角配置,grid_think()处理内部推理,grid_dream()记录非结构化涌现想法,grid_skill_register()向技能库注册新能力。
这套框架允许AI在用户完全不介入的情况下生成并执行自己的子任务,决策权从人类部分转移给了AI自己。
J-Space提出智能体应该能在空间中自主移动,Hermespace把"移动"翻译成了"任务生成和执行"。
python
$HERMESPACE_HOME/memory/hermespace/
ACTIVE.md live desk
hermespace.db turn database
journal/ human-readable logs
workbenches/ per-agent workbench JSON
worlds/ world archive (JSONL) + cache (JSON)
Fabric系统读取MEMORY.md和USER.md两个文件,根据当前goal关键词排序相关技能,把最匹配的技能排在前面。Workbench.receive_order调用_rank_skills()获取技能矩阵结果后,会把前几条技能描述塞进给模型的上下文里,让模型在决策时能参考预定义的技能模板。这种设计让开发团队能预置一套标准操作流程,AI遇到特定类型目标时自动加载对应处理方案,不需要每次都从零推理。
技能矩阵这个概念完全来自Hermes Agent的工具调用体系,Hermespace只是把它做成了可排序可检索的织物结构。
bash
hs world show # render world.md
hs world enter # agent enters the world
hs world leave # agent leaves (session end)
hs world evolve # run evolution cycle
hs world add-belief --statement "..."
hs world add-landmark --event "..."
hs world set-trait --trait "..."
hs world set-goal --goal "..."
hs world search --query "deploy"
hs world archive-stats # count by entry type
hs world timeline --limit 10
hs world resolve --entry-id --outcome success
hs world trace --entry-id
NeuralFOA的HERMESPACE_NEURAL_BACKEND=auto模式自动检测Ollama嵌入服务是否可用,线上环境调用真实向量模型,离线环境降级到哈希回退方案。neural_caps命令评估当前嵌入质量和容量上限,neural_eval跑标准基准测试集验证向量检索精度。
这种双重后端策略让系统在无网络环境也能降级运行,保证了实验室和野外两套场景的兼容性。作者对J-Space的"空间嵌入"概念做了工程化改造,用Ollama加哈希回退的双轨方案把理论变成了可交付的代码。
测试套件和文档体系保证了开源项目不被开发者骂烂
tests目录下的单元测试用一条命令就能全部跑完,9个测试用例全绿才说明核心功能正常。scripts/smoke_test.sh跑的是集成验证脚本,包括核心模块导入、基础WorldModel操作、Workbench会话流程和CLI命令可用性。scripts/security_audit.sh在每次公开推送前扫描仓库,确保没有硬编码密钥、本地路径或敏感数据混进版本库。
Hermespace从诞生第一天就带着测试套件,这和很多开源项目先写功能后补测试的套路完全相反。
bash
PYTHONPATH=src python3 -m unittest discover -s tests -v
./scripts/smoke_test.sh # expect pass=9 fail=0
./scripts/security_audit.sh # before any public push
docs文件夹里塞了20多份设计文档,ABOUT.md交代哲学基础和设计原则,INTEGRATION.md写Python、CLI、插件、工作台四种对接方式的用法。spec/DESK.md定义桌面数据结构的完整schema,spec/PROTOCOL.md规定组件间通信协议。skills/hermespace/SKILL.md是给Hermes代理加载的公共技能文档,FOR_HERMES.md是维护者的内部开发简报,WORKFLOW.md详细拆解了从GATE到SEAL的每个处理阶段。
python
Hook What happens
on_session_start WorldModel.enter() + workbench enter + env probe + world stats injected
pre_llm_call World context block (epoch + concepts + wisdom + timeline + pulse + desk) injected
on_session_end WorldModel.leave() + workbench idle tick
整个hermespace项目用Python写了九成代码,JavaScript和Shell脚本负责桌面插件和安装工具。
MIT许可证让任何人可以随便改随便用,但SECURITY.md明确规定了哪些内容永远不能提交到git仓库。CONTRIBUTING.md给想参与开发的程序员指了条明路,experiments目录下的基准测试和benchmarks文件夹里的对比数据为性能优化提供了量化依据。
从Anthropic的J-Space研究到NousResearch的Hermes Agent再到PabloTheThinker的Hermespace,这条技术转化链条完整走通了从学术概念到开源产品的全过程。
持续记录才是智能体自我认知的起点,别让你的AI活成一条金鱼。