cosmos-dbt-fusion – dbt 项目数据编排 Skill

3周前更新 8 0 0 0

cosmos-dbt-fusion 是指导 AI Agent 在 Astronomer 的 Cosmos 平台上配置和使用 dbt Fusion 引擎的 Skill,适合需要在 Airflow 中运行 dbt 项目、借助新一代 dbt 引擎提升转换任务执行效率的数据工程师。

Skill 安装

多 Agent 安装
npx skills add https://github.com/astronomer/agents --skill cosmos-dbt-fusion

使用 npx skills 快速安装,支持将 Skill 添加到多个兼容的 AI Agent。

Skill 调研报告

Skill 详细介绍

astronomer/agents#cosmos-dbt-fusion 是 Astronomer 官方 agents 仓库中提供的一个 Skill,围绕 Cosmos 与 dbt Fusion 在数据编排场景下的协同使用而设计。Astronomer 是 Apache Airflow 背后的商业公司,Cosmos 是它推出的开源项目,用于把 dbt 项目转换成 Airflow 的 DAG 和任务。dbt Fusion 则是 dbt Labs 推出的新一代 dbt 引擎,用来替代传统 dbt Core 的部分执行路径。

一、它是什么

它是一个面向 AI 编码 Agent 的领域 Skill,本质上是一套指令与工作流规则,而不是一个可以独立运行的程序或服务。安装后,Agent 在处理涉及 Cosmos、dbt、Airflow、dbt Fusion 的任务时,会获得更贴近官方实践的结构化指导,包括如何组织项目、如何编写或调整 Cosmos 配置、如何在 dbt Fusion 环境下处理常见的兼容性与执行差异。

二、它不是什么

– 它不包含 Airflow、Cosmos、dbt 或 dbt Fusion 的运行时本体,不会替代你本地的 Python 环境或数据库连接。
– 它不是一个数据管道执行引擎,不会替你真正跑 DAG。
– 它不是 dbt Fusion 本身,也不负责安装 dbt Fusion。
– 它不会自动接管你的仓库,除非你明确要求 Agent 执行相关操作。

三、主要解决什么问题

dbt 与 Airflow 的结合本身有配置复杂度,而 dbt Fusion 作为较新的引擎,在行为和边界上与 dbt Core 存在差异。这个 Skill 主要帮助用户:

– 在 Cosmos 中正确组织 dbt 项目与 Airflow DAG 的映射关系
– 处理 dbt Fusion 环境下 Cosmos 的配置与执行方式
– 减少 Agent 在缺少上下文时给出过时或错误 dbt / Airflow 写法的概率
– 让 Agent 的产出更接近 Astronomer 官方推荐的做法

四、典型任务

– 生成或修改 Cosmos 相关的 Airflow DAG 代码
– 调整 dbt 项目在 Airflow 中的加载与调度方式
– 排查 Cosmos 与 dbt Fusion 组合下的配置问题
– 讨论 dbt、Cosmos、Airflow、dbt Fusion 之间的版本兼容思路
– 在既有数据仓库项目里引入 Cosmos 编排

五、工作方式

它以 Skill 形式被 Agent 加载,在相关任务触发时向 Agent 注入领域知识和工作约束。真正的文件读写、命令执行、代码修改,仍由 Agent 本身及其权限决定。也就是说,Skill 提供的是“怎么做更对”的判断依据,执行动作的主体依然是 Agent。

六、适合与不适合

适合:

– 已经在用或准备使用 Airflow + dbt 的数据工程团队
– 正在评估或迁移到 dbt Fusion 的用户
– 希望 Agent 产出更符合 Cosmos 官方实践的开发者

不适合:

– 只想让 Agent 写普通 SQL 的场景
– 不使用 Airflow 或 dbt 的纯分析工作
– 期望 Skill 自动部署和管理生产数据管道

如果你完全不涉及 Airflow、dbt、Cosmos 这条技术栈,这个 Skill 对你的实际价值有限。

Skill 安全评估

总体判断:来自 Astronomer 官方组织仓库的 Skill,来源可信度较高;但它的实际操作风险取决于你授予 Agent 的权限,以及它被用于修改什么样的项目。

一、来源可信度

该 Skill 位于 Astronomer 官方 GitHub 组织(astronomer)的 agents 仓库中,属于第一方维护内容,相对于来源不明的第三方 Skill,供应链风险更低。不过仍建议在安装前确认仓库当前状态与 Skill 内容本身,不要仅凭组织名称判断。

二、文件读写风险

这类数据工程 Skill 通常会涉及:

– 读取现有 dbt 项目、Airflow DAG 目录、配置文件
– 写入或修改 DAG 文件、dbt 配置、YAML

如果 Agent 被授予自动写入权限,它可能在你的真实仓库中直接生成或覆盖文件。建议在重要仓库中先使用版本控制,确保改动可回滚,或先让 Agent 只给出建议、由你手动应用。

三、Shell 与执行权限

若 Agent 具备 Shell 执行权限,它可能尝试运行 dbt、Airflow 或安装相关依赖的命令。这类命令会访问你的本地环境和数据库连接。如果只需要 Skill 帮助生成或审阅代码,可以关闭自动执行 Shell,由你手动运行测试命令,风险更可控。

