关于 Agent Receipts
Agent Receipts 是面向 AI Agent 的本地记忆与行动审计系统,将记忆和操作记录生成可独立验证的 Ed25519 签名回执。它适合需要追溯 Agent 记忆来源、核验操作过程的开发者,数据存储在本地。
主要功能
- 01跨会话的实体关系记忆
- 02为记忆和操作生成签名回执
- 03验证回执与来源链
- 04导出和导入可验证记忆包
- 05本地 SQLite 存储
- 06提供 CLI 与本地仪表板
适用场景
- 01跨会话保留 Agent 的项目与偏好信息
- 02核验 Agent 执行操作的输入与输出
- 03追踪记忆事实的来源
- 04导出记忆并由其他实例验证
MCP 相关
MCP 服务提供记忆、操作追踪、回执验证、约束、评估和记忆包等工具,供 AI Agent 使用。README 展示了与 Claude Code、Claude Desktop 和 Cursor 的配置方式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
24收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| action | string | 是 | 要记录的操作名称(例如,“generate_code”、“analyze_data”) |
| input_hash | string | 是 | 预先计算的输入数据 SHA-256 哈希,格式为 "sha256:hexstring" |
| receipt_type | enum | 否 | 收据类型:“action”(默认)、“verification”、“judgment”或“arbitration”action | verification | judgment | arbitration |
| output_hash | string|null | 否 | 预先计算的输出数据 SHA-256 哈希,格式为 "sha256:hexstring" |
| output_summary | string|null | 否 | 输出的易读摘要 |
| model | string|null | 否 | 使用的 AI 模型 |
| tokens_in | any | 否 | 输入 token 数 |
| tokens_out | any | 否 | 输出 token 数 |
| cost_usd | any | 否 | 以 USD 计的费用 |
| latency_ms | any | 否 | 延迟(毫秒) |
| tool_calls | any | 否 | 操作期间调用的工具 |
| tags | any | 否 | 用于分类的标签 |
| confidence | any | 否 | 置信度分数,范围为 0-1 |
| metadata | object | 否 | 任意元数据 |
| parent_receipt_id | string|null | 否 | 链中的父级收据 ID |
| chain_id | string | 否 | 链 ID(未提供时自动生成) |
| status | enum | 否 | 初始状态:“pending”(默认,稍后完成)或“completed”pending | completed | failed | timeout |
| constraints | array | 否 | 要评估的约束定义数组(类型:max_latency_ms、max_cost_usd、min_confidence、required_fields、status_must_be、output_schema) |
| expires_at | string | 否 | 此收据过期的 ISO 日期时间 |
| ttl_ms | number | 否 | 从现在起计算的存活时间,单位为毫秒 |
详细介绍
Agent Receipts
你的 AI Agent 会记住一切,而且你可以证明这一点。
由加密收据提供支持的 AI Agent 持久记忆。Agent 学到的每条事实都会经过签名,可追溯且可独立验证。无需云服务。
问题所在
你正在使用 AI Agent 构建项目。Claude Code 重构了你的身份验证模块,然后说“完成了,所有测试都通过了”。你的 Agent 生成了一段客户报价,并表示使用了正确的定价。你的助手还记得你上周的偏好——但你看不到它为什么会这么认为,也不知道它是否正确。
有三个问题亟待解决:
-
Agent 会忘记不同会话之间的一切。 每次对话都从零开始。上下文会丢失。你不得不反复解释同样的事情。
-
即使 Agent 确实记住了,你也无法了解其中的内容。 平台记忆是个黑箱。你看不到它存储了什么、何时存储、为何存储。你无法修正、导出或验证这些内容。
-
无法证明 Agent 实际做了什么。 日志可以修改,而且是 Agent 自己写的。它说“我更新了 3 个文件,所有测试都通过了”——真的如此吗?你只能相信 Agent 对自己工作的说法。
Agent Receipts 的功能
真正有效的记忆
你的 Agent 可在不同会话之间使用结构化的持久记忆,记录人物、项目、工具、偏好和事实。这不是扁平的键值存储,而是实体-观察图谱,其中每条事实都会关联到创建它的对话。
# Your agent learns something
memory_observe → "User prefers TypeScript, uses Neovim, building a SaaS called ModQuote"
# Next session, it already knows
memory_context → loads everything: entities, observations, relationships, preferences
# You can search it
memory_recall → "what tech stack does the user prefer?" → structured results
# You can forget (and the forget itself is tracked)
memory_forget → soft delete with audit trail
添加系统提示词后,Agent 会自动处理这些内容。你无需手动管理记忆。
真正可信的证明
每条记忆观察和每项 Agent 操作都会生成一份收据——一份经过签名的 JSON 文档,其中包含:
- Ed25519 签名——防篡改,可独立验证
- 输入/输出哈希——准确证明输入和输出的内容(不会存储原始数据)
- 时间戳——事件发生和完成的时间
- Agent ID——执行操作的 Agent
- 来源链——将任意记忆追溯到创建它的对话
这不是日志。日志是 Agent 自行编写、可随意修改的文本文件。收据则是加密证明,第三方无需信任你、你的服务或 Agent,即可进行验证。
一切都在本地运行
npx @agent-receipts/mcp-server
就是这样。无需 API 密钥,无需账户,无需云服务,无需月费。数据不会离开你的设备。SQLite 数据库位于 ~/.agent-receipts/。支持离线使用。
为什么要做这个
我当时正在开发 ModQuote——一个多租户 SaaS,AI Agent 会为汽车保护膜门店生成报价。涉及真实资金、真实客户和真实责任。
当 Claude 生成一份 $2,400 的 PPF 报价时,我需要知道:它收到了哪些车辆数据?应用了哪些定价规则?如果客户对价格提出异议,我能否证明当时发生了什么——不是靠 Agent 自己写的一条日志,而是用加密证明?
我研究了现有工具:
- Mem0——记忆功能很出色,但没有证明。它能记住信息,却无法证明何时或为何学到这些信息。记忆可以修改。
- Langfuse——可观测性很出色,但它提供的是追踪,而不是证明。日志属于你的系统内部,第三方无法验证。
- Zep——时序知识图谱,但它托管在云端且不透明。
这些工具都无法回答:“向系统外部的人证明,这个特定 Agent 在这个特定时间,使用这个特定输入执行了这个特定操作。”
于是我构建了 Agent Receipts。现在,每次生成报价都会生成一份签名回执。每条记忆都有溯源链。当有人问“Agent 是怎么得出这个数字的?”时——我会给他们一份可以自行验证的回执。
有何不同
| Agent Receipts | Mem0 | Langfuse | Zep | |
|---|---|---|---|---|
| 记忆 | 已签名的实体—观察图谱 | 智能提取 + 整合 | 无记忆 | 时序知识图谱 |
| 证明 | Ed25519 签名回执 | 无 | 可修改的追踪记录 | 无 |
| 验证 | 离线,任何人都能验证,无需服务端 | 不支持 | 不支持 | 不支持 |
| 基础设施 | npx 即可,无需任何配置 | 提取需要大模型 | 云端或自托管 | 云 API |
| 费用 | 永久免费(本地使用) | 有免费套餐,之后收费 | 有免费套餐,之后收费 | 付费 |
| 导出 | 支持加密验证的可移植捆绑包 | 支持导出 | API 导出 | 不支持 |
| 审计轨迹 | 不可变的回执链 | 可修改 | 可修改的日志 | 可修改 |
Agent Receipts 并不是这些工具的改进版,而是另一种完全不同的工具。
Mem0 回答:“我的 Agent 记得什么?” Langfuse 回答:“我的大模型工作流中发生了什么?” Agent Receipts 回答:“你能证明吗?”
开始使用
1. 添加 MCP 服务
Claude Code:
claude mcp add agent-receipts -- npx @agent-receipts/mcp-server
Claude Desktop(claude_desktop_config.json)/ Cursor(.cursor/mcp.json):
{
"mcpServers": {
"agent-receipts": {
"command": "npx",
"args": ["@agent-receipts/mcp-server"]
}
}
}
2. 添加系统提示词
这会告诉你的 Agent 何时记录记忆、回忆上下文和跟踪操作,让它自动完成这些工作:
npx @agent-receipts/cli prompts claude-code
将输出复制到项目说明或系统提示词中。
3. 开始使用
你的 Agent 现在会:
- 在会话开始时调用
memory_context,加载它对你的了解 - 在学到值得记住的信息时调用
memory_observe - 执行重要操作时调用
track_action - 使用 Ed25519 为所有内容签名
4. 查看运行情况
npx @agent-receipts/dashboard # Web UI at localhost:3274
npx @agent-receipts/cli stats # Terminal overview
npx @agent-receipts/cli memory entities # See what your agent remembers
5. 安装前先试用
运行交互式演示 →——在 60 秒内体验记忆、验证和捆绑包导出。无需安装。
包含内容
- 24 个 MCP 工具——记忆、操作、验证、约束、判断、开票、捆绑包
- 21 个 SDK 方法——完整的 TypeScript API
- 14 个 CLI 命令 + 9 个记忆子命令——以终端为先
- 18 个仪表板页面——回执、记忆图谱、链、Agent、约束、判断、发票
- 492 项测试——没有 TypeScript
any,没有 ESLint 警告 - Ed25519 + SHA-256——通过
@noble/ed25519实现(经过审计,纯 JS) - SQLite + FTS5——本地优先,支持完整的记忆全文搜索
可移植记忆捆绑包
将 Agent 的全部记忆导出为一个可验证的文件:
npx @agent-receipts/cli memory export > my-project.bundle.json
捆绑包包含每个实体、观察、关系、创建它们的回执,以及验证所有内容所需的公钥。将它交给另一个 Agent、另一个团队或另一个 Agent Receipts 实例,他们无需信任你,就能验证每条事实。
链接
| 交互式演示 | 在浏览器中试用 — 60 秒 |
| 实时仪表板 | 查看包含示例数据的完整仪表板 |
| 工作原理 | 收据结构、记忆模型、ModQuote 故事 |
| npm | 全部 6 个软件包 |
完整 SDK API 参考(21 个方法)
操作跟踪
ar.track(params)— 使用自动哈希跟踪已完成的操作ar.start(params)— 创建待处理收据ar.complete(receiptId, params)— 完成待处理收据ar.verify(receiptId)— 验证收据的 Ed25519 签名ar.get(receiptId)— 按 ID 获取收据ar.list(filter?)— 筛选并分页列出收据ar.getPublicKey()— 获取签名公钥ar.getJudgments(receiptId)— 获取收据的判定结果ar.cleanup()— 删除过期收据ar.generateInvoice(options)— 根据收据生成发票
记忆
ar.context(params?)— 获取完整记忆上下文转储,用于会话初始化ar.observe(params)— 存储一条记忆观察记录(始终生成收据)ar.recall(params?)— 搜索记忆(默认静默,使用audited: true生成收据)ar.forget(params)— 软删除观察记录或实体(始终生成收据)ar.entities(filters?)— 列出实体ar.relate(params)— 创建实体关系ar.provenance(observationId)— 获取溯源链ar.memoryAudit(params?)— 记忆审计报告
Bundle
ar.exportBundle(params?)— 导出可移植、可验证的记忆 Bundlear.importBundle(bundle, params?)— 导入并验证记忆 Bundle
别名
ar.emit(params)—track()的别名
完整 MCP 工具参考(24 个工具)
| 工具 | 描述 | 关键参数 |
|---|---|---|
track_action | 使用自动哈希跟踪 Agent 操作 | action、input、output、constraints |
create_receipt | 使用预计算的哈希创建收据 | action、input_hash、output_hash |
complete_receipt | 使用结果完成待处理收据 | receipt_id、output、status |
verify_receipt | 验证加密签名 | receipt_id |
get_receipt | 按 ID 获取收据 | receipt_id |
list_receipts | 筛选并列出收据 | agent_id、status、chain_id |
get_chain | 获取链中的所有收据 | chain_id |
get_public_key | 导出 Ed25519 公钥 | — |
judge_receipt | 开始 AI Judge 评估 | receipt_id、rubric |
complete_judgment | 完成待处理判定 | receipt_id、verdict、score |
get_judgments | 获取收据的所有判定结果 | receipt_id |
cleanup | 删除过期收据 | dry_run、cleanup_memory |
generate_invoice | 根据收据生成发票 | from、to、format |
get_started | 入门指南 | — |
memory_context | 完整上下文转储,用于会话初始化 | scope、max_entities |
memory_observe | 存储一条记忆观察记录 | entity_name、entity_type、content |
memory_recall | 搜索已存储的记忆 | query、entity_type、scope |
memory_forget | 软删除观察记录或实体 | entity_id 或 observation_id |
memory_entities | 列出已知实体 | entity_type、scope、query |
memory_relate | 创建实体关系 | from_entity_id、to_entity_id、type |
memory_provenance | 获取观察记录的溯源链 | observation_id |
memory_audit | 记忆操作审计报告 | agent_id、from、to |
memory_export_bundle | 导出可移植记忆 Bundle | entity_ids、include_receipts |
memory_import_bundle | 导入并验证记忆 Bundle | bundle、skip_existing |
CLI 完整参考
| 命令 | 描述 |
|---|---|
init | 创建数据目录并生成签名密钥 |
keys [--export] [--import] | 显示、导出或导入签名密钥 |
inspect <id|file> | 美化打印回执 |
verify <id|file> [--key] | 验证回执签名 |
list [--agent] [--status] [--json] | 按筛选条件列出回执 |
chain <chain_id> [--tree] | 显示回执链 |
judgments <id> [--json] | 列出回执的判定 |
cleanup [--dry-run] | 删除已过期的回执 |
stats | 汇总回执统计数据 |
export <id|--all> [--pretty] | 将回执导出为 JSON |
invoice --from --to [--format] | 生成发票 |
seed [--demo] [--count] [--clean] | 填充演示数据 |
watch [--agent] [--action] | 监视新回执 |
prompts <client> | 设置指南(claude-code、cursor、system) |
memory context | 内存上下文摘要 |
memory observe <name> <type> <content> | 存储观察记录 |
memory recall [query] | 搜索记忆 |
memory entities [--type] | 列出实体 |
memory forget <id> | 忘记观察记录或实体 |
memory audit | 记忆审计报告 |
memory provenance <obs_id> | 来源链 |
memory export | 将记忆导出为 JSON |
memory import <file> | 导入记忆 |
配置
| 环境变量 | 描述 | 默认值 |
|---|---|---|
AGENT_RECEIPTS_DATA_DIR | 数据目录路径 | ~/.agent-receipts |
AGENT_RECEIPTS_AGENT_ID | 默认 Agent ID | local-agent |
AGENT_RECEIPTS_ORG_ID | 组织 ID | local-org |
AGENT_RECEIPTS_ENVIRONMENT | 环境标签 | production |
RECEIPT_SIGNING_PRIVATE_KEY | Ed25519 私钥(十六进制) | 自动生成 |
存储:
~/.agent-receipts/
├── keys/
│ ├── private.key # Ed25519 private key (mode 0600)
│ └── public.key # Ed25519 public key
├── receipts.db # SQLite database (receipts + memory)
└── config.json # Agent and org configuration
软件包
| 软件包 | 描述 |
|---|---|
@agent-receipts/schema | Zod 模式和 TypeScript 类型 |
@agent-receipts/crypto | Ed25519 签名、验证和密钥管理 |
@agent-receipts/mcp-server | 提供 24 个工具的 MCP 服务 |
@agent-receipts/sdk | TypeScript SDK(21 个方法) |
@agent-receipts/cli | 命令行界面 |
@agent-receipts/dashboard | Mission Control 网页 UI |
路线图
- 云端层 — 团队仪表板、多 Agent 记忆同步、跨组织验证
- 语义检索 — 基于嵌入的记忆搜索
- 框架适配器 — 集成 LangChain、CrewAI、AutoGen
- 跨组织信任桥接 — 两个组织相互验证对方的 Agent 回执
许可证
MIT
由 Amin Suleiman 构建——致力于打造 ModQuote 和 Agent Receipts。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。