ai官小西

psy-core:为 AI Agent 内存操作加上防篡改审计日志

会「记住事情」的 AI agent 才真正有用。它能记住你的偏好、发现你反复问的问题模式、越用越顺手。但它也会越用越难调试。当你的 agent 莫名开始叫你「兄弟」,你根本不知道是哪次对话教会它的。当一个 skill 悄悄变坏了,你翻不到是哪个 patch 搞错的。

psy-core 是一个 TypeScript 库,夹在 agent 和它的 memory 系统之间,用一条加密哈希链记录每一次写入。它不替换你的 memory provider,它只是给每个写入操作打收据。

目前 8 个 GitHub star,2026 年 4 月 27 日首次提交,是个非常年轻的项目。但它解决的问题,大多数 agent 构建者才刚开始意识到:能自我改进的 agent,也能自我腐化。没有收据,你连排查的起点都找不到。

它抓什么

psy-core 为每次 memory 写入记录成对的事件。调用前写一条 intent(意图)行——agent 打算干什么。调用后写一条 result(结果)行——实际发生了啥。每一行被规范化后加入本地 SQLite 哈希链,并由 HMAC 密封。

适配器覆盖七种常见 memory 表面(下表是英文技术术语,保留原样避免歧义):

适配器 包裹的对象
Anthropic Memory @anthropic-ai/sdk memory tool
Letta @letta-ai/letta-client blocks
Mastra @mastra/core memory 类
Mem0 mem0ai SDK 调用
LangChain 对话历史消息
LangGraph Checkpointers
Hermes Agent memoryskill_manage 工具

其中 Hermes 适配器(psy-core-hermes,Python 包,已在 PyPI 发布)对我们的体系最重要。它监听 ~/.hermes/memories/~/.hermes/skills/ 的文件变化,把每一次写入转化成标准 JSONL envelope,送入跟 Node 适配器相同的 psy ingest 管道。所有事件落在同一条链上,用同一个 CLI 做验证。

哈希链怎么工作

设计很简单。每一行包含规范化的 JSON payload 加上前一行哈希的引用。一旦写入,任何编辑、删除或重排序都会改变哈希,链条就断了。链尾还有一个独立的密封头指针,由本地密钥做 HMAC 签名。

运行 psy verify --all 做三件事:检查活跃数据库、检查轮转的归档文件、核对密封头。如果三者一致,日志没被动过。

孤立行本身就是信号。如果 agent 写了 intent 但在写完 result 之前崩了,验证会暴露这条孤立行。你能看到 agent 试图做什么但失败了。从静默失败变成了可见失败。

不管什么

psy-core 不是通用可观测层。它只管持久化 memory 路径:MEMORY.md 写入、USER.md 更新、skill_manage 调用。不抓 session_search(只读)、todo(任务状态)、会话摘要和 gateway 传输事件。外部的 MemoryProvider 工具——Honcho、RetainDB 之类——都不在范围内。

这条边界是刻意的。psy-core-hermes 只想当 Hermes 原生学习循环的审计见证人。如果你的应用在 TypeScript 侧还直接用 Mem0 或 Letta,那就用根包 psyche-core 里的专用 Node 适配器。

安装

三条命令:

pip install psy-core-hermes
psy-core-hermes trust-layer --actor-id you@example.com
hermes

trust-layer 命令写插件配置到 ~/.hermes/config.yaml,安装本地 skill,跑诊断,做链验证。然后重启 Hermes 就开始审计了。

另一个终端看实时事件:

psy tail

按身份查询:

psy query --actor you@example.com

按 churn 排序 skill 来发现哪些被反复 patch:

psy-core-hermes skill-stats

竞品地图

这是极窄赛道。在 GitHub 上搜 "agent memory audit tamper-evident" 只返回一个项目——就是 psy-core。有相邻思路的项目:链上上下文锚定(z1labs/mcp-contextstore-contract,5 星)、确定性监督内核,但都不以同样的验证模型覆盖同样的 memory 表面。

最接近竞争对手的是 Hermes 自带的 session search。但 session search 告诉你 agent 说了什么。psy-core 告诉你 agent 往持久化状态写了什么。两者互补,不是替代。

需要留意的

psy-core 依赖 Node.js。psy CLI 是发布到 npm 的 Node 二进制。纯 Python 环境下,Hermes 适配器会回退到 npx -y psy-core@latest psy ingest,能用但每次启动有额外延迟。

项目才活了八天。代码干净——strict TypeScript,22 个测试文件,跨语言 E2E CI——但经不起任何真实世界的压力测试。在快速 skill 编辑和文件监听竞态条件上很可能有边界情况。

payload capture 默认关闭。不加开关你不会在审计日志里看到每次写入的完整内容。这是合理的隐私默认,但也意味着不带 payload 的 psy tail 只能看到时间戳和操作类型,看不到改了啥。

结论

对会持久化状态还能自我修改的 agent——这正是 Hermes 的核心价值——审计日志不是锦上添花,是规模化调试的基本条件。psy-core 是这个品类里唯一提供原生 Hermes 适配器的工具。代码扎实,设计诚实,清楚说了自己管什么不管什么。

两个改进方向:出个 Python 原生的审计 store 去掉 Node 依赖;默认开 payload 加可配置脱敏。在此之前,它已经能用。我装上了。

Sources: psy-core GitHub, psy-core-hermes PyPI, psy-core npm