四、网络与依赖

dbt、Cosmos、Airflow 的安装和升级通常需要访问 PyPI 等包源。相关的网络访问由你的 Agent 和项目环境发起,而非 Skill 本身。需要注意的是,让 Agent 自动执行依赖安装会引入依赖来源和版本风险,建议自行确认包名与版本。

五、数据库与凭证

如果 Agent 在配置过程中接触数据库连接信息、profiles.yml、Airflow Connections 等内容,凭证泄露是需要关注的点。建议:

– 不要把生产数据库凭证交给 Agent 自动填入
– 使用示例值或占位符,凭证由你手动配置
– 确认生成的配置不会把密钥写入会被提交到仓库的文件

六、Prompt Injection 风险

如果 Agent 读取的是外部来源的 dbt 项目或文档,理论上存在被其中内容影响行为的可能。对来自不可信来源的仓库,建议在隔离环境中处理。

七、结论与建议

该 Skill 本身是知识型与工作流型内容,不内置危险行为。风险主要来自 Agent 被授予的文件与 Shell 权限。推荐做法:

1. 在纳入版本控制的仓库中使用
2. 需要时关闭自动 Shell,手动执行命令
3. 不把生产凭证交给 Agent 自动处理
4. 安装前查看该 Skill 当前内容

Skill 使用要求

一、Agent / 客户端

该 Skill 来自 Astronomer 官方 agents 仓库,主要以 Agent Skill 的形式发布。官方没有公布完整的第三方 Agent 兼容列表。通常来说:

– 在支持 Skills 或自定义 Skill 加载机制的 Agent 中更容易直接使用
– Claude Code、Codex、Cursor、Trae、OpenClaw、WorkBuddy 等是否支持,取决于各自当前的 Skill 加载方式,建议以对应 Agent 版本的实际能力为准
– 如果你使用的 Agent 支持加载该 Skill,就可以尝试;如果加载机制不兼容,Agent 可能无法识别它

具体以该 Skill 当前官方说明为准。

二、运行环境 / 依赖

Skill 加载本身通常不需要额外运行时。但使用它处理真实任务时,你的项目环境一般需要具备:

| 项目 | 要求 |
|—|—|
| Agent | 支持加载 Skill 的客户端 |
| Python | 涉及 Airflow / Cosmos / dbt 的项目环境需要 |
| Airflow | 使用 Cosmos 编排时涉及 |
| dbt | 涉及 dbt 项目本身 |
| dbt Fusion | 若目标是 dbt Fusion 环境,需要按官方方式准备 |
| 网络 | 安装依赖或查阅文档时需要 |

具体版本要求以 Airflow、dbt、Cosmos、dbt Fusion 各自的官方文档为准,此处不预设版本。

三、权限

– 文件读取:通常需要,用于理解现有 DAG 与 dbt 项目(必需)
– 文件写入:修改或生成 DAG、配置时需要(可选,取决于你是否让 Agent 直接改文件)
– Shell:运行 dbt、Airflow 命令时需要(可选,可改为手动执行)
– 网络:安装依赖、查阅官方资料时需要(可选)
– 数据库访问:按你的项目决定(可选,建议不交给 Agent 自动处理生产凭证)

四、账号 / API Key

Skill 本身不需要账号或 API Key。是否需要凭证取决于它服务的项目:

– Airflow 环境、数据库连接、dbt profiles 可能需要凭证,这属于项目层面
– dbt Fusion 是否涉及账号或授权,以其官方说明为准
– 不要把生产凭证直接交给 Agent 自动填写

最小使用条件

1. 一个支持加载 Skill 的 Agent
2. 一个涉及 Airflow / dbt / Cosmos 的项目(或明确的学习目标)
3. 按需准备的 Python 与 dbt / Airflow 环境
4. 可回滚的版本控制

Skill 安装、使用与卸载教程

一、安装

LemonAIKit 的 Skill 详情页已经提供对应的安装指令,直接复制本页面的安装指令,粘贴到你的 Agent 或终端中执行即可。

如果你不确定自己的 Agent 如何安装,可以直接问它:

如何安装 astronomer/agents#cosmos-dbt-fusion?

如何在 Claude Code 中安装 astronomer/agents#cosmos-dbt-fusion?

如何在 Cursor 中安装 astronomer/agents#cosmos-dbt-fusion?

让当前 Agent 根据自己的 Skill 加载 / 管理机制给出安装步骤,通常比照抄通用命令更可靠。不同 Agent 的 Skill 存放位置和加载方式不同,具体以对应 Agent 当前版本为准。

二、安装后如何使用

安装后,当你的任务涉及 Airflow、Cosmos、dbt 或 dbt Fusion 时,Agent 会调用该 Skill 的领域知识。你不需要记忆特殊命令,用自然语言描述需求即可。

示例:

使用 cosmos-dbt-fusion,帮我把这个 dbt 项目配置成 Airflow 上的 Cosmos 编排 DAG。

使用 cosmos-dbt-fusion,检查这个 Cosmos DAG 在 dbt Fusion 环境下有没有配置问题。

