Data · 数据工程
1. 介绍
1.1 背景
数据工程是 AI Harness 落地最早、也最容易暴露短板的方向之一。一方面,AI 辅助编写数据管道代码已经成为普遍实践——有行业报告称 84.2% 的 Airflow 用户使用 AI 辅助编写 Airflow 代码(该数字来自二手转述,标注 );另一方面,同一批报告给出了一组刺眼的反差数字:仅 9% 的数据工程师对通用 AI 工具生成的 DAG 表示满意,首要抱怨是「幻觉率」与「语法过时」。
这组数字揭示的不是一个模型能力问题,而是一个上下文与验证问题:通用模型缺少项目 DAG、缺少 schema、缺少执行环境信息、缺少既有约定,也缺少一个能在合并前把错误挡住的评估层。这正是 AI Harness 在数据工程方向的用武之地。
行业侧的治理基线也在同步抬升。DAMA 数据管理知识体系指南(DAMA-DMBOK)定义了数据管理 11 大知识领域,其中与数据工程最直接相关的是数据架构、数据建模与设计、数据集成与互操作、元数据管理、数据质量管理、参考数据与主数据。《数据管理能力成熟度评估模型》(GB/T 36073-2018) 定义了 8 个能力域与 5 级成熟度;2025 年发布、2026-07-01 实施的 DCMM 2.0 (GB/T 36073-2025) 将能力域扩展为 9 个,新增「数据资产」能力域,能力项由 28 个增至 33 个(部分细节待核实,见信息缺口声明)。
1.2 定义
数据工程方向的 AI Harness,是指围绕数据采集、清洗、建模、血缘与质量门禁等环节,为智能体提供上下文装配、工具契约、编排复用、工件记忆、可执行验证与治理约束的工程承载层。
它不改变数据工程本身的方法论(维度建模、ELT、声明式转换、测试驱动的数据质量),而是让智能体能够在这些既有方法论之内工作,而不是绕过它们。
边界上需要澄清两点:
- 数据工程 Harness 不是「自动生成管道的机器人」。它的产出物是可审查的变更(模型代码、测试用例、文档、血缘更新),最终合并仍走 PR + CI。
- 数据工程 Harness 不替代 Airflow、dbt、Spark 等引擎。它承担的是「让智能体正确理解并使用这些引擎」的那一层。
1.3 在 AI Harness 体系中的定位
图 1-1|数据工程六层能力模型:核心在 L1 上下文与 L6 治理
数据来源:基于本文分析绘制的示意图。
数据工程方向在六层能力模型中的侧重点如下(该侧重分析基于公开案例事实,非标准):
| 层 | 侧重 | 数据工程方向的具体内容 |
|---|---|---|
| L1 上下文工程层 | ★★★★★ | 上下文 = 项目 DAG + schema + 既有模型约定 + 血缘 + 语义层 + 数据剖析结果 |
| L2 工具与执行层 | ★★★★ | dbt MCP Server、Airflow、Spark、Great Expectations / Soda;所有写操作走 PR + CI |
| L3 编排与控制层 | ★★★★★ | DAG 是数据工程的原生形态,Harness 应复用 Airflow/dbt 而非重造编排 |
| L4 记忆与状态层 | ★★★ | 数据快照、模型版本、运行历史、回填记录 |
| L5 评估与观测层 | ★★★★ | 可执行回归 + 数据质量门禁 + 血缘影响分析 |
| L6 治理与安全层 | ★★★★★ | 管道级 PII 标记、数据分级、RLS/CLS、合规检查内建于编排层、成本护栏 |
核心在 L1 与 L6。
L1 是核心,因为「仅 9% 满意」这一数据点的根因正是上下文缺失:模型不知道项目里有哪些模型、彼此如何依赖、执行环境是什么、既有命名与分层约定如何。血缘与数据质量为上下文提供可信语料——没有血缘,智能体无法判断一次修改会影响谁;没有质量门禁,智能体无法判断自己的修改是否安全。
L6 是核心,因为数据工程是唯一一个「错误产出会直接污染下游所有消费者」的方向。一条算错的管道会安静地向报表、模型、财务系统输送错误数字,且不会报错。数据分级与脱敏因此必须是硬约束,由 Harness 层的权限系统强制,而非由模型自我约束。
瓶颈层:L1。 当前的失败绝大多数发生在上下文装配阶段——模型拿不到 schema、拿不到血缘、拿不到执行环境假设,于是生成语法合法但语义错误的代码。相比之下 L5 的工具(Great Expectations、dbt test)已经相当成熟,缺的是把它们与智能体流程接成闭环。
1.4 价值与瓶颈
价值体现在三处:
- 降低尝试成本:把「写第一个版本」的成本压到接近零,让工程师把精力放在设计与评审上。
- 把口头约定变成可执行断言:血缘、粒度、唯一性、新鲜度这些过去靠人记住的东西,变成智能体每次都必须检查的门禁。
- 缩短故障定位时间:下游失败时,智能体可沿血缘自动回溯到根因模型,而非人工逐层排查。
瓶颈同样有三处:
- 静默错误:见 3.3 节案例,常规检查(行数、新鲜度、非空)无法捕获粒度与口径错误。
- 上下文规模:企业数仓的表与列数量远超上下文预算,必须做检索式 schema linking。
- API 漂移:数据工程工具的版本差异大(如 Airflow 从经典 operator 到 TaskFlow
@task装饰器),模型训练数据往往滞后于当前版本,导致「语法过时」类抱怨。
2. 名词解释
| 术语 | 英文 / 缩写 | 释义 |
|---|---|---|
| DAG | Directed Acyclic Graph | 有向无环图。数据管道中任务依赖关系的表达形式,Airflow、dbt 等工具的核心抽象 |
| 编排器 | Orchestrator | 负责按依赖顺序调度任务、处理重试与告警的系统,如 Apache Airflow |
| dbt | data build tool | 以 SQL + YAML 实现声明式数据转换的工具,把模型、测试与文档统一在一个项目内 |
| 语义层 | Semantic Layer | 集中定义指标、维度与粒度的抽象层,使不同消费者得到一致的口径 |
| 数据血缘 | Data Lineage | 数据从源到消费端的加工链路记录,是变更影响分析与可信度的基石 |
| OpenLineage | OpenLineage | Linux Foundation 下设的开放血缘规范,定义 Job / Run / Dataset 事件模型与 Facet 扩展机制,参考实现为 Marquez |
| 列级血缘 | Column-level Lineage | 精确到字段的血缘,用于判断某个指标字段的上游来源 |
| 数据质量维度 | Data Quality Dimensions | ISO 8000-8:2015 提出的句法质量、语义质量、语用质量三维度,配套 8000-120/130/140 的溯源 / 准确性 / 完整性 |
| 数据契约 | Data Contract | 生产方与消费方就 schema、语义、服务水平达成的显式约定,通常以可执行断言表达 |
| 粒度 | Grain | 一行数据所代表的业务实体单位(如每订单一行)。粒度不匹配是重复计数的主要成因 |
| 扇出 | Fan-out | 关联操作导致行数非预期膨胀,通常因关联键不唯一引起 |
| 幂等性 | Idempotency | 同一操作重复执行结果一致,是回填与重试安全的前提 |
| 回填 | Backfill | 对历史分区重新计算并写入,常用于模型逻辑修正后 |
| 新鲜度 | Freshness | 数据产出时间与当前时间的差距,常用于管道健康度监控 |
| 增量模型 | Incremental Model | 只处理新增或变化数据的模型,用于降低成本;需定义唯一键与增量策略 |
| 缓慢变化维 | Slowly Changing Dimension, SCD | 记录维度属性历史变化的建模方法 |
| 数据分级 | Data Classification | 按敏感程度划分数据等级,决定访问、脱敏与共享策略 |
| PII | Personally Identifiable Information | 个人身份信息,处理受《个人信息保护法》等法规约束 |
| RLS / CLS | Row-Level Security / Column-Level Security | 行级 / 列级安全,在数据访问层强制生效的权限机制 |
| MTTD / MTTR | Mean Time To Detect / Mean Time To Repair | 平均检测时间 / 平均修复时间,血缘与质量工程的常用度量 |
3. 案例
3.1 案例一:智能体编写 Airflow DAG 的期望与现实落差
3.1.1 背景
数据工程是 AI 辅助编码渗透最快的领域之一。据行业报告转述:84.2% 的 Airflow 用户已在使用 AI 辅助编写 Airflow 代码;32% 的组织已有 GenAI/MLOps 用例进入生产,同比提升 5 个百分点;数据团队中 72% 将 AI 辅助编码列为优先事项;数据信任度从 66% 升至 83%(以上数字均来自二手转述,来源为 dbt Labs 与 Astronomer 的年度报告,均标注 )。
但同一批报告给出了一个强烈的反直觉数据:仅 9% 的数据工程师对通用 AI 工具生成的 DAG 感到满意,首要抱怨是幻觉率与语法过时。
3.1.2 方案
对这一落差的根因分析指向三个可干预点,恰好对应 Harness 的三层:
- L1 上下文缺失:模型不了解项目的既有模型、依赖关系与命名约定。对策是把项目 DAG、schema 与既有范例装配进上下文,而非依赖模型的通用知识。
- L2 执行环境未知:模型不知道目标环境用的是 KubernetesPodOperator 还是 DockerOperator、XCom 后端是否自定义、Airflow 版本支持哪种 API 风格。对策是把环境假设显式化,并通过工具契约暴露。
- API 漂移:Airflow operator API 跨版本变化大(经典 operator → TaskFlow
@task装饰器),通用模型训练数据中相关权重不足。对策是把版本化的 API 文档与项目内范例作为检索语料,并对生成结果做版本一致性校验。
同时,dbt 侧的产品演进提供了对照样本:dbt Copilot 基于项目 DAG、schema 定义与既有模型约定生成 SQL 模型、测试与文档;dbt Fusion 引擎以 Rust 重写并原生理解 SQL,解析速度约提升 30 倍,目的之一是让模型能实时获取项目富元数据(该加速比为厂商自报,标注 )。
3.1.3 效果
这组数字本身即是效果证据:AI 辅助编码的高渗透率(84.2%)与低满意度(9%)并存,说明价值不在于「模型能不能写」,而在于「Harness 有没有为模型提供正确的上下文与验证」。
行业侧的信任度指标给出了改善方向:数据信任度从 66% 升至 83%,与「把血缘、质量检查与变更治理接成闭环」的实践在时间上吻合。可推理的结论是:数据工程智能体的价值曲线由上下文完备性决定,而非由模型能力单独决定。
3.2 案例二:dbt MCP Server 驱动的血缘闭环分诊
3.2.1 背景
数据平台故障的典型处理流程是人工的:下游看板异常 → 有人在群里问 → 数据工程师登录调度器 → 逐层往上找 → 定位失败模型 → 跑测试 → 判断影响范围。这一过程耗时且高度依赖个人经验。
与此同时,MCP 正在成为数据工具的标准绑定层。dbt MCP Server 把 dbt 项目暴露为可查询的 API:列出模型、读取血缘、按 selector 触发 dbt run、获取测试结果。
3.2.2 方案
把 MCP 工具契约与血缘、质量检查接成一个自动闭环:
- 触发:下游 DAG 失败或看板数据异常事件进入分诊队列。
- 回溯:智能体通过 dbt MCP Server 读取血缘,沿依赖链向上定位到失败或异常的模型。
- 定向验证:对定位到的模型执行定向
dbt test,而不是重跑整个项目,控制成本。 - 影响分析:沿血缘向下游推导受影响的数据产品与消费者。
- 分诊输出:在协作工具中生成评论,包含根因模型、失败测试、影响范围与建议修复方向。
- 人在回路:变更仍需 PR + CI,智能体只产出分诊结论与修复建议。
并行的产品化能力还包括:dbt Semantic Layer 以 YAML 集中定义 metrics / dimensions / grain;dbt Developer Agent(2026-05-06 preview)支持以自然语言描述变更,基于血缘、语义层与治理构建、重构、测试并文档化模型,且每次变更可审计。
3.2.3 效果
该闭环把故障分诊从「依赖经验的人工排查」变为「沿血缘的确定性回溯 + 定向验证」。其价值不体现在单次提速,而体现在三点:
- 影响范围可计算:有血缘才能回答「这次改动影响谁」,这是变更审批的前提。
- 验证成本可控:定向测试替代全量重跑,直接降低回污与成本。
- 可审计:dbt Developer Agent 的每次变更可审计,满足了治理侧对「AI 改了什么」的追问。
需要说明:该闭环的具体效益数字(故障定位时间、成本节省)在本次检索中未获得可靠公开数据,此处只描述机制,不给量化结论。
3.3 案例三:静默失败——管道不会崩溃,只会流利地撒谎
3.3.1 背景
数据工程智能体有一个被广泛引用的失败模式描述:一条崩溃的管道会告诉你它坏了;一条算错的管道什么也不会告诉你。
一个公开报道的具体场景是:智能体重构 dbt staging 模型时,对 promotions 表做了 left join。该表对每个订单存在多行(每个促销码一行),join 后粒度发生扇出,导致 sum(order_total) 重复计数。期间所有常规检查都通过了——测试通过、新鲜度正常、行数正常。直到 21 天后被财务发现。
该案例来自公开叙述性博客,为失败模式示例,不具统计代表性,不得换算为发生率;但它刻画了一类真实且高代价的工程风险。
3.3.2 方案
针对这类静默错误,Harness 侧应当增设的防线不是「更多的行数检查」,而是语义层的断言:
| 防线 | 检查内容 | 能捕获的错误 |
|---|---|---|
| 粒度断言 | 声明模型 grain,断言主键唯一 | 扇出、重复计数 |
| 关联前置检查 | join 前校验关联键在右表唯一 | 一对多导致的扇出 |
| 独立复算 | 用不共享上游的路径重算关键指标 | 口径与逻辑错误 |
| 语义回归集 | 关键指标的已验证查询集,每次变更回归 | 口径漂移 |
| 口径所有权 | 指标定义变更须经所有权人确认 | 未授权的口径变更 |
| 血缘影响分析 | 变更时自动列出下游消费者 | 影响范围失控 |
同时,数据质量工程本身应建立四类度量:覆盖率(coverage)、血缘边新鲜度(freshness of edges)、MTTD(平均检测时间)、MTTR(平均修复时间)。
3.3.3 效果
该案例的直接效果是暴露了一类结构性盲区:常规的数据质量检查(非空、唯一、行数、新鲜度)对口径错误完全无效。
由此得出的可执行结论有二:
- 粒度与唯一性断言必须前置到 join 之前,而不是等到聚合之后发现数字不对。
- 关键指标必须有独立复算路径。同一路径内的自我验证无法发现系统性偏差,只有不共享上游的复算才能暴露问题。
这一结论也解释了为什么数据工程方向对 L1 + L6 的依赖最重:血缘(L1 语料)回答「改动会影响谁」,分级与审批(L6)回答「谁有权改」。
4. 实践标准
4.1 AGENTS.md 规范
标准来源声明:以下为本文提出的数据工程方向 AGENTS.md 标准建议稿。截至目前,不存在由官方机构、行业协会或标准组织发布的数据科学 / 数据工程方向 AGENTS.md 规范原文,AGENTS.md 属社区约定而非标准。本建议稿继承数据科学组级 AGENTS.md 的全部条款,并针对数据工程方向收紧与扩展。
# AGENTS.md —— 数据工程(Data Engineering)
> 继承数据科学组级 AGENTS.md 全部条款。本节为数据工程方向的收紧与扩展。
> 本文件为标准建议稿,业界尚无官方标准版本。
## 角色与边界
- 本 Agent 是**数据管道的协作者**:可以读元数据、写代码、跑测试、做分诊分析。
- 不可以直接执行的操作:生产环境 DDL、直接写入生产表、绕过 CI 合并、修改数据分级、删除历史分区。
- 所有变更的合法出口只有一条:**分支 → PR → CI → 人工评审 → 合并**。
- 指标口径的最终裁定权归业务所有权人,不归本 Agent。
## 环境假设
- 编排器:Apache Airflow(须明确版本与 API 风格:经典 operator 还是 TaskFlow)
- 转换层:dbt(须明确版本、adapter 与目标数仓方言)
- 计算引擎:Spark / 数仓原生 SQL(须明确方言:BigQuery / Snowflake / PostgreSQL / DuckDB 等)
- 质量框架:Great Expectations 或 Soda(须明确断言存放位置与执行入口)
- 元数据 / 血缘:OpenLineage 兼容后端(Marquez / DataHub / OpenMetadata / Atlas)
- **以上任一项未知时,先问,不要猜**。版本未知时禁止生成依赖版本特性的代码。
## 上下文加载顺序(Context Budget)
1. 任务与验收口径(必须)
2. 目标模型的 schema、grain 声明与既有测试(必须)
3. 血缘:上游依赖 + 下游消费者(**写操作前必须**)
4. 项目 DAG 与分层约定(staging / intermediate / marts 等)
5. 语义层中的指标与维度定义(涉及指标时必须)
6. 同类既有模型代码(命名、物化策略、增量策略的范例)
7. 数据剖析结果:行数、空值率、基数、主键唯一性
8. 执行环境声明:operator 类型、XCom 后端、资源与配额
9. 数据分级与 PII 字段清单(必须,决定脱敏与可见性)
- 表数量多时走**检索式 schema linking**,禁止把整个 warehouse 的 schema 一次性注入。
## 工具契约
| 工具 | 用途 | 模式 | 约束 |
|---|---|---|---|
| dbt MCP Server | 列模型、读血缘、按 selector 触发 run、取测试结果 | 读 + 受限写 | 写操作限定在指定 selector 与 dev target |
| 元数据服务 | 查询表/列血缘、所有权、分级标记 | 只读 | 不得修改分级 |
| 数仓连接 | 执行查询、剖析数据、干跑 EXPLAIN | 只读 | 默认只读角色;成本预估超阈值须中止 |
| 质量框架 | 执行断言集 | 读 + 执行 | 不得静默禁用失败断言 |
| 编排器 | 查看 DAG 与运行历史、触发重跑 | 读 + 受限写 | 不得修改生产 DAG 定义 |
| 版本控制 | 建分支、提 PR、读 CI 结果 | 受限写 | 禁止直接推送到主分支 |
- 工具参数必须做模式校验;参数格式错误在调用前拦截,**不得靠重试碰运气**。
- 每个工具调用记录时间、参数摘要、返回摘要、耗时与成本。
## 数据源契约
- 每个输入表必须有:唯一标识、负责人、刷新频率、grain 声明、分级标记。
- 数据引用必须带版本:快照时间、分区、commit hash 或数据集版本号,四者至少其一。
- **join 前必须校验关联键唯一性**;不唯一时先聚合或改用其他关联策略,禁止直接 join。
- 缺失值与异常值处理方式必须显式声明,禁止静默丢弃。
- 跨源关联前确认主键与粒度;粒度不匹配禁止 join。
- 临时数据源必须标注为临时,并在产出物中声明。
## 任务执行流程(SOP)
1. 澄清:复述任务,确认目标模型、grain 与验收口径。
2. 盘点:列出将读写的表、依赖的上游、受影响的下游、所需权限。
3. 影响分析:通过血缘计算 blast radius;影响关键数据产品时先升级。
4. 设计:给出模型结构、物化与增量策略、测试清单、回填方案。
5. 计划卡点:方案经人确认后进入执行。
6. 探查:先剖析数据(行数、空值、基数、唯一性),再动手写模型。
7. 实现:写代码 + 测试 + 文档,遵循项目既有命名与分层约定。
8. 验证:在 dev target 执行 dbt build;执行质量断言;执行语义回归集。
9. 提交:建分支、提 PR,附影响分析与验证结果。
10. 交付:合并后观察首轮运行结果与下游新鲜度;归档变更记录。
## 验证与证据要求
- 每一条数值结论必须来自**执行结果**,禁止由模型凭记忆生成。
- 必须执行的四类断言:
- **grain 断言**:声明并断言主键唯一,捕获扇出与重复计数
- **关联断言**:join 键在右表唯一的检查前置到 join 之前
- **新鲜度与行数断言**:监控但不作为正确性的唯一依据
- **语义回归集**:关键指标的已验证查询,每次变更回归
- **关键指标必须有独立复算路径**:用不共享上游的方式重算,比对差值并说明差异原因。
- 主动报告反例:若验证中发现与预期不符的数据,必须报告,不得只呈现支持性结果。
- 结论分「已验证 / 部分验证 / 未验证」三档列出。
## 失败与升级策略
- 同类失败重试不超过 2 次;第 3 次改变策略或升级。
- 工具参数格式错误:停止重试,检查模式定义并修正调用构造。
- 血缘缺失导致无法评估影响范围:**停止写操作**,先补血缘或走人工评估。
- 回填规模超预期:暂停,报告行数、成本与预计时长,获批后继续。
- 质量断言失败:不得禁用断言或放宽阈值以求得通过;报告失败项与根因。
- 出现 PII 或分级不明确的字段:停止处理,升级给数据负责人。
- 升级时携带:任务、已完成步骤、失败点、已尝试方案、blast radius、建议下一步。
## 安全与合规红线
- 不得绕过 CI、审批、权限与配额。
- 不得修改或降低数据分级;不得将高分级数据写入低分级目标。
- 不得在无人评审的情况下执行生产写操作或 DDL。
- 不得在生成物(日志、缓存、PR 描述、图表)中泄漏敏感字段值。
- 不得为求通过而禁用、删除或放宽质量断言。
- 不得伪造数据来源、血缘关系或测试结果。
- 涉及个人信息、跨境传输的管道变更,须确认已完成相应审批。
## 禁止事项
- 禁止在未知 Airflow 版本与 API 风格时生成 DAG 代码。
- 禁止在未确认 grain 的情况下做 join 或聚合。
- 禁止把整个 warehouse schema 一次性注入上下文。
- 禁止生成不可回滚的批量变更;回填必须可分批、可中止。
- 禁止用「大概」「通常」替代具体的行数、成本与时间数字。
- 禁止把未执行的推测当作验证结果报告。
- 禁止跨方向复制通用分析模板;数据工程的断言体系与科学计算、HPC 有实质差异。
## 输出格式
- 结论先行 → 证据(数据源 + 版本 + 代码 + 执行记录)→ 不确定性 → 建议。
- 变更产出统一包含:模型代码、测试、文档、影响分析、回填方案、验证结果。
- 数值带单位;范围用「~」连接;百分比数值与 % 之间无空格。
- 代码与配置使用带语言标记的代码块。
- 血缘与影响范围用表格列出:下游对象、负责人、影响类型。
## 评估与自检
- [ ] 目标模型的 grain 已声明并断言唯一
- [ ] 所有 join 的关联键唯一性已前置校验
- [ ] 上游依赖与下游影响已通过血缘列出
- [ ] 数据分级已确认,PII 字段已按策略处理
- [ ] Airflow 版本与 API 风格已确认,生成代码与之匹配
- [ ] dbt build 在 dev target 通过,测试无跳过
- [ ] 语义回归集已执行,关键指标与基准一致
- [ ] 关键指标已有独立复算,差异已说明
- [ ] 回填方案可分批、可中止,成本已预估
- [ ] 变更已走 PR + CI,人工评审记录已留痕 4.2 SKILL.md 规范
标准来源声明:以下为本文提出的数据工程方向 SKILL.md 标准建议稿,同样不存在官方标准原文。其数据质量部分以 ISO 8000 系列为依据,流程部分为工程建议。
---
name: data-pipeline-change
description: 数据管道变更的标准执行流程与验收基线。适用于新建或重构 dbt 模型、编写或修改 Airflow DAG、执行回填、处理管道故障分诊等任务。触发场景:任何会改变数据管道产出内容的智能体任务。
version: 1.0
created: 2026-09-12
---
# 数据管道变更标准流程
## 适用场景
- 新建、重构或删除 dbt 模型;调整物化与增量策略。
- 编写或修改 Airflow DAG;调整调度、依赖与重试策略。
- 执行历史数据回填。
- 管道故障的分诊与根因定位。
- 不适用场景:一次性即席查询、不涉及管道变更的只读分析。
## 前置条件
- 目标环境已确认:Airflow 版本与 API 风格、dbt 版本与 adapter、数仓方言。
- 目标模型的 grain 已声明;上游表的 grain 已知。
- 血缘可查;若血缘缺失,先补血缘或走人工影响评估。
- 数据分级与 PII 字段清单可用。
- 质量框架可用且断言集可执行。
- 回填成本与时长可预估;存在预算上限。
## 输入
| 输入项 | 必需 | 说明 |
|---|---|---|
| 变更需求与验收口径 | 是 | 业务目标、目标模型、期望口径 |
| 目标模型 grain 声明 | 是 | 一行代表什么业务实体 |
| 上游表清单与 grain | 是 | 含关联键与唯一性判断 |
| 影响范围约束 | 是 | 可影响的下游、禁止影响的关键资产 |
| 成本与时间预算 | 是 | 回填规模上限、允许的执行窗口 |
| 既有范例 | 否 | 项目内同类模型代码与测试 |
## 输出
| 输出项 | 必需 | 说明 |
|---|---|---|
| 变更代码 | 是 | 模型 / DAG 代码,遵循项目约定 |
| 测试与断言 | 是 | grain、关联、唯一性、新鲜度、语义回归 |
| 文档 | 是 | 模型说明、字段口径、依赖关系 |
| 影响分析 | 是 | 上游依赖 + 下游消费者 + blast radius |
| 验证结果 | 是 | dbt build 结果、断言结果、独立复算差值 |
| 回填方案 | 否 | 分批策略、中止条件、成本预估 |
## 执行步骤
1. **确认环境与版本**
读取 Airflow 版本与 API 风格、dbt 版本与 adapter、数仓方言;任一未知则先询问,禁止猜测。
2. **声明 grain 与关系**
声明目标模型 grain;列出上游表及其 grain;标注所有 join 键并在探查中验证其唯一性。
3. **血缘与影响分析**
通过元数据服务读取上下游血缘;列出下游消费者与负责人;影响关键数据产品时先升级并等待确认。
4. **数据探查**
在只读角色下执行剖析:行数、空值率、基数、主键唯一性、分区分布;对 join 键执行唯一性检查并记录结果。
5. **设计变更方案**
给出模型结构、物化策略、增量策略、测试清单、回填方案与回滚方案。
6. **计划卡点确认**
方案与影响分析提交人工确认;未确认不进入实现。
7. **实现与本地验证**
在 dev target 编写模型、测试与文档;执行 `dbt build`;修复失败项,**不得通过禁用断言求通过**。
8. **语义回归与独立复算**
执行关键指标的语义回归集;用不共享上游的路径独立复算关键指标,比对并说明差值。
9. **提交与评审**
建分支、提 PR,附影响分析、验证结果、回填方案;等待 CI 与人工评审。
10. **上线观察与归档**
合并后观察首轮运行与下游新鲜度;记录变更、成本与遗留问题;更新血缘与文档。
## 质量标准(DoD)
数据质量(依据 ISO 8000-8:2015 三维度与 8000-120/130/140):
- [ ] 句法质量:字段类型、编码与结构符合声明规范,已自动校验
- [ ] 语义质量:字段含义与语义层 / 数据字典一致,已对照校验
- [ ] 语用质量:产出可被下游按预期使用,已与至少一名下游消费者确认
- [ ] 溯源:每个字段可追溯到上游来源与加工过程
- [ ] 准确性:关键指标经独立复算,差值已说明
- [ ] 完整性:覆盖范围与缺失情况已声明,无静默丢弃
管道与变更:
- [ ] grain 已声明且主键唯一断言通过
- [ ] 所有 join 键唯一性已前置校验
- [ ] dbt build 在 dev target 通过,无跳过的测试
- [ ] 语义回归集全通过
- [ ] 回填可分批、可中止,成本已预估且在预算内
- [ ] 回滚方案可执行
- [ ] 文档与血缘已同步更新
治理:
- [ ] 数据分级已确认,PII 按策略脱敏
- [ ] 变更走 PR + CI,人工评审已留痕
- [ ] 影响分析已列出全部下游消费者与负责人
- [ ] 未在生成物中泄漏敏感字段值
## 常见失败与处理
| 失败现象 | 根因 | 处理方式 |
|---|---|---|
| 生成的 DAG 报「没有这个模块 / 参数」 | 版本与 API 风格未知 | 先确认 Airflow 版本;按项目既有范例改写;禁止猜测 API |
| 聚合值偏大 | join 键不唯一导致扇出 | 回到探查步骤校验唯一性;先聚合右表再 join;加 grain 断言 |
| 增量模型漏数 | 增量键与迟到数据策略不当 | 检查增量键与 lookback 窗口;改用可重放的分区覆盖策略 |
| 回填跑了很久还没完 | 未分批、未预估 | 中止;改为按分区分批,设置每批上限与检查点 |
| 断言失败但业务说没问题 | 断言定义过时或口径已变 | 走口径变更流程,由所有权人确认后更新断言,**不得直接禁用** |
| 血缘查不到受影响的下游 | 血缘采集不全 | 停止写操作;改用人工影响评估或先补血缘 |
| 看到不该看的字段 | 权限未生效或未脱敏 | 立即停止并记录;升级给数据负责人,不得继续处理 |
| 成本超预算 | 未做干跑与成本预估 | 执行 EXPLAIN 干跑;设置扫描量上限;超限即中止 |
## 示例
**任务**:为「订单履约时效」新增一个 mart 层指标模型。
1. 确认环境:Airflow 2.x + TaskFlow 风格,dbt 1.x + Snowflake adapter,数仓方言 Snowflake。
2. 声明 grain:目标模型为「每订单一行」(`order_id` 唯一);上游 `orders` 为每订单一行,`promotions` 为每订单每促销码一行(**不唯一**)。
3. 血缘分析:上游为 `stg_orders`、`stg_promotions`;下游为履约看板与财务日报(负责人已列)。
4. 数据探查:`orders` 主键唯一性通过;`promotions.order_id` 基数大于行数,确认不唯一。
5. 方案设计:`promotions` 先按 `order_id` 聚合为一行再关联;目标模型物化为 table;增量策略按 `order_date` 分区覆盖;测试包含 `unique(order_id)`、`not_null(order_id)`、时效值域断言。
6. 计划卡点:影响分析显示财务日报使用本模型,提交财务侧确认口径。
7. 实现与验证:dev target 执行 `dbt build`,全部测试通过。
8. 语义回归:执行履约时效的已验证查询集;用不经本模型的路径独立复算 P50 时效,差值 0。
9. 提交:PR 附影响分析、验证结果、回填方案(按 30 天分批,可中止)。
10. 上线观察:合并后观察首轮运行与财务日报新鲜度;归档变更记录。 4.3 落地检查清单
4.3.1 上下文层(L1)
- [ ] 项目 DAG 与分层约定可被智能体检索
- [ ] schema 支持检索式 linking,不依赖全量注入
- [ ] 每个模型有 grain 声明,且声明进入上下文
- [ ] 语义层 / 指标注册表中的口径定义可被检索
- [ ] 既有模型代码可作为范例被检索
- [ ] 数据剖析结果(行数、空值率、基数、唯一性)可自动生成并注入
4.3.2 工具与执行层(L2)
- [ ] dbt MCP Server 已接入,且写操作限定在 dev target 与指定 selector
- [ ] 数仓连接默认只读角色,写操作需显式授权
- [ ] 工具参数有模式校验,格式错误在调用前拦截
- [ ] 所有工具调用记录耗时、成本与返回摘要
- [ ] 编排器写权限受限,禁止修改生产 DAG 定义
4.3.3 编排与控制层(L3)
- [ ] 复用 Airflow / dbt 原生 DAG,未重造编排层
- [ ] 回填作业可分批、可中止、带检查点
- [ ] 变更流程固定为分支 → PR → CI → 评审 → 合并
- [ ] 重试策略明确,同类失败不超过 2 次
4.3.4 记忆与状态层(L4)
- [ ] 数据快照与模型版本可追溯
- [ ] 运行历史与回填记录可查
- [ ] 变更记录归档,含影响分析与验证结果
- [ ] 血缘与文档随变更同步更新
4.3.5 评估与观测层(L5)
- [ ] grain 与唯一性断言已前置到 join 之前
- [ ] 语义回归集已建立,每次变更回归
- [ ] 关键指标存在独立复算路径
- [ ] 质量断言失败不得被禁用或放宽以求通过
- [ ] 血缘覆盖率、边新鲜度、MTTD、MTTR 四项度量已上线
4.3.6 治理与安全层(L6)
- [ ] 管道级 PII 标记与数据分级已建立
- [ ] RLS / CLS 在数据访问层强制生效
- [ ] 敏感值不出现在日志、缓存与 PR 描述中
- [ ] 成本护栏已设置(扫描量上限、core-hour 配额)
- [ ] 指标口径变更须经所有权人确认并留痕
5. 总结
数据工程方向对 AI Harness 的核心诉求可以概括为一句话:让智能体在既有方法论之内工作,而不是绕过它们。
这个方向最大的诱惑是「自动生成管道」——而最大的风险也恰恰在此。一条由智能体生成的管道,如果缺少 grain 断言、缺少关联唯一性校验、缺少血缘影响分析、缺少独立复算,它会以完全健康的状态运行,然后安静地向所有下游输送错误数字。公开报道的那个「21 天后被财务发现」的案例,不是模型不够聪明,而是验证层缺位。
因此本方向的重心落在 L1 与 L6:
- L1 提供可信语料,让智能体知道项目里有什么、彼此如何依赖、既有约定是什么。「仅 9% 满意」的落差,本质是上下文落差。
- L6 提供硬约束,让分级、脱敏、审批与成本护栏不依赖模型的自我约束。
数据工程还有一个其他方向少有的有利条件:它拥有最丰富的可执行 ground truth。SQL 可以比对,测试可以跑,血缘可以追溯,指标可以回归。这意味着在这个方向,Harness 的每一分投入都能被直接验证——只要愿意把验证做成门禁,而不是做成文档。
信息缺口声明
- 不存在数据工程方向 AGENTS.md / SKILL.md 的官方或行业公认标准原文。4.1 与 4.2 节均为本文提出的标准建议稿。
- 以下数字来自二手转述,未在一手官方报告中核实,标注 :84.2% 的 Airflow 用户使用 AI 辅助编写代码;32% 的组织 GenAI/MLOps 用例进入生产;仅 9% 的数据工程师对通用 AI 生成的 DAG 满意;72% 的数据团队优先 AI 辅助编码;数据信任度 66% → 83%;dbt Fusion 解析提速约 30 倍。建议核对 Astronomer《State of Airflow 2026》与 dbt Labs《2026 State of Analytics Engineering》官方报告后引用。
- Databricks Genie Code 内部基准 text-to-SQL 准确率从 32% 提升至 90%+ 为厂商内部自报数据,本文件未采用;Snowflake Cortex Code「超过半数客户使用」 未核实,本文件未采用。
- dCMM 2.0 的「安全权重 15% → 25%」「4 级以上强制要求 AI 治理」 来自二手转述,本文件未采用;「能力域 8 → 9、新增数据资产、2026-07-01 实施」为多来源一致的转述,已采用。
- 3.3 节的粒度扇出案例为公开叙述性博客中的失败模式示例,不具统计代表性,不得换算为发生率;其中「21 天」为个案描述。
- 数据工程智能体的行业渗透率、平均 ROI、平均实施周期——本次检索未获得可靠公开数据,本文件未给出任何此类数字。
- 科学数据汇交与数据质量相关国家标准的具体条款原文未获取到,本文件仅引用编号与已公开的流程框架。
- 4.2 节示例中的表名、字段名与参数均为示意性构造,不代表任何真实系统。
6. 参考资料
- AI for Data Engineering 2026(含 Astronomer《State of Airflow 2026》、dbt Labs《2026 State of Analytics Engineering》数据转述)— 技术博客。https://baeseokjae.github.io/posts/ai-for-data-engineering-2026
- The Agent-Written Data Pipeline(含粒度扇出失败模式案例,叙述性来源)— 技术博客。https://theaivibe.org/blog/the-agent-written-data-pipeline
- DAMA 数据管理知识体系指南(DAMA-DMBOK)知识领域框架 — DAMA International。https://www.longshidata.com/blog/c/c2026062301.html
- 《数据管理能力成熟度评估模型》(GB/T 36073-2018) 与 DCMM 2.0 (GB/T 36073-2025) 说明 — 中国国家标准。https://ima.qq.com/wiki/?shareId=0258e6e62f0b37168d979fc9920268b9e4a313954973dbcf7e0469f132358841
- ISO 8000 数据质量系列标准汇总 — ISO/TC 184/SC 4。https://quality.arc42.org/standards/iso-8000
- OpenLineage 官方规范文档 — Linux Foundation。https://openlineage.io/
- 数据血缘落地的工程方法与度量指标(覆盖率、边新鲜度、MTTD、MTTR)— Customer Science。https://customerscience.com.au/customer-experience-2/implementing-lineage-tracking-step-by-step/
- Great Expectations / Soda 与 OpenLineage 集成(质量分数进入血缘图)— Conduktor。http://conduktor.io/glossary/data-lineage-tracking-data-from-source-to-consumption
- MCP 数据科学工作流工具生态(含 dbt MCP Server)— 技术指南。https://chatforest.com/guides/mcp-data-science-workflows
- Data Agent 架构综述:从架构到实践 — 技术分析博客。https://ibillxia.github.io/blog/2026/08/20/data-agent-servey-from-arch-to-practice
- W3C PROV 概念模型综述 — W3C。https://www.w3.org/TR/prov-overview/
- 2025 中国企业数据治理成熟度调研(各维度平均得分均低于 3 分)— 行业调研转述。https://baeseokjae.github.io/posts/ai-for-data-engineering-2026
Data · Data Engineering
1. Introduction
1.1 Background
Data engineering is one of the earliest directions in which AI Harness is deployed and one of the easiest to expose weaknesses. On one hand, AI-assisted pipeline-code authoring has become common practice — an industry report states that 84.2% of Airflow users write Airflow code with AI assistance (the figure comes from a secondhand retelling, marked [To be verified]); on the other hand, the same batch of reports presents a jarring set of contrasting numbers: only 9% of data engineers are satisfied with DAGs generated by general-purpose AI tools, with the top complaints being "hallucination rate" and "outdated syntax".
These numbers reveal not a model-capability problem but a context-and-verification problem: general-purpose models lack the project's DAGs, lack schema, lack execution-environment information, lack existing conventions, and also lack an evaluation layer that can stop errors before merge. This is precisely where AI Harness finds its use in the data engineering direction.
The governance baseline on the industry side is rising in parallel. The DAMA Guide to the Data Management Body of Knowledge (DAMA-DMBOK) defines 11 data-management knowledge areas, of which those most directly relevant to data engineering are data architecture, data modeling and design, data integration and interoperability, metadata management, data quality management, and reference data and master data. The "Data Management Capability Maturity Assessment Model" (GB/T 36073-2018) defines 8 capability domains and 5 maturity levels; DCMM 2.0 (GB/T 36073-2025), published in 2025 and effective on 2026-07-01, expands the capability domains to 9, adds the "Data Asset" capability domain, and increases capability items from 28 to 33 (some details pending verification, see the Information Gap Statement).
1.2 Definition
An AI Harness for the data engineering direction is the engineering carrier layer that, around stages such as data ingestion, cleaning, modeling, lineage, and quality gates, provides agents with context assembly, tool contracts, orchestration reuse, artifact memory, executable verification, and governance constraints.
It does not change the methodology of data engineering itself (dimensional modeling, ELT, declarative transformations, test-driven data quality) but instead enables agents to work within these existing methodologies rather than bypassing them.
Two points need clarification at the boundary:
- A data engineering Harness is not a "robot that automatically generates pipelines." Its outputs are reviewable changes (model code, test cases, documentation, lineage updates), and the final merge still goes through PR + CI.
- A data engineering Harness does not replace engines such as Airflow, dbt, and Spark. It takes on the layer of "letting agents correctly understand and use these engines."
1.3 Position within the AI Harness System
图 1-1|数据工程六层能力模型:核心在 L1 上下文与 L6 治理
数据来源:基于本文分析绘制的示意图。
The data engineering direction's emphasis within the six-layer capability model is as follows (this emphasis analysis is based on public case facts, not a standard):
| Layer | Emphasis | Specific Content in the Data Engineering Direction |
|---|---|---|
| L1 Context Engineering Layer | ★★★★★ | Context = project DAG + schema + existing model conventions + lineage + semantic layer + data profiling results |
| L2 Tools and Execution Layer | ★★★★ | dbt MCP Server, Airflow, Spark, Great Expectations / Soda; all write operations go through PR + CI |
| L3 Orchestration and Control Layer | ★★★★★ | DAG is the native form of data engineering; the Harness should reuse Airflow/dbt rather than rebuild orchestration |
| L4 Memory and State Layer | ★★★ | Data snapshots, model versions, run history, backfill records |
| L5 Evaluation and Observability Layer | ★★★★ | Executable regression + data quality gates + lineage impact analysis |
| L6 Governance and Security Layer | ★★★★★ | Pipeline-level PII tagging, data classification, RLS/CLS, compliance checks built into the orchestration layer, cost guardrails |
The core lies in L1 and L6.
L1 is core because the root cause of the "only 9% satisfied" data point is precisely missing context: the model does not know which models exist in the project, how they depend on each other, what the execution environment is, or what the existing naming and layering conventions are. Lineage and data quality provide trustworthy corpus for the context — without lineage, the agent cannot judge whom a change would affect; without quality gates, the agent cannot judge whether its own change is safe.
L6 is core because data engineering is the only direction where "a wrong output directly contaminates all downstream consumers." A miscalculated pipeline quietly feeds wrong numbers to reports, models, and financial systems without raising any error. Data classification and masking must therefore be hard constraints enforced by the Harness layer's permission system, not by the model's self-restraint.
Bottleneck layer: L1. The vast majority of current failures occur during context assembly — the model cannot access schema, cannot access lineage, cannot access execution-environment assumptions, so it generates code that is syntactically valid but semantically wrong. By comparison, L5's tools (Great Expectations, dbt test) are already fairly mature; what is missing is wiring them into a closed loop with the agent workflow.
1.4 Value and Bottlenecks
The value is reflected in three places:
- Lowering the cost of getting started: pressing the cost of "writing the first version" close to zero, so engineers can focus their effort on design and review.
- Turning verbal conventions into executable assertions: things previously kept in people's memory — lineage, grain, uniqueness, freshness — become gates the agent must check every time.
- Shortening fault-diagnosis time: when a downstream failure occurs, the agent can automatically trace back along lineage to the root-cause model, instead of manual layer-by-layer triage.
The bottlenecks likewise number three:
- Silent errors: see the case in Section 3.3; routine checks (row counts, freshness, non-null) cannot catch grain and semantics errors.
- Context scale: the number of tables and columns in an enterprise warehouse far exceeds the context budget, so retrieval-based schema linking is mandatory.
- API drift: data engineering tools differ greatly across versions (e.g., Airflow from classic operators to the TaskFlow
@taskdecorator), and model training data often lags the current version, giving rise to "outdated syntax"-type complaints.
2. Glossary
| Term | English / Abbreviation | Definition |
|---|---|---|
| DAG | Directed Acyclic Graph | A directed acyclic graph. The representation of task dependencies in a data pipeline; the core abstraction of tools such as Airflow and dbt |
| Orchestrator | Orchestrator | A system responsible for scheduling tasks in dependency order and handling retries and alerts, such as Apache Airflow |
| dbt | data build tool | A tool that implements declarative data transformations with SQL + YAML, unifying models, tests, and documentation within a single project |
| Semantic Layer | Semantic Layer | An abstraction layer that centrally defines metrics, dimensions, and grain, so different consumers get a consistent semantics |
| Data Lineage | Data Lineage | A record of the processing chain of data from source to consumer; the cornerstone of change-impact analysis and trustworthiness |
| OpenLineage | OpenLineage | An open lineage specification under the Linux Foundation, defining the Job / Run / Dataset event model and the Facet extension mechanism; the reference implementation is Marquez |
| Column-level Lineage | Column-level Lineage | Lineage precise to the field level, used to determine the upstream origin of a given metric field |
| Data Quality Dimensions | Data Quality Dimensions | The three dimensions proposed in ISO 8000-8:2015 — syntactic quality, semantic quality, and pragmatic quality, along with 8000-120/130/140 for provenance / accuracy / completeness |
| Data Contract | Data Contract | An explicit agreement between producers and consumers on schema, semantics, and service level, usually expressed as executable assertions |
| Grain | Grain | The business-entity unit represented by one row of data (e.g., one row per order). Grain mismatch is a primary cause of double-counting |
| Fan-out | Fan-out | Unexpected inflation of row counts caused by join operations, usually due to a non-unique join key |
| Idempotency | Idempotency | Repeating the same operation yields the same result; the prerequisite for safe backfill and retries |
| Backfill | Backfill | Recomputing and writing historical partitions, commonly done after correcting model logic |
| Freshness | Freshness | The gap between when data is produced and the current time, commonly used to monitor pipeline health |
| Incremental Model | Incremental Model | A model that processes only new or changed data to reduce cost; requires defining a unique key and an incremental strategy |
| Slowly Changing Dimension | Slowly Changing Dimension, SCD | A modeling method that records the historical changes of dimension attributes |
| Data Classification | Data Classification | Classifying data by sensitivity to determine access, masking, and sharing policies |
| PII | Personally Identifiable Information | Personally identifiable information, whose processing is constrained by regulations such as the Personal Information Protection Law |
| RLS / CLS | Row-Level Security / Column-Level Security | Row-level / column-level security; permission mechanisms enforced at the data access layer |
| MTTD / MTTR | Mean Time To Detect / Mean Time To Repair | Mean time to detect / mean time to repair; common metrics in lineage and quality engineering |
3. Case Studies
3.1 Case 1: The Gap Between Expectations and Reality When an Agent Writes Airflow DAGs
3.1.1 Background
Data engineering is one of the areas where AI-assisted coding has penetrated fastest. According to retold industry reports: 84.2% of Airflow users already write Airflow code with AI assistance; 32% of organizations already have GenAI/MLOps use cases in production, up 5 percentage points year over year; 72% of data teams list AI-assisted coding as a priority; data trust rose from 66% to 83% (all of these figures come from secondhand retellings sourced from the annual reports of dbt Labs and Astronomer, all marked [To be verified]).
But the same batch of reports offers one strongly counterintuitive figure: only 9% of data engineers are satisfied with DAGs generated by general-purpose AI tools, with hallucination rate and outdated syntax being the top complaints.
3.1.2 Approach
A root-cause analysis of this gap points to three intervenable points, which correspond exactly to three of the Harness layers:
- L1 missing context: the model does not understand the project's existing models, dependencies, and naming conventions. The countermeasure is to assemble the project DAG, schema, and existing examples into the context rather than relying on the model's general knowledge.
- L2 unknown execution environment: the model does not know whether the target environment uses KubernetesPodOperator or DockerOperator, whether the XCom backend is custom, or which API style the Airflow version supports. The countermeasure is to make environmental assumptions explicit and expose them through tool contracts.
- API drift: the Airflow operator API changes significantly across versions (classic operators → the TaskFlow
@taskdecorator), and general-purpose models have insufficient weight in their training data for this. The countermeasure is to use versioned API documentation and in-project examples as retrieval corpus, and to run version-consistency checks on the generated results.
Meanwhile, the product evolution on the dbt side provides a comparison sample: dbt Copilot generates SQL models, tests, and documentation based on the project's DAG, schema definitions, and existing model conventions; the dbt Fusion engine, rewritten in Rust and natively understanding SQL, parses roughly 30× faster, in part so that models can fetch rich project metadata in real time (this speedup is self-reported by the vendor, marked [To be verified]).
3.1.3 Results
These numbers themselves are the evidence of the outcome: the high penetration of AI-assisted coding (84.2%) coexists with low satisfaction (9%), showing that the value lies not in "whether the model can write" but in "whether the Harness provides the model with the right context and verification."
Trust indicators on the industry side point the way to improvement: data trust rose from 66% to 83% (to be verified), which aligns in timing with the practice of "wiring lineage, quality checks, and change governance into a closed loop." The inferable conclusion is: the value curve of a data engineering agent is determined by context completeness, not by model capability alone.
3.2 Case 2: A Lineage Closed-Loop Triage Driven by the dbt MCP Server
3.2.1 Background
The typical way data-platform incidents are handled is manual: an anomaly appears on a downstream dashboard → someone asks in the group chat → a data engineer logs into the scheduler → traces upward layer by layer → locates the failed model → runs tests → determines the blast radius. This process is time-consuming and highly dependent on personal experience.
In parallel, MCP is becoming the standard binding layer for data tools. The dbt MCP Server exposes a dbt project as a queryable API: listing models, reading lineage, triggering dbt runs by selector, and fetching test results.
3.2.2 Approach
Wire the MCP tool contracts together with lineage and quality checks into an automatic closed loop:
- Trigger: a downstream DAG failure or abnormal dashboard-data event enters the triage queue.
- Trace back: the agent reads lineage through the dbt MCP Server and traces up the dependency chain to locate the failed or anomalous model.
- Targeted verification: run a targeted
dbt teston the located model rather than rerunning the whole project, to control cost. - Impact analysis: derive downstream, along lineage, the affected data products and consumers.
- Triage output: generate a comment in the collaboration tool containing the root-cause model, the failed tests, the blast radius, and the suggested fix direction.
- Human in the loop: changes still require PR + CI; the agent only produces the triage conclusion and fix suggestions.
Parallel productized capabilities also include: the dbt Semantic Layer centrally defines metrics / dimensions / grain in YAML; the dbt Developer Agent (2026-05-06 preview) supports describing changes in natural language and builds, refactors, tests, and documents models based on lineage, the semantic layer, and governance, with every change auditable.
3.2.3 Results
This closed loop turns incident triage from "experience-dependent manual investigation" into "deterministic trace-back along lineage + targeted verification." Its value lies not in a one-time speedup, but in three points:
- Blast radius is computable: only with lineage can one answer "whom does this change affect," which is a prerequisite for change approval.
- Verification cost is controllable: targeted tests replace a full rerun, directly reducing contamination and cost.
- Auditable: every change by the dbt Developer Agent is auditable, satisfying the governance side's question of "what did the AI change."
It should be noted: specific benefit figures for this loop (fault-diagnosis time, cost savings) did not yield reliable public data in this search; only the mechanism is described here, with no quantified conclusions.
3.3 Case 3: Silent Failure — the Pipeline Does Not Crash, It Just Lies Fluently
3.3.1 Background
There is a widely cited description of a failure mode for data engineering agents: a crashing pipeline tells you it is broken; a miscalculated pipeline tells you nothing.
A publicly reported concrete scenario: while an agent refactored a dbt staging model, it did a left join on the promotions table. That table has multiple rows per order (one row per promo code), so the join caused a grain fan-out and sum(order_total) was double-counted. Throughout, all routine checks passed — tests passed, freshness was normal, row counts were normal. It was not discovered by Finance until 21 days later.
This case comes from a public narrative blog, serving as a failure-mode example; it has no statistical representativeness and must not be converted into an incidence rate. But it depicts a class of real and costly engineering risk.
3.3.2 Approach
For this kind of silent error, the defense that should be added on the Harness side is not "more row-count checks" but semantic-layer assertions:
| Defense | What It Checks | Errors It Can Catch |
|---|---|---|
| Grain assertion | Declare the model's grain and assert the primary key is unique | Fan-out, double-counting |
| Pre-join check | Verify the join key is unique in the right table before the join | Fan-out caused by one-to-many |
| Independent recomputation | Recompute key metrics via a path that does not share upstream | Semantics and logic errors |
| Semantic regression set | A verified query set for key metrics, regressed on every change | Semantics drift |
| Semantics ownership | Metric-definition changes must be confirmed by the owner | Unauthorized semantics changes |
| Lineage impact analysis | Automatically list downstream consumers on change | Blast radius out of control |
At the same time, data quality engineering itself should establish four types of metrics: coverage, freshness of lineage edges, MTTD (mean time to detect), and MTTR (mean time to repair).
3.3.3 Results
The direct outcome of this case is that it exposes a kind of structural blind spot: routine data quality checks (non-null, uniqueness, row counts, freshness) are completely ineffective against semantics errors.
Two executable conclusions follow:
- Grain and uniqueness assertions must be placed before the join, rather than discovering after aggregation that the numbers are wrong.
- Key metrics must have an independent recomputation path. Self-validation within the same path cannot detect systematic bias; only a recomputation that does not share upstream can expose the problem.
This conclusion also explains why the data engineering direction depends most heavily on L1 + L6: lineage (L1 corpus) answers "whom does the change affect," while classification and approval (L6) answer "who is authorized to change it."
4. Practice Standards
4.1 AGENTS.md Specification
Standard-source statement: the following is this article's proposed draft standard for an AGENTS.md in the data engineering direction. As of now, no original AGENTS.md specification for the data science / data engineering direction has been published by an official body, industry association, or standards organization; AGENTS.md is a community convention rather than a standard. This draft inherits all clauses of the data-science group-level AGENTS.md and tightens and extends them for the data engineering direction.
# AGENTS.md —— 数据工程(Data Engineering)
> 继承数据科学组级 AGENTS.md 全部条款。本节为数据工程方向的收紧与扩展。
> 本文件为标准建议稿,业界尚无官方标准版本。
## 角色与边界
- 本 Agent 是**数据管道的协作者**:可以读元数据、写代码、跑测试、做分诊分析。
- 不可以直接执行的操作:生产环境 DDL、直接写入生产表、绕过 CI 合并、修改数据分级、删除历史分区。
- 所有变更的合法出口只有一条:**分支 → PR → CI → 人工评审 → 合并**。
- 指标口径的最终裁定权归业务所有权人,不归本 Agent。
## 环境假设
- 编排器:Apache Airflow(须明确版本与 API 风格:经典 operator 还是 TaskFlow)
- 转换层:dbt(须明确版本、adapter 与目标数仓方言)
- 计算引擎:Spark / 数仓原生 SQL(须明确方言:BigQuery / Snowflake / PostgreSQL / DuckDB 等)
- 质量框架:Great Expectations 或 Soda(须明确断言存放位置与执行入口)
- 元数据 / 血缘:OpenLineage 兼容后端(Marquez / DataHub / OpenMetadata / Atlas)
- **以上任一项未知时,先问,不要猜**。版本未知时禁止生成依赖版本特性的代码。
## 上下文加载顺序(Context Budget)
1. 任务与验收口径(必须)
2. 目标模型的 schema、grain 声明与既有测试(必须)
3. 血缘:上游依赖 + 下游消费者(**写操作前必须**)
4. 项目 DAG 与分层约定(staging / intermediate / marts 等)
5. 语义层中的指标与维度定义(涉及指标时必须)
6. 同类既有模型代码(命名、物化策略、增量策略的范例)
7. 数据剖析结果:行数、空值率、基数、主键唯一性
8. 执行环境声明:operator 类型、XCom 后端、资源与配额
9. 数据分级与 PII 字段清单(必须,决定脱敏与可见性)
- 表数量多时走**检索式 schema linking**,禁止把整个 warehouse 的 schema 一次性注入。
## 工具契约
| 工具 | 用途 | 模式 | 约束 |
|---|---|---|---|
| dbt MCP Server | 列模型、读血缘、按 selector 触发 run、取测试结果 | 读 + 受限写 | 写操作限定在指定 selector 与 dev target |
| 元数据服务 | 查询表/列血缘、所有权、分级标记 | 只读 | 不得修改分级 |
| 数仓连接 | 执行查询、剖析数据、干跑 EXPLAIN | 只读 | 默认只读角色;成本预估超阈值须中止 |
| 质量框架 | 执行断言集 | 读 + 执行 | 不得静默禁用失败断言 |
| 编排器 | 查看 DAG 与运行历史、触发重跑 | 读 + 受限写 | 不得修改生产 DAG 定义 |
| 版本控制 | 建分支、提 PR、读 CI 结果 | 受限写 | 禁止直接推送到主分支 |
- 工具参数必须做模式校验;参数格式错误在调用前拦截,**不得靠重试碰运气**。
- 每个工具调用记录时间、参数摘要、返回摘要、耗时与成本。
## 数据源契约
- 每个输入表必须有:唯一标识、负责人、刷新频率、grain 声明、分级标记。
- 数据引用必须带版本:快照时间、分区、commit hash 或数据集版本号,四者至少其一。
- **join 前必须校验关联键唯一性**;不唯一时先聚合或改用其他关联策略,禁止直接 join。
- 缺失值与异常值处理方式必须显式声明,禁止静默丢弃。
- 跨源关联前确认主键与粒度;粒度不匹配禁止 join。
- 临时数据源必须标注为临时,并在产出物中声明。
## 任务执行流程(SOP)
1. 澄清:复述任务,确认目标模型、grain 与验收口径。
2. 盘点:列出将读写的表、依赖的上游、受影响的下游、所需权限。
3. 影响分析:通过血缘计算 blast radius;影响关键数据产品时先升级。
4. 设计:给出模型结构、物化与增量策略、测试清单、回填方案。
5. 计划卡点:方案经人确认后进入执行。
6. 探查:先剖析数据(行数、空值、基数、唯一性),再动手写模型。
7. 实现:写代码 + 测试 + 文档,遵循项目既有命名与分层约定。
8. 验证:在 dev target 执行 dbt build;执行质量断言;执行语义回归集。
9. 提交:建分支、提 PR,附影响分析与验证结果。
10. 交付:合并后观察首轮运行结果与下游新鲜度;归档变更记录。
## 验证与证据要求
- 每一条数值结论必须来自**执行结果**,禁止由模型凭记忆生成。
- 必须执行的四类断言:
- **grain 断言**:声明并断言主键唯一,捕获扇出与重复计数
- **关联断言**:join 键在右表唯一的检查前置到 join 之前
- **新鲜度与行数断言**:监控但不作为正确性的唯一依据
- **语义回归集**:关键指标的已验证查询,每次变更回归
- **关键指标必须有独立复算路径**:用不共享上游的方式重算,比对差值并说明差异原因。
- 主动报告反例:若验证中发现与预期不符的数据,必须报告,不得只呈现支持性结果。
- 结论分「已验证 / 部分验证 / 未验证」三档列出。
## 失败与升级策略
- 同类失败重试不超过 2 次;第 3 次改变策略或升级。
- 工具参数格式错误:停止重试,检查模式定义并修正调用构造。
- 血缘缺失导致无法评估影响范围:**停止写操作**,先补血缘或走人工评估。
- 回填规模超预期:暂停,报告行数、成本与预计时长,获批后继续。
- 质量断言失败:不得禁用断言或放宽阈值以求得通过;报告失败项与根因。
- 出现 PII 或分级不明确的字段:停止处理,升级给数据负责人。
- 升级时携带:任务、已完成步骤、失败点、已尝试方案、blast radius、建议下一步。
## 安全与合规红线
- 不得绕过 CI、审批、权限与配额。
- 不得修改或降低数据分级;不得将高分级数据写入低分级目标。
- 不得在无人评审的情况下执行生产写操作或 DDL。
- 不得在生成物(日志、缓存、PR 描述、图表)中泄漏敏感字段值。
- 不得为求通过而禁用、删除或放宽质量断言。
- 不得伪造数据来源、血缘关系或测试结果。
- 涉及个人信息、跨境传输的管道变更,须确认已完成相应审批。
## 禁止事项
- 禁止在未知 Airflow 版本与 API 风格时生成 DAG 代码。
- 禁止在未确认 grain 的情况下做 join 或聚合。
- 禁止把整个 warehouse schema 一次性注入上下文。
- 禁止生成不可回滚的批量变更;回填必须可分批、可中止。
- 禁止用「大概」「通常」替代具体的行数、成本与时间数字。
- 禁止把未执行的推测当作验证结果报告。
- 禁止跨方向复制通用分析模板;数据工程的断言体系与科学计算、HPC 有实质差异。
## 输出格式
- 结论先行 → 证据(数据源 + 版本 + 代码 + 执行记录)→ 不确定性 → 建议。
- 变更产出统一包含:模型代码、测试、文档、影响分析、回填方案、验证结果。
- 数值带单位;范围用「~」连接;百分比数值与 % 之间无空格。
- 代码与配置使用带语言标记的代码块。
- 血缘与影响范围用表格列出:下游对象、负责人、影响类型。
## 评估与自检
- [ ] 目标模型的 grain 已声明并断言唯一
- [ ] 所有 join 的关联键唯一性已前置校验
- [ ] 上游依赖与下游影响已通过血缘列出
- [ ] 数据分级已确认,PII 字段已按策略处理
- [ ] Airflow 版本与 API 风格已确认,生成代码与之匹配
- [ ] dbt build 在 dev target 通过,测试无跳过
- [ ] 语义回归集已执行,关键指标与基准一致
- [ ] 关键指标已有独立复算,差异已说明
- [ ] 回填方案可分批、可中止,成本已预估
- [ ] 变更已走 PR + CI,人工评审记录已留痕 4.2 SKILL.md Specification
Standard-source statement: the following is this article's proposed draft standard for a SKILL.md in the data engineering direction, for which no official standard original likewise exists. Its data-quality section is based on the ISO 8000 series; its process section is engineering advice.
---
name: data-pipeline-change
description: 数据管道变更的标准执行流程与验收基线。适用于新建或重构 dbt 模型、编写或修改 Airflow DAG、执行回填、处理管道故障分诊等任务。触发场景:任何会改变数据管道产出内容的智能体任务。
version: 1.0
created: 2026-09-12
---
# 数据管道变更标准流程
## 适用场景
- 新建、重构或删除 dbt 模型;调整物化与增量策略。
- 编写或修改 Airflow DAG;调整调度、依赖与重试策略。
- 执行历史数据回填。
- 管道故障的分诊与根因定位。
- 不适用场景:一次性即席查询、不涉及管道变更的只读分析。
## 前置条件
- 目标环境已确认:Airflow 版本与 API 风格、dbt 版本与 adapter、数仓方言。
- 目标模型的 grain 已声明;上游表的 grain 已知。
- 血缘可查;若血缘缺失,先补血缘或走人工影响评估。
- 数据分级与 PII 字段清单可用。
- 质量框架可用且断言集可执行。
- 回填成本与时长可预估;存在预算上限。
## 输入
| 输入项 | 必需 | 说明 |
|---|---|---|
| 变更需求与验收口径 | 是 | 业务目标、目标模型、期望口径 |
| 目标模型 grain 声明 | 是 | 一行代表什么业务实体 |
| 上游表清单与 grain | 是 | 含关联键与唯一性判断 |
| 影响范围约束 | 是 | 可影响的下游、禁止影响的关键资产 |
| 成本与时间预算 | 是 | 回填规模上限、允许的执行窗口 |
| 既有范例 | 否 | 项目内同类模型代码与测试 |
## 输出
| 输出项 | 必需 | 说明 |
|---|---|---|
| 变更代码 | 是 | 模型 / DAG 代码,遵循项目约定 |
| 测试与断言 | 是 | grain、关联、唯一性、新鲜度、语义回归 |
| 文档 | 是 | 模型说明、字段口径、依赖关系 |
| 影响分析 | 是 | 上游依赖 + 下游消费者 + blast radius |
| 验证结果 | 是 | dbt build 结果、断言结果、独立复算差值 |
| 回填方案 | 否 | 分批策略、中止条件、成本预估 |
## 执行步骤
1. **确认环境与版本**
读取 Airflow 版本与 API 风格、dbt 版本与 adapter、数仓方言;任一未知则先询问,禁止猜测。
2. **声明 grain 与关系**
声明目标模型 grain;列出上游表及其 grain;标注所有 join 键并在探查中验证其唯一性。
3. **血缘与影响分析**
通过元数据服务读取上下游血缘;列出下游消费者与负责人;影响关键数据产品时先升级并等待确认。
4. **数据探查**
在只读角色下执行剖析:行数、空值率、基数、主键唯一性、分区分布;对 join 键执行唯一性检查并记录结果。
5. **设计变更方案**
给出模型结构、物化策略、增量策略、测试清单、回填方案与回滚方案。
6. **计划卡点确认**
方案与影响分析提交人工确认;未确认不进入实现。
7. **实现与本地验证**
在 dev target 编写模型、测试与文档;执行 `dbt build`;修复失败项,**不得通过禁用断言求通过**。
8. **语义回归与独立复算**
执行关键指标的语义回归集;用不共享上游的路径独立复算关键指标,比对并说明差值。
9. **提交与评审**
建分支、提 PR,附影响分析、验证结果、回填方案;等待 CI 与人工评审。
10. **上线观察与归档**
合并后观察首轮运行与下游新鲜度;记录变更、成本与遗留问题;更新血缘与文档。
## 质量标准(DoD)
数据质量(依据 ISO 8000-8:2015 三维度与 8000-120/130/140):
- [ ] 句法质量:字段类型、编码与结构符合声明规范,已自动校验
- [ ] 语义质量:字段含义与语义层 / 数据字典一致,已对照校验
- [ ] 语用质量:产出可被下游按预期使用,已与至少一名下游消费者确认
- [ ] 溯源:每个字段可追溯到上游来源与加工过程
- [ ] 准确性:关键指标经独立复算,差值已说明
- [ ] 完整性:覆盖范围与缺失情况已声明,无静默丢弃
管道与变更:
- [ ] grain 已声明且主键唯一断言通过
- [ ] 所有 join 键唯一性已前置校验
- [ ] dbt build 在 dev target 通过,无跳过的测试
- [ ] 语义回归集全通过
- [ ] 回填可分批、可中止,成本已预估且在预算内
- [ ] 回滚方案可执行
- [ ] 文档与血缘已同步更新
治理:
- [ ] 数据分级已确认,PII 按策略脱敏
- [ ] 变更走 PR + CI,人工评审已留痕
- [ ] 影响分析已列出全部下游消费者与负责人
- [ ] 未在生成物中泄漏敏感字段值
## 常见失败与处理
| 失败现象 | 根因 | 处理方式 |
|---|---|---|
| 生成的 DAG 报「没有这个模块 / 参数」 | 版本与 API 风格未知 | 先确认 Airflow 版本;按项目既有范例改写;禁止猜测 API |
| 聚合值偏大 | join 键不唯一导致扇出 | 回到探查步骤校验唯一性;先聚合右表再 join;加 grain 断言 |
| 增量模型漏数 | 增量键与迟到数据策略不当 | 检查增量键与 lookback 窗口;改用可重放的分区覆盖策略 |
| 回填跑了很久还没完 | 未分批、未预估 | 中止;改为按分区分批,设置每批上限与检查点 |
| 断言失败但业务说没问题 | 断言定义过时或口径已变 | 走口径变更流程,由所有权人确认后更新断言,**不得直接禁用** |
| 血缘查不到受影响的下游 | 血缘采集不全 | 停止写操作;改用人工影响评估或先补血缘 |
| 看到不该看的字段 | 权限未生效或未脱敏 | 立即停止并记录;升级给数据负责人,不得继续处理 |
| 成本超预算 | 未做干跑与成本预估 | 执行 EXPLAIN 干跑;设置扫描量上限;超限即中止 |
## 示例
**任务**:为「订单履约时效」新增一个 mart 层指标模型。
1. 确认环境:Airflow 2.x + TaskFlow 风格,dbt 1.x + Snowflake adapter,数仓方言 Snowflake。
2. 声明 grain:目标模型为「每订单一行」(`order_id` 唯一);上游 `orders` 为每订单一行,`promotions` 为每订单每促销码一行(**不唯一**)。
3. 血缘分析:上游为 `stg_orders`、`stg_promotions`;下游为履约看板与财务日报(负责人已列)。
4. 数据探查:`orders` 主键唯一性通过;`promotions.order_id` 基数大于行数,确认不唯一。
5. 方案设计:`promotions` 先按 `order_id` 聚合为一行再关联;目标模型物化为 table;增量策略按 `order_date` 分区覆盖;测试包含 `unique(order_id)`、`not_null(order_id)`、时效值域断言。
6. 计划卡点:影响分析显示财务日报使用本模型,提交财务侧确认口径。
7. 实现与验证:dev target 执行 `dbt build`,全部测试通过。
8. 语义回归:执行履约时效的已验证查询集;用不经本模型的路径独立复算 P50 时效,差值 0。
9. 提交:PR 附影响分析、验证结果、回填方案(按 30 天分批,可中止)。
10. 上线观察:合并后观察首轮运行与财务日报新鲜度;归档变更记录。 4.3 Deployable Checklist
4.3.1 Context Layer (L1)
- [ ] The project DAG and layering conventions can be retrieved by the agent
- [ ] Schema supports retrieval-based linking, without relying on full injection
- [ ] Every model has a grain declaration, and the declaration enters the context
- [ ] Semantics definitions in the semantic layer / metrics registry can be retrieved
- [ ] Existing model code can be retrieved as examples
- [ ] Data profiling results (row counts, null rates, cardinality, uniqueness) can be generated and injected automatically
4.3.2 Tools and Execution Layer (L2)
- [ ] The dbt MCP Server is connected, and write operations are limited to the dev target and specified selectors
- [ ] The warehouse connection defaults to a read-only role, and write operations require explicit authorization
- [ ] Tool parameters have schema validation, and format errors are blocked before the call
- [ ] All tool calls record latency, cost, and a return summary
- [ ] Orchestrator write permissions are restricted, prohibiting modification of production DAG definitions
4.3.3 Orchestration and Control Layer (L3)
- [ ] Native Airflow / dbt DAGs are reused, without rebuilding the orchestration layer
- [ ] Backfill jobs can run in batches, can be aborted, and carry checkpoints
- [ ] The change process is fixed as branch → PR → CI → review → merge
- [ ] The retry policy is explicit, with no more than 2 retries for the same type of failure
4.3.4 Memory and State Layer (L4)
- [ ] Data snapshots and model versions are traceable
- [ ] Run history and backfill records are queryable
- [ ] Change records are archived, including impact analysis and verification results
- [ ] Lineage and documentation are updated in sync with changes
4.3.5 Evaluation and Observability Layer (L5)
- [ ] Grain and uniqueness assertions are placed before the join
- [ ] A semantic regression set is established and regressed on every change
- [ ] Key metrics have an independent recomputation path
- [ ] Failed quality assertions must not be disabled or relaxed to force a pass
- [ ] The four metrics — lineage coverage, edge freshness, MTTD, MTTR — are live
4.3.6 Governance and Security Layer (L6)
- [ ] Pipeline-level PII tagging and data classification are established
- [ ] RLS / CLS are enforced at the data access layer
- [ ] Sensitive values do not appear in logs, caches, or PR descriptions
- [ ] Cost guardrails are set (scan-volume limits, core-hour quotas)
- [ ] Metric-semantics changes require owner confirmation and leave an audit trail
5. Summary
The core demand of the data engineering direction on AI Harness can be summarized in one sentence: let agents work within the existing methodology rather than bypassing it.
The greatest temptation in this direction is "automatically generating pipelines" — and the greatest risk lies precisely there. A pipeline generated by an agent that lacks grain assertions, lacks join-key uniqueness checks, lacks lineage impact analysis, and lacks independent recomputation will run in a seemingly perfectly healthy state, then quietly feed wrong numbers to all downstream consumers. The publicly reported case of "discovered by Finance 21 days later" was not about the model being unintelligent, but about a missing verification layer.
That is why this direction's focus falls on L1 and L6:
- L1 provides trustworthy corpus so the agent knows what exists in the project, how the parts depend on one another, and what the existing conventions are. The "only 9% satisfied" gap is, in essence, a context gap.
- L6 provides hard constraints so that classification, masking, approval, and cost guardrails do not depend on the model's self-restraint.
Data engineering also has an advantage rarely found in other directions: it has the richest executable ground truth. SQL can be compared, tests can be run, lineage can be traced, and metrics can be regressed. This means in this direction every bit of the Harness's investment can be directly verified — as long as one is willing to make verification a gate rather than a document.
Information Gap Statement
- No official or industry-recognized standard original of AGENTS.md / SKILL.md exists for the data engineering direction. Sections 4.1 and 4.2 are both proposed draft standards from this article.
- The following figures come from secondhand retellings and were not verified in the primary official reports; they are marked
[To be verified]: 84.2% of Airflow users write code with AI assistance; 32% of organizations have GenAI/MLOps use cases in production; only 9% of data engineers are satisfied with general-purpose AI-generated DAGs; 72% of data teams prioritize AI-assisted coding; data trust 66% → 83%; dbt Fusion parsing roughly 30× faster. Verify against the official reports — Astronomer's State of Airflow 2026 and dbt Labs' 2026 State of Analytics Engineering — before citing. - Databricks Genie Code's internal benchmark text-to-SQL accuracy rising from 32% to 90%+ is vendor-internal self-reported data and is not adopted in this document; Snowflake Cortex Code "used by more than half of customers" is unverified and not adopted in this document.
- dCMM 2.0's "security weight 15% → 25%" and "AI governance mandatory at level 4+" come from secondhand retellings and are not adopted in this document; "capability domains 8 → 9, addition of data assets, effective 2026-07-01" is a retelling consistent across multiple sources and is adopted.
- The grain fan-out case in Section 3.3 is a failure-mode example from a public narrative blog and has no statistical representativeness; it must not be converted into an incidence rate; the "21 days" therein is a description of an individual case.
- Industry penetration, average ROI, and average implementation cycle of data engineering agents — this search did not yield reliable public data, so this document gives no such figures.
- The specific clause text of national standards related to scientific-data submission and data quality was not obtained; this document cites only the numbers and the publicly disclosed process frameworks.
- The table names, field names, and parameters in the Section 4.2 example are all illustrative constructions and do not represent any real system.
6. References
- AI for Data Engineering 2026 (including retold data from Astronomer's State of Airflow 2026 and dbt Labs' 2026 State of Analytics Engineering, to be verified) — technical blog. https://baeseokjae.github.io/posts/ai-for-data-engineering-2026
- The Agent-Written Data Pipeline (including the grain fan-out failure-mode case, narrative source) — technical blog. https://theaivibe.org/blog/the-agent-written-data-pipeline
- DAMA Guide to the Data Management Body of Knowledge (DAMA-DMBOK) knowledge-area framework — DAMA International. https://www.longshidata.com/blog/c/c2026062301.html
- "Data Management Capability Maturity Assessment Model" (GB/T 36073-2018) and DCMM 2.0 (GB/T 36073-2025) explanations — China National Standards. https://ima.qq.com/wiki/?shareId=0258e6e62f0b37168d979fc9920268b9e4a313954973dbcf7e0469f132358841
- Summary of the ISO 8000 data quality standard series — ISO/TC 184/SC 4. https://quality.arc42.org/standards/iso-8000
- OpenLineage official specification documentation — Linux Foundation. https://openlineage.io/
- Engineering methods and metrics for data lineage deployment (coverage, edge freshness, MTTD, MTTR) — Customer Science. https://customerscience.com.au/customer-experience-2/implementing-lineage-tracking-step-by-step/
- Great Expectations / Soda and OpenLineage integration (quality scores entering the lineage graph) — Conduktor. http://conduktor.io/glossary/data-lineage-tracking-data-from-source-to-consumption
- MCP data science workflow tool ecosystem (including the dbt MCP Server) — technical guide. https://chatforest.com/guides/mcp-data-science-workflows
- Data Agent architecture survey: from architecture to practice — technical analysis blog. https://ibillxia.github.io/blog/2026/08/20/data-agent-servey-from-arch-to-practice
- W3C PROV concept model overview — W3C. https://www.w3.org/TR/prov-overview/
- 2025 survey of data-governance maturity of Chinese enterprises (average score below 3 on every dimension, to be verified) — industry survey retelling. https://baeseokjae.github.io/posts/ai-for-data-engineering-2026