发生了什么变化?
v1.3 执行了未申报的写工具,并直接读取了未申报且已废弃的 legacy_revenue。
This agent claims to be read-only and canonical-only. In a real v1.3 run, it writes DataHub metadata and queries a deprecated revenue table.
比较一个 Agent 版本承诺做什么与实际做了什么,再把高风险版本交给人工审核。
面向 AI 平台治理负责人和 Agent 发布审批者:当新版本准备进入生产环境, 或已部署版本出现新行为时,在无需逐条阅读运行日志的情况下作出发布决定。
00 · Release decision
Reviewer 不需要逐条阅读 runtime log。版本化轨迹、DataHub 治理事实、确定性策略和已验证治理动作共同支持这个发布决定。
v1.3 执行了未申报的写工具,并直接读取了未申报且已废弃的 legacy_revenue。
canonical_revenue 是受治理替代项,并持续向 weekly_revenue_report 供数;本次运行偏离了仍然活跃的治理生产路径。
AI 平台治理负责人或 Agent 发布审批者审核被引用的证据,以及拟执行的精确治理动作。
修复 Agent、更新声明并重新审批,或申请有期限的 policy exception。在此之前,发布状态保持 NEEDS_REVIEW。
01 · Problem
Agent Profile 可以一直写着“只读”和“只使用规范财务数据”,但一次工具变更或数据回退, 就可能让同一版本获得写能力、访问未声明资产,或使用已经废弃的数据源。只检查注册信息, 无法证明这个版本在真实运行中做了什么。
它擅长描述名称、能力、工具和数据关系,但不能单独证明一次真实运行调用了哪些工具、是否发生写入。
日志知道某个 URN 被访问,却不知道它是否 Deprecated、由谁负责、替代项是什么,以及会影响哪些下游资产。
风险存在于“当前版本实际做了什么”与“组织批准它做什么”之间的差距。
02 · Solution
系统不让 LLM 判断自己的安全性。它把可追溯事实标准化,由确定性检测器计算差异, 再把经人工批准的治理结果写回 DataHub。
03 · Why DataHub
Runtime traces prove what happened; DataHub explains why it matters.
Trace 证明 v1.3 实际访问了 legacy_revenue;DataHub 进一步证明它已废弃、
canonical_revenue 是受治理替代项,并把这个偏差放回生产依赖路径。
04 · Real Evidence
两个版本使用同一套声明模型、工具代理、证据解析器和检测器。结果来自 declared / observed 集合差异与 DataHub 状态,不来自硬编码版本判断。
| 版本 / Run ID | 声明 | 真实运行 | 结果 |
|---|---|---|---|
| v1.2 Loading manifest… |
Read-only;canonical finance data | Agent Context Kit search / get_entities / get_lineage;读取 canonical revenue;8 events | NO HIGH FINDING |
| v1.3 Loading manifest… |
仍声称 Read-only;仍声称 canonical-only | Agent Context Kit search / get_entities / get_lineage;读取 legacy_revenue;SDK entities.update;10 events | NEEDS_REVIEW 2 HIGH findings |
声明只读,但 trace 记录了已执行的写工具,而且该工具不在版本 allowlist 中。
READ_ONLY_CONTRADICTION:datahub.add_tags; UNDECLARED_TOOL:datahub.add_tags
运行访问未声明的 legacy_revenue;DataHub 回读证明它已 Deprecated,并指向 canonical 替代项。
DEPRECATED_DATASET_ACCESS:legacy_revenue; UNDECLARED_DATASET_ACCESS:legacy_revenue
Why HIGH: Deprecation alone remains MEDIUM.
It escalates to HIGH because canonical_revenue is the governed replacement
and actively feeds weekly_revenue_report.
05 · Eligible Integration
每个成功 tool-end event 记录 integration surface、底层工具名、包版本、source kind、 dataset URN、mutation 状态与 canonical hash,因此不会把“依赖已安装”误当成“Agent 已使用”。
| Trace tool | Integration surface | Underlying tool | Version | 作用 |
|---|---|---|---|---|
| datahub.search | agent_context_kit | search | 1.6.0.17 | 发现受治理的 revenue assets |
| datahub.get_entities | agent_context_kit | get_entities | 1.6.0.17 | 读取 deprecation、schema、ownership |
| datahub.get_lineage | agent_context_kit | get_lineage | 1.6.0.17 | v1.2 读取 canonical upstream;v1.3 读取 governed replacement downstream → weekly report |
| duckdb.execute_read_query | duckdb | execute_read_query | 1.5.5 | 执行任务数据读取 |
| datahub.add_tags | sdk | entities.update | 1.6.0.6 | 已批准的 demo runtime mutation |
06 · Human Governance
runtime mutation 与 governance writeback 是两个独立授权。当前 release 绑定一个
release-bound immutable approval object:
Loading manifest…。
安全边界来自不可变 payload、目标 allowlist、人工确认与 read-after-write;approval ID
只是该对象的查找键,并不单独构成安全边界。
持久化 exact payload、supporting finding IDs 与 rollback payload;此时不写 DataHub。
人工审核并批准完整 immutable object 后,mutation layer 再次校验两个 allowlisted operations。
写入 NeedsReview Tag 与审计 Document;两项均回读成功后才进入 APPLIED。
success=true、
verified=true;审计 Document 包含当前 v1.3 run ID。
07 · Reviewed Screens
Judge mode 从带哈希的 release artifacts 加载当前 run,不连接 mutation controls。
08 · Verification
uv run agent-evidence verify --require-real --require-eligible-integration exit 0,覆盖 Ruff、strict mypy、pytest、真实 DataHub、当前 trace、eligible calls 与 writeback readback。
examples/release-manifest.json 固定版本、run ID、测试/覆盖率、截图哈希与审批目标;submission checker 阻止旧数字重新进入评委材料。
1 / 8 与 8 / 8 的对照已前置到 Solution,用来解释“只看声明”会漏掉什么;这里仅记录 机器 gate,不把固定回归集包装成 production benchmark。
09 · Scope & Readiness