使用 cosmos-dbt-fusion,说明 Cosmos 和 dbt Fusion 组合时常见的兼容性注意点。

建议在提问时说明:

– 你用的是 Airflow 哪个大版本
– dbt 项目结构大概是什么样
– 目标是 dbt Core 还是 dbt Fusion
– 是否已有现成 DAG

信息越具体,Agent 给出的方案越贴近你的实际环境。

三、卸载

不同 Agent 的 Skill 安装位置和管理方式不同。常见做法:

– 使用对应 Agent / Skill 管理器提供的删除方式,移除该 Skill
– 直接询问当前 Agent:

如何卸载 astronomer/agents#cosmos-dbt-fusion?

如果没有统一的卸载命令,直接让 Agent 帮你定位并移除,通常比手动猜路径更稳妥。

常见问题

1. 我不用 Airflow,只用 dbt,能用这个 Skill 吗?

价值有限。该 Skill 的核心是 Cosmos(Airflow 与 dbt 的桥接)与 dbt Fusion 的组合场景。只做纯 dbt 建模时,普通 Agent 能力基本够用。

2. 它和普通的 dbt Skill 有什么区别?

普通 dbt Skill 一般聚焦 dbt 语法、模型、测试。这个 Skill 的侧重点是 Cosmos 在 Airflow 中的编排方式,以及 dbt Fusion 环境下的协同问题,属于更窄但更垂直的场景。

3. 安装后 Agent 没反应,怎么排查?

可以按顺序检查:

– 该 Agent 当前版本是否支持 Skills 或自定义 Skill 加载
– Skill 是否被放到了 Agent 识别的目录
– 是否需要重启 Agent 或重新加载
– 提问时是否明确涉及 Airflow / Cosmos / dbt 场景

如果仍不生效,直接问当前 Agent:它是否已加载该 Skill。

4. 可以同时安装到多个 Agent 吗?

可以。Skill 通常是文本与规则内容,复制到不同 Agent 的 Skill 目录即可,不会有冲突。但每个 Agent 的目录结构不同,建议逐个按其机制安装。

5. Skill 更新后需要重新安装吗?

取决于你的安装方式。如果是跟随远端仓库同步的安装方式,更新源后重新同步即可;如果是把内容复制到本地,则需要重新拉取覆盖。建议以该仓库当前的安装说明为准。

6. 中国大陆使用是否需要额外网络条件?

Skill 本身是文本内容,加载不需要特殊网络。但安装依赖、拉取 GitHub 仓库、安装 dbt / Airflow 包时,可能受网络环境影响。若主要仓库访问困难,可使用你所在环境允许的方式获取官方内容。

7. 是否适合直接用在国内生产环境?

是否用于生产取决于你的整体数据平台策略,而非这个 Skill 本身。建议先在测试环境验证 Agent 生成的 DAG 与配置,确认无误后再上生产。它提供的是实践指导,不构成生产级保证。

Skill 更新日志

