2026年10月22日 1 分钟阅读

Agent 出事后如何还原现场?用 Mnestiq 构建可验证的运行证据

tinyash 0 条评论

日志能告诉你请求失败了,却未必能回答更棘手的问题:Agent 为什么把资料发给了陌生收件人?它先读到了什么内容?审批策略放行了哪一步?如果日志文件后来被改过,调查者又如何知道?Mnestiq 将自己定位为 AI Agent 的“飞行记录器”:记录模型调用、工具调用和网络连接,并为记录建立可验证的完整性链。它适合关注事件调查与证据保全的开发团队,而不是替代一般指标面板。

从事件记录到可追溯证据

Mnestiq 的核心不是单纯把更多文本写进日志,而是为事件补上调查所需的关联信息。记录可包含 run_id、step_id、Agent、操作者和沙箱标识;上下文还可标注为 system、user、tool_output、retrieved_doc 或 web 等来源。这样在复盘时,团队可以检查一个敏感参数是否先出现在不可信网页内容中,再进入工具调用。

仓库 README 描述的完整性机制由两部分组成:事件按规范化 JSON 形成 SHA-256 哈希链,周期性检查点再通过 Ed25519 签名的 Merkle 结构封存。修改、删除、插入或重排记录会导致验证失败。需要注意,这证明的是写入后的篡改可被发现,并不证明被攻陷的主机在写入时一定诚实。

两种接入路径

若 Agent 使用 Python 且可以修改代码,可用 Recorder 包装模型客户端和工具:

import anthropic
from mnestiq import FileSink, Recorder
from mnestiq.keys import load_private_key
from mnestiq.integrations.anthropic import instrument_anthropic

recorder = Recorder(
    FileSink("evidence.jsonl"),
    agent_id="support-bot",
    operator_id="helpdesk",
    signing_key=load_private_key("keys/signing.key"),
)
client = instrument_anthropic(anthropic.Anthropic(), recorder)

with recorder.run(effective_permissions={"email": "send"}):
    client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=1024,
        messages=[{"role": "user", "content": "请总结工单"}],
    )
recorder.close()

这是 README 展示的集成形态;实际使用时需根据所用 SDK、模型及权限策略配置。若不便改动 Agent,项目还提供代理路径,通过调整模型 API base URL,让代理记录调用。README 给出的 OpenAI 兼容示例为 OPENAI_BASE_URL=http://127.0.0.1:8787/openai/v1,并提供对应的 Anthropic 地址。代理看到的是经过它的模型请求;它不会凭空记录所有本地工具执行,因此网络流量、工具活动等覆盖范围应按官方代理文档和部署方式逐项确认。

验证、调查与脱敏

本地证据文件可用命令行检查和查看:

mnestiq verify evidence.jsonl --trusted-key keys/signing.pub
mnestiq inspect evidence.jsonl
mnestiq redact evidence.jsonl evidence.redacted.jsonl

verify 必须配合可信公钥使用。否则,攻击者若能重写整份文件并重新签名,验证者无法仅凭文件本身判断签名者身份。生产环境也不宜让 Agent 直接读取签名私钥:文档建议将签名交给独立账户下运行的 signer 服务,或使用 Azure Key Vault。项目还支持将提示、工具参数或输出脱敏后再交给审计者,同时保留记录链验证能力。

另一项边界同样重要:单独保存在本机的文件可能被截短到较早的检查点。项目建议把最新检查点另存到独立位置,再以 --head 验证,以便发现回滚;私钥若仍可被 Agent 读取,签名也无法提供可靠的密钥隔离。因此部署时要把可信公钥、签名密钥和外部检查点纳入同一套威胁模型。

适用场景与落地顺序

当团队需要解释敏感操作的上下文、将出站连接关联到具体 Agent 步骤,或为事故调查留存可验证记录时,这种工具值得评估。可以先在非生产环境运行示例,确认记录字段是否足够、密钥边界是否真实、代理模式是否覆盖现有客户端,再决定是否接入生产流量。

Mnestiq README 标注项目处于 v0.2 draft 阶段,因此应把它视为仍需评估的早期项目,而非已经验证成熟的审计平台。它不能替代权限最小化、审批、网络隔离或备份;更不能把“有签名日志”当作 Agent 安全性的证明。它提供的是一条更可审查的证据链:发生问题时,调查者有机会重建上下文,并检测事后修改。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。