学习笔记 · Obsidian

Callbacks:遥测与防篡改审计

LangChainPython

两个路由解决不同问题

路由安装/认证解决的问题
agentsystems_notaryagentsystems-notary;raw storage 凭证、签名 key、可选模型 key原始 LLM payload 留在自有存储,同时把 SHA-256 hash + namespace/session/timestamp metadata 写入 Arweave 或 custodied WORM storage,以后重新 hash 验证是否被修改。
google_bigquerylangchain-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 或审计恢复流程。