版本列表
astro-airflow-mcp-0.9.1 最新
补丁版本:修复了在 FastMCP 3.4.3+ 下插件 `/mcp/v1/` 端点上的 `421 Misdirected Request` 问题,并将 `fastmcp` 固定在一个有界范围内。 ## 自 0.9.0 以来的修复内容 ### 修复来自 FastMCP 主机守卫的 `421 Misdirected Request`(#241) FastMCP 3.4.3 默认启用了 `HostOriginGuardMiddleware`:它只接受回环 `Host` 头(`127.0.0.1`/`localhost`/`::1`)以及 ASGI `scope["server"]` 主机,对其他任何内容返回 `421 Misdirected Request`。在插件模式下,MCP 应用嵌入在 Airflow webserver 中,并通过 Deployment 自身的主机名访问,因此在未固定版本、解析到 fastmcp 3.4.3 的安装中,对 `/mcp/v1/` 的每个请求都被以 421 拒绝。 - 插件现在保持守卫**启用**,但将 `allowed_hosts` 限定为 Deployment 的主机名,从 `AIRFLOW__WEBSERVER__BASE_URL` 环境变量读取(该变量在插件导入时存在,不同于 Airflow 的 `conf`)。DNS 重绑定保护保持开启,而不是被关闭。 - `ASTRO_MCP_ALLOWED_HOSTS`(逗号分隔)可为自定义域名覆盖允许列表;仅当无法推导出主机名时(非 Astro 嵌入),插件才回退到禁用守卫。 - 独立模式(`mcp.run`)不变——它保持 FastMCP 的默认回环保护,这正是本地绑定服务器所需的。 - 固定 `fastmcp>=3.4.3,<4`,使行为确定,不会在 FastMCP 下一次默认翻转时悄然改变。 ## 安装 ``` uvx --from 'astro-airflow-mcp==0.9.1' af ``` ## 升级说明 如果你曾临时固定 `fastmcp<3.4.3` 作为变通方案,升级到 0.9.1 后可以去掉该固定。
astro-airflow-mcp-0.9.0
次要版本:现在每个 MCP 工具都返回结构化的、可供 agent 操作的错误,并带有 MCP 安全注解,此外 `af runs list` 新增了结束日期过滤器。 ## 自 0.8.2 以来的新内容 ### 结构化工具错误 + MCP 安全注解(#221) 工具此前将所有失败都折叠为裸的 `str(e)`——agent 无法区分错误的 `dag_id`(修正参数并重试)与 Airflow 不可达(停止并上报),因为两者都返回相同的不透明字符串。 - **错误即数据。** 现在每个工具都返回 `error`、`error_type`、`hint`、`retryable` 标志,以及回显的标识参数(例如 `dag_id`)。`retryable` 将调用方可修复的问题(错误参数、400/404/429)与硬性阻塞(认证、5xx、只读、不可达)区分开,因此 agent 知道修正后的重试是否有帮助。对 `ReadOnlyError`、`NotFoundError`、Astro 认证错误、`httpx` 状态码、超时和传输错误进行分类。 - **所有 34 个工具上的安全注解。** 27 个读取标记为只读 + 幂等;7 个写入带有准确的提示——`delete_dag_run` 破坏性 + 非幂等,`clear_*` 破坏性 + 幂等,`pause`/`unpause` 幂等,`trigger*` 非幂等。客户端可以在调用*之前*对写入进行门控,补充现有的 `AF_READ_ONLY` 守卫(后者仅在模型决定调用*之后*才拒绝)。默认谨慎:只有当工具明确选择加入时才会被宣传为“安全”。 - **凭据卫生。** `normalize_airflow_url` 现在从 netloc 中剥离 `user:password@`(主机/端口/IPv6 原样保留),因此凭据不会泄漏到日志或错误消息中嵌入的 URL 中。 向后兼容——`str(e)` 始终保留在 `error` 内,因此任何 grep 旧裸字符串响应的消费者仍可工作;新消费者可获得结构化字段。 ### `af runs list` 的 `--end-date-gte` / `--end-date-lte` 过滤器(#233) 按运行*结束*时间过滤运行,与现有的 `--start-date-*` 过滤器对应——适用于“过去 N 分钟内完成了哪些运行以及它们如何结束”的恢复扫描。ISO 8601 时间戳;`--dag-id` 可选。关闭 #225。 ```bash # 在某个时间窗口内结束的运行,结合状态 af runs list --end-date-gte 2026-06-10T15:00:00Z --state failed ``` ## 安装 ``` uvx --from 'astro-airflow-mcp==0.9.0' af ``` ## 升级说明 0.8.2 的直接替换——仅新增,无破坏性变更。结构化错误负载是旧字符串的超集(`str(e)` 保留在 `error` 中),因此现有消费者不受影响;新消费者可以读取结构化字段。
astro-airflow-mcp-0.8.2
补丁版本:修复当环境中设置了 `ASTRO_API_TOKEN` 时 `af instance discover` 静默报告“No instances discovered”的问题。 ## 自 0.8.1 以来的修复内容 - **解析 astro CLI 表格输出时跳过前导行**(#213):当设置了 `ASTRO_API_TOKEN` 时,astro CLI 会在 stdout 前加上 `Using an Astro API Token`。af 表格解析器将该行当作表头行,导致每个 `astro deployment list` 行都折叠为名为 `using_an_astro_api_token` 的单列,并丢弃每个 deployment——discover 会静默返回零个实例。解析器现在从顶部逐行遍历,并选择第一个边界检测出 2+ 列的行作为真正的表头,因此 astro CLI 发出的任何单行前导都会被自动跳过。 ## 安装 ``` uvx --from 'astro-airflow-mcp==0.8.2' af ``` ## 升级说明 0.8.1 的直接替换。无配置或 CLI 变更。任何在 shell 中设置了 `ASTRO_API_TOKEN` 时遇到 `No instances discovered` 的人现在都能正确看到 deployments。
astro-airflow-mcp-0.8.1
补丁版本:修复针对 webserver URL 带有 `?orgId=…` 查询字符串的 Astro deployments 的版本检测。 ## 自 0.8.0 以来的修复内容 - **从 Airflow URL 中剥离查询字符串 / 片段**(#210):Astro 发现有时返回 `webserver_url=https://host/dep?orgId=org_…`。由于 API URL 是通过字符串拼接构建的(`f"{airflow_url}/api/v2/version"`),结果是 `https://host/dep?orgId=org_…/api/v2/version`,API 路径被吞入查询字符串,破坏了版本检测以及随后的每次 API 调用。新的 `normalize_airflow_url()` 辅助函数剥离查询、片段和尾部斜杠,应用于四个边界:`discovery/astro_cli.py`(在源头)、`adapters/base.py`(适配器构造函数)、`adapters/airflow_v3.py`(令牌交换)和 `adapters/__init__.py`(`detect_version`)。 - **更好的版本检测错误**:`detect_version` 现在收集每个探测的失败并在 `RuntimeError` 消息中呈现(`Probes: /api/v2: HTTP 404; /api/v1: HTTP 502; ...`),而不是通用的“Failed to detect Airflow version”。还捕获了此前静默漏过的 `200 但非 JSON 正文` 情况。 ## 安装 ``` uvx --from 'astro-airflow-mcp==0.8.1' af ``` ## 升级说明 0.8.0 的直接替换。无配置或 CLI 变更。已将 `?orgId=…` 烘焙到其存储的 `airflow_url` 中的现有用户不再需要重新运行 `af discover`——该值在读取时被规范化。
astro-airflow-mcp-0.8.0
分层配置版本。`af` 现在跨全局、项目共享和项目本地文件读取和写入配置(镜像 `git config` 的 system/global/local 模型),并与 astro-cli 在 `~/.astro/` 共享配置主目录。 ## 自 0.7.0 以来的新内容 - **分层配置**(#207):三个作用域与 astro-cli 的配置树共置 - 全局:`~/.astro/config.yaml`(每用户) - 项目共享:`/.astro/config.yaml`(已提交;团队共享) - 项目本地:`/.astro/config.local.yaml`(gitignored;每开发者当前实例) - `` 通过从 cwd 向上查找 `.astro/` 找到。项目内的写入路由:`add` / `discover` → 项目共享,`use` → 项目本地。用 `--global` / `--project` / `--local` 覆盖。`AF_CONFIG=` 完全绕过分层。 - 读取优先级:项目本地 > 项目共享 > 全局。较窄作用域中的同名实例会遮蔽。 - **默认全局路径移动**从 `~/.af/config.yaml` 到 `~/.astro/config.yaml`。旧路径作为一次性只读回退被尊重(带有 stderr 弃用提示)。运行 `af migrate` 进行显式迁移并保留 `.bak`。 - **新命令**: - `af migrate`:幂等。报告 `migrated` / `already-migrated` / `nothing-to-migrate`。 - `af instance show `:`git config --show-origin` 风格的查找,报告实例来自哪个文件。 - **`af instance list`** 现在包含作用域和来源列,并用 `*` 标记当前实例。 - **`save()` 与外来顶层键合并**(`project`、`cloud`、`contexts`、`telemetry.notice_shown`),以便 `af` 和 astro-cli 可以共存于同一文件。往返时保留文件模式;新文件以 0600 写入。 - **Skill**:停止在 `astro dev init` 上固定 Airflow 版本(#206)。修复了一个幻觉,即模型传递 `--airflow-version 3.1.0`,尽管 CLI 默认使用最新版。 ## 安装 ``` uvx --from 'astro-airflow-mcp==0.8.0' af ``` ## 升级说明 - 现有 `~/.af/config.yaml` 用户:不会中断。`af` 将其作为回退读取。方便时运行 `af migrate`。它会合并到 `~/.astro/config.yaml`,保留那里已有的任何 astro-cli 内容,并将旧文件重命名为 `.bak`。 - 在 astro 项目内,`af instance add` 现在默认写入 `.astro/config.yaml`(已提交)。凭据优先使用 `${ENV_VAR}` 插值或 `astro_pat`,或传递 `--local` 用于 gitignored 机密,或 `--global` 用于个人配置。 - `AF_CONFIG=` 和 `AF_CONFIG=/dev/null` 语义不变。
astro-airflow-mcp-0.7.0
PAT 认证重写(#204)的稳定版本,加上 OSError 后续修复(#205) ## 自 0.6.4 以来的新内容 - `af instance discover astro` 现在通过 Auth0 刷新令牌交换复用用户的 `astro login` 会话,而不是铸造永久 `DEPLOYMENT_ADMIN` 令牌。发现的 deployments 使用 `auth.kind = astro_pat`,且从不将令牌写入 af 的配置 - 现有的 `kind = token` 和 `kind = basic` 实例保持不变继续工作(向后兼容) - 401 重试路径,带一次强制刷新,去抖动为每 60 秒一次 - 轮换的刷新令牌在 flock 下持久化回 `~/.astro/config.yaml`,以免 astro CLI 自身的会话中断 - `astro_context` 在发现时始终固定(避免 `astro context switch` 后的跨租户令牌泄漏) - 朴素的 `expiresin` 字符串锚定到 UTC(纵深防御) - `_read_yaml` 捕获 `FileNotFoundError`、`NotADirectoryError`、`IsADirectoryError`,因此非文件的 `ASTRO_HOME` 路径会呈现干净的“run astro login”错误,而不是被掩盖的版本检测失败 ## 验证 - 490 个单元测试通过;CI 在所有矩阵条目上绿色(py3.10/11/12,AF2/AF3 集成) - 完整破坏测试组(约 30 个场景)针对 0.7.0a1 和 0.7.0a2 运行干净 - 使用 otto agent 针对 AF3 云 deployment 和本地 AF2 独立版进行端到端测试 - 所有测试中未铸造任何 deployment 令牌 ## 安装 ``` uvx --from 'astro-airflow-mcp==0.7.0' af ``` ## 升级说明 - 如果你有由旧 `af instance discover astro` 铸造的 deployment 令牌的现有 af 配置,它们继续工作。你可以不管它们,或重新运行 discover(如果传递 `--overwrite`,它会覆盖为 PAT 支持的实例) - 留在你的 astro deployments 中的现有 `af-discover-*` 令牌现在是孤儿。方便时在 astro UI 中撤销它们
astro-airflow-mcp-0.7.0a2
后续 alpha,在 0.7.0a1 之上捆绑来自 #205 的 OSError 修复 ## 自 0.7.0a1 以来的新内容 - `_read_yaml` 现在捕获表示“无可读 astro 配置”的特定 OSError 形态(`FileNotFoundError`、`NotADirectoryError`、`IsADirectoryError`),而不是泄漏到 `detect_version` 成为被掩盖的“Failed to detect Airflow version”(#205) - `PermissionError` 和其他意外 OS 错误会传播,以便清晰呈现,而不是在“run astro login”处死胡同 ## 安装 ``` uvx --from 'astro-airflow-mcp==0.7.0a2' af ```
astro-airflow-mcp-0.7.0a1
PAT 认证重写(PR #204)的 alpha 版本,用于在 otto 中测试后再提升为 0.7.0 稳定版 ## 新内容 - `af instance discover astro` 现在通过 Auth0 刷新令牌交换复用用户的 `astro login` 会话,而不是铸造永久 `DEPLOYMENT_ADMIN` 令牌 - 实例配置中新增 `auth.kind = astro_pat`;现有 `token` / `basic` 实例保持不变继续工作 - 401 重试路径,带一次强制刷新,去抖动为每 60 秒一次 - 轮换的刷新令牌在 flock 下持久化回 ~/.astro/config.yaml,以免 astro CLI 自身的会话中断 - 朴素的 `expiresin` 字符串锚定到 UTC(针对手工编辑的纵深防御) ## 安装 ``` uvx --from 'astro-airflow-mcp==0.7.0a1' af ``` ## 为什么是 alpha 发布 alpha 以在提升为 0.7.0 之前,用 otto 的包装器(通过 uvx 固定 af)进行端到端验证
astro-airflow-mcp-0.6.4
## 变更内容 * 在 `runs trigger-wait` 中检测暂停的 DAG,作者 @jlaneve,见 https://github.com/astronomer/agents/pull/190 * af CLI:将空的 AIRFLOW_API_URL 视为显式无操作,作者 @jlaneve,见 https://github.com/astronomer/agents/pull/191 * af CLI:当 AF_CONFIG 指向非普通文件时不要崩溃,作者 @kaxil,见 https://github.com/astronomer/agents/pull/193 * 修复 list_dag_runs(MCP 工具 + af CLI)返回最旧运行在前的问题,作者 @JoaVirtudes19,见 https://github.com/astronomer/agents/pull/192 ## 新贡献者 * @JoaVirtudes19 在 #192 中做出首次贡献 **完整变更日志**:https://github.com/astronomer/agents/compare/astro-airflow-mcp-0.6.3...astro-airflow-mcp-0.6.4
astro-airflow-mcp-0.6.3
## 变更内容 * 扩展插件模式文档,包含 Astro 认证、角色和故障排除,作者 @tayloramurphy,见 https://github.com/astronomer/agents/pull/184 * 为 MCP 服务器添加 Airflow 2.x 插件模式支持,作者 @kaxil,见 https://github.com/astronomer/agents/pull/186 **完整变更日志**:https://github.com/astronomer/agents/compare/astro-airflow-mcp-0.6.2...astro-airflow-mcp-0.6.3
astro-airflow-mcp-0.6.2
## 变更内容 * 修复远程 deployments 的 Airflow MCP 插件模式,作者 @kaxil,见 https://github.com/astronomer/agents/pull/183 **完整变更日志**:https://github.com/astronomer/agents/compare/astro-airflow-mcp-0.6.1...astro-airflow-mcp-0.6.2
astro-airflow-mcp-0.6.1
## Bug 修复 - 修复当配置文件具有不同实例的凭据时的环境变量认证(#181) - 修复:从 TERMINAL_DAG_RUN_STATES 中移除 upstream_failed(#166)
astro-airflow-mcp-0.6.0
## 新内容 ### `af registry` — 查询 Airflow Provider Registry(#145) 四个新的 CLI 命令,可直接从终端浏览 [Airflow Provider Registry](https://airflow.apache.org/registry)——无需运行中的 Airflow 实例: - `af registry providers` — 列出所有 providers(id、name、version、lifecycle) - `af registry modules ` — 列出 operators、hooks、sensors 和 transfers - `af registry parameters ` — 显示 provider 类的构造函数参数 - `af registry connections ` — 显示连接类型及其字段 支持 `--version` 固定到特定 provider 发布版,结果本地缓存(最新版 1 小时,版本化快照 30 天)。使用 `--no-cache` 绕过。 ```bash af registry modules amazon | jq '.modules[] | select(.type == "hook") | .name' af registry parameters ftp | jq '.classes | keys[]' ``` ### 改进 - 为 `list_dag_runs` MCP 工具添加 `dag_id` 过滤器(#163) - 澄清 `get_dag_stats` 需要 `dag_ids` 作为列表(#162) ### 修复 - 使发现令牌名称用户特定以避免冲突(#156) - 修复 airflow-adapter skill frontmatter(#147) **完整变更日志**:https://github.com/astronomer/agents/compare/astro-airflow-mcp-0.5.1...astro-airflow-mcp-0.6.0
astro-airflow-mcp-0.5.1
## 变更内容 * 改进 agent 检测,作者 @schnie,见 https://github.com/astronomer/agents/pull/141 * 分离 agent 和 ci_system 属性,作者 @schnie,见 https://github.com/astronomer/agents/pull/142 **完整变更日志**:https://github.com/astronomer/agents/compare/astro-airflow-mcp-0.5.0...astro-airflow-mcp-0.5.1
astro-airflow-mcp-0.5.0
## 变更内容 * fix:运行 --plugin-dir 时加载 hooks,作者 @milton-li,见 https://github.com/astronomer/agents/pull/102 * 确保 airflow mcp 包高效使用 uvx 缓存,作者 @schnie,见 https://github.com/astronomer/agents/pull/100 * fix:从 skill 参考文件中移除 doctoc 目录,作者 @kaxil,见 https://github.com/astronomer/agents/pull/107 * 基于早期用户反馈改进 authoring-dags skill,作者 @tayloramurphy,见 https://github.com/astronomer/agents/pull/104 * 添加 `af` CLI 遥测,作者 @schnie,见 https://github.com/astronomer/agents/pull/106 * 在 skills 中使用 `af` cli,作者 @milton-li,见 https://github.com/astronomer/agents/pull/108 * docs:向 README 添加缺失的 skills,作者 @tayloramurphy,见 https://github.com/astronomer/agents/pull/112 * 重构 skill hooks 并扁平化 analyzing-data 脚本,作者 @milton-li,见 https://github.com/astronomer/agents/pull/113 * docs:向 Airflow 2→3 迁移添加共享工具导入破坏性变更,作者 @tayloramurphy,见 https://github.com/astronomer/agents/pull/111 * 将 init skill 重命名为 warehouse-init,作者 @kaxil,见 https://github.com/astronomer/agents/pull/114 * 添加 BigQuery 作业标签支持并修复 location 参数 bug,作者 @kaxil,见 https://github.com/astronomer/agents/pull/118 * 添加 Snowflake query_tag 支持,作者 @kaxil,见 https://github.com/astronomer/agents/pull/119 * 添加 Postgres application_name 支持,作者 @kaxil,见 https://github.com/astronomer/agents/pull/120 * 修复 `cosmos-dbt-core/SKILL.md`,作者 @tatiana,见 https://github.com/astronomer/agents/pull/122 * 进一步改进 Cosmos skills,作者 @tatiana,见 https://github.com/astronomer/agents/pull/123 * feat:添加 deployment 管理 agents,作者 @kh3dron,见 https://github.com/astronomer/agents/pull/121 * fix:为自签名证书添加 SSL 证书验证绕过,作者 @kaxil,见 https://github.com/astronomer/agents/pull/126 * 触发前自动取消暂停 DAG,作者 @josh-fell,见 https://github.com/astronomer/agents/pull/127 * docs:澄清 Snowflake 账户标识符格式,作者 @josh-fell,见 https://github.com/astronomer/agents/pull/130 * 移除写入键,作者 @schnie,见 https://github.com/astronomer/agents/pull/128 * feat:添加 `af runs delete` 和 `af runs clear` 命令,作者 @tayloramurphy,见 https://github.com/astronomer/agents/pull/129 * 迁移到 prek.toml 配置进行静态检查,作者 @josh-fell,见 https://github.com/astronomer/agents/pull/131 * 为 MCP 工具调用添加遥测跟踪,作者 @schnie,见 https://github.com/astronomer/agents/pull/134 * 将遥测配置移入 config.yaml,作者 @schnie,见 https://github.com/astronomer/agents/pull/135 * 从 mypy 迁移到 ty 进行类型检查,作者 @josh-fell,见 https://github.com/astronomer/agents/pull/133 * 处理 Copilot 关于类型安全的反馈,作者 @kaxil,见 https://github.com/astronomer/agents/pull/139 * 实现 AF_READ_ONLY 模式以阻止写操作,作者 @igorastronomer,见 https://github.com/astronomer/agents/pull/138 ## 新贡献者 * @tatiana 在 https://github.com/astronomer/agents/pull/122 中做出首次贡献 * @kh3dron 在 https://github.com/astronomer/agents/pull/121 中做出首次贡献 **完整变更日志**:https://github.com/astronomer/agents/compare/plugin-0.2.0...astro-airflow-mcp-0.5.0
plugin-0.2.0
## Claude 插件发布 自初始发布以来的首次版本号提升,反映累积的变更: ### 新 Skills - Cosmos 集成 - Airflow HITL(Human-in-the-Loop) - Lineage 注解 - 最佳实践 - Airflow 2-3 迁移 - 以及更多... ### 改进 - 用于 skill 建议的 hook 改进 - 用于 Astro deployments 的 `af` CLI 集成 - 多数据库支持(Snowflake、BigQuery 等) ### 安装 ```bash claude plugin marketplace add astronomer/agents claude plugin install data@astronomer ``` 或更新现有安装: ```bash claude plugin marketplace update astronomer/agents ```
astro-airflow-mcp-0.4.1
## 变更内容 * feat(skills):更新 testing-dags 以使用 af CLI,作者 @kaxil,见 https://github.com/astronomer/agents/pull/75 * refactor(cli):用子命令替换 `af api` 标志,作者 @kaxil,见 https://github.com/astronomer/agents/pull/76 * 添加 lineage 注解和 OpenLineage extractor skills,作者 @jlaneve,见 https://github.com/astronomer/agents/pull/66 * 向根 README 添加 af CLI 文档,作者 @schnie,见 https://github.com/astronomer/agents/pull/78 * feat(cli):为 list 命令添加过滤选项,作者 @jlaneve,见 https://github.com/astronomer/agents/pull/79 * docs:添加社区健康文件,作者 @jlaneve,见 https://github.com/astronomer/agents/pull/80 * docs:添加 CODE_OF_CONDUCT.md,作者 @jlaneve,见 https://github.com/astronomer/agents/pull/81 * 向 README 添加路线图部分,作者 @tayloramurphy,见 https://github.com/astronomer/agents/pull/74 * 添加 `af instance discover` 命令以自动发现 Astro deployments,作者 @schnie,见 https://github.com/astronomer/agents/pull/63 * Skill:Airflow HITL,作者 @igorastronomer,见 https://github.com/astronomer/agents/pull/95 * Skill:更新 airflow 2-3 迁移 skill,作者 @igorastronomer,见 https://github.com/astronomer/agents/pull/99 * Skill:Cosmos,作者 @igorastronomer,见 https://github.com/astronomer/agents/pull/96 ## 新贡献者 * @igorastronomer 在 https://github.com/astronomer/agents/pull/95 中做出首次贡献 **完整变更日志**:https://github.com/astronomer/agents/compare/astro-airflow-mcp-0.4.0...astro-airflow-mcp-0.4.1
astro-airflow-mcp-0.4.0
## 变更内容 * 更好地支持 airflow skill,作者 @schnie,见 https://github.com/astronomer/agents/pull/65 * fix:为 uvx af CLI 使用 @latest 后缀以防止陈旧版本问题,作者 @jlaneve,见 https://github.com/astronomer/agents/pull/68 * fix:配置加载失败时警告而不是静默回退,作者 @jlaneve,见 https://github.com/astronomer/agents/pull/70 * feat(cli):添加 `af api` 命令以直接访问 Airflow REST API,作者 @kaxil,见 https://github.com/astronomer/agents/pull/73 **完整变更日志**:https://github.com/astronomer/agents/compare/astro-airflow-mcp-0.3.0...astro-airflow-mcp-0.4.0
astro-airflow-mcp-0.3.0
## 变更内容 * 将 astro-dwh-mcp 切换为从 git 标签动态版本化,作者 @schnie,见 https://github.com/astronomer/agents/pull/46 * 提升 MCP 服务器版本标签,作者 @schnie,见 https://github.com/astronomer/agents/pull/47 * feat:airflow mcp skill 和 hook,作者 @milton-li,见 https://github.com/astronomer/agents/pull/45 * 添加 Cursor hooks 兼容性,作者 @kaxil,见 https://github.com/astronomer/agents/pull/50 * 添加 clear_task_instances MCP 工具以重试失败任务,作者 @petedejoy,见 https://github.com/astronomer/agents/pull/51 * 按域将 server.py 拆分为模块化工具文件,作者 @jlaneve,见 https://github.com/astronomer/agents/pull/52 * 更新 pre-commit hooks,作者 @jedcunningham,见 https://github.com/astronomer/agents/pull/55 * 修复 skill hook 路径以解析到正确目录,作者 @josh-fell,见 https://github.com/astronomer/agents/pull/56 * 为 analyzing-data skill 添加多数据库支持,作者 @kaxil,见 https://github.com/astronomer/agents/pull/57 * 向 analyzing-data skill 添加多数据库文档,作者 @kaxil,见 https://github.com/astronomer/agents/pull/58 * 将配置路径从 `~/.astro/ai/config/` 重命名为 `~/.astro/agents/`,作者 @kaxil,见 https://github.com/astronomer/agents/pull/59 * 通过 SQLAlchemy 连接器添加 Redshift 支持,作者 @kaxil,见 https://github.com/astronomer/agents/pull/60 * 用统一方言注册表重构 SQLAlchemy 连接器,作者 @kaxil,见 https://github.com/astronomer/agents/pull/61 * 添加 Airflow API Skill,作者 @schnie,见 https://github.com/astronomer/agents/pull/53 * 添加 CLI 命令并修复 CI 构建,作者 @schnie,见 https://github.com/astronomer/agents/pull/62 ## 新贡献者 * @petedejoy 在 https://github.com/astronomer/agents/pull/51 中做出首次贡献 * @jedcunningham 在 https://github.com/astronomer/agents/pull/55 中做出首次贡献 **完整变更日志**:https://github.com/astronomer/agents/compare/astro-airflow-mcp-0.2.3...astro-airflow-mcp-0.3.0
astro-airflow-mcp-0.2.3
该版本暂未提供更新说明。

暂无评论

none
暂无评论...