学习笔记 · Obsidian
Callbacks:遥测与防篡改审计
两个路由解决不同问题
| 路由 | 安装/认证 | 解决的问题 |
|---|---|---|
agentsystems_notary | agentsystems-notary;raw storage 凭证、签名 key、可选模型 key | 原始 LLM payload 留在自有存储,同时把 SHA-256 hash + namespace/session/timestamp metadata 写入 Arweave 或 custodied WORM storage,以后重新 hash 验证是否被修改。 |
google_bigquery | langchain-google-community[bigquery];GCP ADC/IAM | 把 LangChain/LangGraph event 写入 BigQuery,形成 trace、token、latency、tool/chain/retriever/agent lifecycle 分析和实时 dashboard。当前为 Preview,使用付费 Storage Write API。 |
AgentSystems Notary
Notary 的价值是 tamper evidence:审计时用原始 payload 重算 hash,与独立存储比对。匹配说明提供的内容与已锚定 hash 一致;它不证明模型回答正确、输入真实、日志一定完整,也不替代身份、授权或业务审计。
页面的 decentralized 示例把完整 payload 放 S3,把 hash 放 Arweave,并用本地 RSA key 签名。生产应:
- 私钥放 KMS/HSM,轮换和恢复流程可演练;页面明确提示丢 key 会失去 ownership proof。
- Arweave namespace 是公开信息,应使用匿名 ID,并安全保存 customer/agent/environment 的映射。
- raw prompt/response 可能含高度敏感数据;S3 使用加密、最小权限、object lock/retention、访问审计和删除政策。
- 记录 callback 投递失败、hash storage 延迟和缺号;不能让 notary 故障无指标地丢审计证据。
BigQuery Callback Handler
页面当前能力包括 LangGraph node 和 top-level invocation 事件、per-event typed views、additive schema upgrade、sub-agent attribution、token/cache/model/tool config、latency、allow/deny list、internal-chain noise filter、flush() 和 FastAPI dashboard。
运行边界:
- 先创建 dataset;handler 可自动建 events table/views,但生产建议用明确 DDL,按 date partition、event/agent/user cluster 管理。
flush(timeout)只排空队列,handler 仍可复用;进程最终退出调用shutdown()。- 内部 queue 默认最大 10,000,满时会丢新 event;必须监控 dropped count,不能把“应用成功”误当“审计已落库”。
- inline content 默认上限 500 KB;配置 GCS 时大内容 offload,否则截断/占位。
is_truncated和 object reference 要进入查询与告警。 - auto schema upgrade 只 additive add-column,不 drop/rename/retype;多 handler 共享 dataset 时 view prefix 需避免冲突。
IAM 页面要求 project-level BigQuery job user、table-level data editor;GCS offload 再加 object creator/viewer。实际生产可进一步拆建表/建 view 与仅写 event 的部署角色,避免运行账号长期拥有 DDL。
最关键的隐私陷阱
Handler 能记录 prompt、response、tool payload、session/user metadata 和 multimodal 内容。content_formatter 可用于 PII redaction,但文档明确:formatter 失败时会 warning 并回退到 raw content,确保不影响 agent。对隐私要求 fail-closed 的系统不能直接依赖这个默认行为,应在 callback 之前完成不可绕过的脱敏,或让日志管道拒绝写入并告警。
session_id、user_id、agent、custom tags 只存内部不可识别 ID;dashboard、views、signed GCS URL 和 conversational analytics 分别配置最小权限。日志 retention、location、查询费用、Storage Write 费用和 GCS 生命周期应一并治理。
可靠性与验证
- callback 不应改变业务结果,但 telemetry 丢失要有独立 SLO;高合规场景可能选择 fail-closed 或同步审计 outbox。
- 写入重试要有限且有 jitter,停机前 flush;网络分区/进程崩溃测试队列丢失窗口。
- 用 trace/span/parent、invocation/session/agent 维度核对事件闭合;过滤 internal chain 也要保留真实 root trace。
- Notary 与 BigQuery 可以互补:BigQuery 便于查询,独立 hash 用于检测篡改;仍需完整性序列、备份和访问审计。
验证边界
已完整读取两个官方 Markdown 路由及 BigQuery 配置/DDL/事件边界。没有真实写入 S3/Arweave/BigQuery,也没有验证队列、费用、KMS 或审计恢复流程。