MEMORY-GATEWAY-REPORT · SKILL · V1.0
记忆网关签名上报客户端
封装元极恒一记忆网关 /api/report/truth 的正确鉴权与上报,解决 401 Unauthorized。含 HMAC-SHA256 签名、真值上报、云端查询、写锁自动重试。
鉴权机制 已打通 · 勿再踩坑
| 头 | 值 |
X-DID | DID-BR-000002 |
X-Signature | HMAC-SHA256 请求签名 |
X-Signature-Timestamp | 当前 Unix 时间戳(±300s 窗口) |
签名密钥 = PBKDF2-HMAC-SHA256(passphrase, salt=b'yuanji-signing-salt', 100000, dklen=32)
签名消息 = f"{METHOD}|{PATH}|{timestamp}|{sha256('')}"
# 关键:gateway 调 guard_request 未传 body → 用空 body hash
X-Signature = HMAC-SHA256(密钥, 签名消息)
✅ 正确签名 → HTTP 200 真值写入成功(本会话已多次验证)
命令速查 纯标准库
# 上报单条真值
python3 scripts/memory_gateway_client.py report --truth-id TRUTH-001 \
--category meta_rule --content "真值内容" --source session-test
# 查询云端真值(X-DID 单头)
python3 scripts/memory_gateway_client.py query --q "关键词" --limit 5
# 签名密钥自检 / 健康检测
python3 scripts/memory_gateway_client.py secret
python3 scripts/memory_gateway_client.py health
下载 Skill 源码包 (ZIP)
踩坑记录 避免重复
| 错误 | 根因 | 解法 |
401 signature_required | 缺签名 | 带 X-Signature + X-Signature-Timestamp |
401 signature_mismatch | 用请求体 hash 签名 | 改用空 body hash(guard_request 未传 body) |
database is locked | 云端 directive_consumer 并发写锁 | 自动重试(脚本已内置) |
⚠️ 前置:密钥存云端(/root/zongyuan-yuanji/config/.yuanji_passphrase),需 SSH 可达,或用环境变量 MEMORY_GATEWAY_PASSPHRASE。
memory-gateway-report · 记忆网关签名上报客户端 V1.0 · Ω₀⊂⊙∞⊂Ω · DID-BR-000002