ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

记忆变更实时推送:mem9 Webhook API 指南,签名校验与密钥轮换一篇搞定

记忆变更实时推送:mem9 Webhook API 指南,签名校验与密钥轮换一篇搞定 人工智能AI 应用Agent 记忆AI AgentRAG后端前端dsh-plugin【免费下载链接】mem9Unlimited memory for OpenClaw项目地址https://gitcode.com/gh_mirrors/me/mem9点击查看免费下载mem9 是为 AI Agent 提供持久记忆的开源服务而mem9 Webhook能让你的系统在记忆新增、删除或跨 Space 路由的瞬间收到实时推送无需反复轮询。这篇指南带你从零配置 Webhook 端点并完整讲解事件签名校验HMAC-SHA256与signing_secret密钥轮换的安全最佳实践。为什么需要 mem9 Webhook 实时推送传统做法是定时调用列表接口轮询记忆变化既浪费配额又存在延迟。mem9 Webhook 采用outbox 主动推送模式事件先落库、再异步投递到你的 HTTPS 端点失败自动指数退避重试。核心能力一览✅ 三类核心事件memory.added、memory.deleted、space_chain.fact_routed✅ 每次投递携带X-Mem9-Signature签名可防篡改、防伪造✅ 失败重试最长跨天级退避投递历史可随时查询✅ 一键测试webhook.test与密钥轮换密钥只在创建/轮换时返回一次完整设计可见 docs/webhooks-api-design.md。快速创建 Webhook 端点3 步完成配置Space 作用域下使用现有X-API-Key请求以下端点Space Chain 作用域改用chain_管理密钥和/v1alpha2/space-chains/{chainID}/webhooks前缀操作方法与路径创建POST /v1alpha2/mem9s/webhooks列表 / 详情GET /v1alpha2/mem9s/webhooks、GET .../{webhookID}更新 / 删除PATCH、DELETE .../{webhookID}测试 / 轮换密钥POST .../{webhookID}/test、POST .../{webhookID}/rotate-secret查询投递记录GET /v1alpha2/mem9s/webhook-deliveries创建请求体只需四个字段{ name: Production sync, url: https://example.com/mem9/webhook, enabled: true, events: [memory.added, memory.deleted] }三个关键注意点⚠️signing_secret只返回一次——创建和轮换密钥的响应中才会出现请务必当场保存列表/详情接口永远看不到它见 server/internal/webhook/types.go 中的EndpointSecretResponse。生产环境 URL 必须 HTTPS仅开发环境允许localhost/127.0.0.1的 HTTP。带 userinfo 的地址、私网字面量 IP 都会被拒绝。端点、密钥、事件、投递状态全部由 mem9 控制面数据库统一管理外部系统不应自行持久化投递状态。三类事件推送mem9 事件模型速览每个事件只存一份再扇出fan-out给所有订阅且启用的端点。事件外层信封结构如下{ id: evt_..., type: memory.added, api_version: 2026-06-08, created_at: 2026-06-08T00:00:00Z, scope: { type: tenant, tenant_id: ... }, data: {} }事件触发时机典型用途memory.added直接创建、置顶创建、智能摄取 ADD、Chain 路由写入成功同步到搜索索引、通知下游系统memory.deleted单条或批量删除成功清理本地缓存与副本space_chain.fact_routedSpace Chain 事实按策略路由到目标 Space 且写入成功配额拒绝或写入失败不触发审计跨 Space 数据流事件类型的权威定义在 server/internal/webhook/types.go投递 HTTP 请求的构造逻辑见 server/internal/webhook/dispatcher.go。投递失败怎么办自动重试与退避策略每次成功投递2xx 响应会标记为delivered失败则进入pending重试队列默认退避节奏1 分钟 → 5 分钟 → 30 分钟 → 2 小时 → 6 小时 → 之后每 24 小时直到达到最大尝试次数转为failed。你可以通过GET /v1alpha2/mem9s/webhook-deliveries查看每条投递的状态、尝试次数与最近一次 HTTP 状态码排查问题不迷路。Webhook 签名校验HMAC-SHA256 安全实践这是新手最容易踩坑的环节。mem9 每次投递会附带 4 个请求头请求头含义X-Mem9-Event-Id事件 ID可用于幂等去重X-Mem9-Event-Type事件类型X-Mem9-Timestamp投递时间戳Unix 秒X-Mem9-Signature签名值格式v1hex_hmac_sha256签名算法是HMAC-SHA256输入为「时间戳 事件 ID 原始请求体」HMAC-SHA256( signing_secret, timestamp.event_id.raw_body )实现可对照 server/internal/webhook/signer.go接收端按以下步骤校验校验X-Mem9-Timestamp与本机时间差在可接受范围内如 ±5 分钟防重放攻击用保存的signing_secret按上式重新计算 HMAC以恒定时间constant-time比较两个签名避免时序侧信道校验不通过直接返回 401/403不处理请求体。密钥轮换rotate-secret 安全操作指南 密钥泄露或团队轮岗时不要直接删端点重建会丢失投递历史应调用POST /v1alpha2/mem9s/webhooks/{webhookID}/rotate-secret响应中会返回一次性的新signing_secret旧密钥立即失效。推荐的操作顺序调用轮换接口立刻把新密钥写入你的密钥管理系统KMS/环境变量通知你的接收端更新校验用密钥若支持双密钥过渡期先让旧密钥再存活几秒调用POST .../{webhookID}/test触发一条webhook.test事件端到端验证签名链路正常在webhook-deliveries中确认新事件delivered轮换完成。路由层对轮换、测试等接口的手可参考 server/internal/handler/webhook.go事件服务层逻辑在 server/internal/webhook/service.go。Space 与 Space Chain两种作用域别混淆Space Webhook绑定租户的X-API-Key只观察该 Space 的事件Space Chain Webhook绑定chain_管理密钥观察链级事件如space_chain.fact_routed。一个容易忽略的细节当 Chain 路由写入在目标 Space 创建记忆时mem9 会同时发出目标 Space 的memory.added和链级事件路由元数据则以space_chain.fact_routed单独下发——所以下游做幂等时请以X-Mem9-Event-Id去重而不是记忆 ID。常见问题 FAQQ1收到重复事件重试机制可能导致同事件多次投递请用X-Mem9-Event-Id做幂等键。Q2本地开发能用 HTTP 吗可以。仅localhost、127.0.0.1、::1在非生产环境放行 HTTP生产一律 HTTPS。Q3忘记保存 signing_secret 还能找回吗不能。只能走rotate-secret生成新密钥并重新配置接收端。小结mem9 Webhook 用「事件落库 签名投递 自动退避重试」三件套把记忆变更的实时同步做成了开箱即用的能力。记住三板斧创建时存好一次性密钥、接收端恒定时间校验签名、轮换后测试事件验证链路。上手资料推荐延伸阅读 docs/webhooks-api-design.md。赞分享人工智能AI 应用Agent 记忆AI AgentRAG后端前端dsh-plugin【免费下载链接】mem9Unlimited memory for OpenClaw项目地址https://gitcode.com/gh_mirrors/me/mem9点击查看免费下载相关推荐OpenMed 审计报告签名密钥轮换指南基于调用方托管密钥的 HMAC-SHA256 离线签名与校验OpenMed 审计报告签名密钥轮换指南基于调用方托管密钥的 HMAC SHA256 离线签名与校验 OpenMed 为每次脱敏de identificat人工智能NLP医疗健康数据脱敏本地部署大模型AI 应用MCP 服务联邦学习Nango Webhook 签名密钥轮换实战基于 rotate-webhook-signing-key 运维手册的完整指南Nango Webhook 签名密钥轮换实战基于 rotate webhook signing key 运维手册的完整指南 在 Nango 中每个环境en后端API网关AI 应用Symfony Mailer Sendgrid Bridge 实战指南DSN 配置、定时发送、退订组与 Webhook 签名校验Symfony Mailer Sendgrid Bridge 实战指南DSN 配置、定时发送、退订组与 Webhook 签名校验 本篇技术指南围绕 Symfo后端Web框架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表