diff --git a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-change-decider/SKILL.md b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-change-decider/SKILL.md index 51250e43d43..fb72bfc8424 100644 --- a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-change-decider/SKILL.md +++ b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-change-decider/SKILL.md @@ -1,6 +1,6 @@ --- name: api-change-decider -description: 仅用于《Paddle API 对齐 PyTorch 项目》,负责 Step1:方案决策,分析 PyTorch API 与 Paddle API 之间的差异,制定合适的 API 改动方案 +description: 负责《Paddle API 对齐 PyTorch 项目》中 Step1:方案决策,分析 PyTorch API 与 Paddle API 之间的差异,制定合适的 API 改动方案 allowed-tools: Read Grep‌ Glob‌ WebSearch disable-model-invocation: false --- diff --git a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-compatibility/SKILL.md b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-compatibility/SKILL.md index b77209e5933..4f7296b9333 100644 --- a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-compatibility/SKILL.md +++ b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-compatibility/SKILL.md @@ -218,7 +218,7 @@ Paddle 支持自动生成 inplace API,无需在`ops.yaml`中单独配置。当 **执行逻辑**: 1. 接收用户输入的待对齐 API 列表(如 `torch.argmax`, `torch.log2`, `torch.logsumexp`) -2. **批量处理模式**:按 Step 顺序依次执行,每个 Step 处理完所有 API 后才进入下一个 Step +2. **批量处理模式**:依次顺序执行,每个 Step 结束后才进入下一个 Step - Step1:对**所有 API**进行方案决策,记录每个 API 的方案类型 - Step2:对**所有 API**进行代码修改 - Step3:对**所有 API**进行对齐验证 @@ -227,7 +227,7 @@ Paddle 支持自动生成 inplace API,无需在`ops.yaml`中单独配置。当 3. **流程推进的豁免与放弃条件**: - **豁免条件**: * 每一个执行步骤均需调用相应的 skill 来执行 - * 当前仅支持方案 1/2,若决策为其他方案,则该 API 跳过,只需记录决策结果即可,不要自行处理 + * 当前仅支持方案 1/2/3,若决策为其他方案,则该 API 跳过,只需记录决策结果即可,不要自行处理 - **放弃策略**(合理分配精力,最大化成功率): * **放弃判断标准**: - 当某个 API 在 Step2 或 Step3 经过多次尝试(建议 3 次)仍无法通过验证 @@ -245,6 +245,8 @@ Paddle 支持自动生成 inplace API,无需在`ops.yaml`中单独配置。当 ## 4.2 详细步骤 +依此顺序执行,每个 Step 结束后才进入下一个 Step: + ### Step 1: 方案决策 ⚙️ **目标**:确定每个 API 的改动方案 @@ -271,7 +273,7 @@ Paddle 支持自动生成 inplace API,无需在`ops.yaml`中单独配置。当 2. 根据方案类型,调用对应的子智能体,每个子智能体批量处理其所负责的 API: - 方案 1 → 调用 `/python-decorator` skill - 方案 2 → 调用 `/cpp-sink` skill - - 方案 3 → `/python-decorator`和`/cpp-sink`skill 支持新增 out 参数,其他修改无对应 skill 支持,豁免 + - 方案 3 → `/python-decorator`支持新增 out 参数,其他修改无对应 skill 支持,豁免 - 方案 4 → 无对应 skill 支持,豁免 - 方案 5 → 无对应 skill 支持,豁免 3. 输出:是否代码修改无误(即单测运行通过) @@ -320,7 +322,7 @@ Paddle 支持自动生成 inplace API,无需在`ops.yaml`中单独配置。当 1. **流程正向推进原则** - 正常情况下必须遵循 Step1 → Step2 → Step3 → Step4 → Step5 的顺序 - 每个步骤完成并验证通过后,才能进入下一步骤 - - 禁止跳过任何步骤(特别是 Step3 对齐验证步骤和 Step5 代码提交步骤) + - 禁止跳过任何步骤(特别是 Step3 对齐验证步骤) 2. **异常回溯调整原则** - 当 Step2(代码修改)或 Step3(对齐验证)多次尝试仍无法通过时 diff --git a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-docs-updater/SKILL.md b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-docs-updater/SKILL.md index 0a182208901..651a0e2c93c 100644 --- a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-docs-updater/SKILL.md +++ b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/api-docs-updater/SKILL.md @@ -1,10 +1,7 @@ --- name: api-docs-updater -description: 仅用于《Paddle API 对齐 PyTorch 项目》,负责 Step4,在 API 代码修改完成后,同步更新中文 API 文档,确保文档准确反映 API 的最新行为 +description: 负责《Paddle API 对齐 PyTorch 项目》中 Step4:API 文档修改,在 API 代码修改完成后,同步更新中文 API 文档,确保文档准确反映 API 的最新行为 allowed-tools: Read Grep Glob‌ Write‌ Edit -context: fork -background: true -verbose: true disable-model-invocation: false --- diff --git a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/cpp-sink/SKILL.md b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/cpp-sink/SKILL.md index 524d6cf16ee..2b1dca445e0 100644 --- a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/cpp-sink/SKILL.md +++ b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/cpp-sink/SKILL.md @@ -1,7 +1,10 @@ --- name: cpp-sink -description: 仅用于《Paddle API 对齐 PyTorch 项目》,负责 Step2:API 代码修改,实施 C++下沉的代码开发。通过将 Python API 下沉至 C++层,可以减少 Python 装饰器带来的性能开销,提升 API 调度效率。 +description: 负责《Paddle API 对齐 PyTorch 项目》中 Step2:API 代码修改,实施 C++下沉的代码开发。通过将 Python API 下沉至 C++层,可以减少 Python 装饰器带来的性能开销,提升 API 调度效率。 allowed-tools: Read Grep‌ Glob‌ Edit Bash +context: fork +background: true +verbose: true disable-model-invocation: false --- diff --git a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/create-pr/SKILL.md b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/create-pr/SKILL.md index a76b6f4ab7e..64a3030a7fa 100644 --- a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/create-pr/SKILL.md +++ b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/create-pr/SKILL.md @@ -1,7 +1,8 @@ --- name: create-pr -description: 仅用于《Paddle API 对齐 PyTorch 项目》,负责 Step5:代码提交,负责在前序步骤都完成后,分别对 Paddle、PaConvert、Docs 三个仓库创建或更新 Pull Request +description: 负责《Paddle API 对齐 PyTorch 项目》中 Step5:代码提交,分别对 Paddle、PaConvert、Docs 三个仓库创建或更新 Pull Request allowed-tools: Bash(git *) +denied-tools: [] disable-model-invocation: false --- @@ -14,42 +15,95 @@ disable-model-invocation: false ## Step 1:检查三个仓库的改动状态 -验证三个仓库都已有需要提交的改动: +三个仓库的本地目录名称分别为 Paddle、PaConvert、docs,自行找到对应本地路径,检查三个仓库是否有未提交的改动,**只对有代码改动的仓库进行后续提交**(排除未跟踪文件): ```bash -cd /path/to/Paddle && git status -cd /path/to/PaConvert && git status -cd /path/to/docs && git status +cd /path/to/Paddle && git status --untracked-files=no +cd /path/to/PaConvert && git status --untracked-files=no +cd /path/to/docs && git status --untracked-files=no ``` -## Step 2:添加改动并提交 +判断标准: +- 若仓库中有 `M`、`A`、`D` 等标记的**已跟踪文件**,则该仓库**需要提交** +- 若仓库中只有 `??` 标记的**未跟踪文件**,则该仓库**无需提交** +- 若仓库无任何改动,则该仓库**无需提交** -对每个仓库执行以下操作(顺序:Paddle → Docs → PaConvert): +## Step 2:获取 PyTorch API 名单 + +根据各仓库的改动状态,自行从多个渠道获取 PyTorch API 名单,**最后需要取并集**: + +**渠道一:从上下文获取** + +```bash +# 从 api-change-decider、python-decorator、cpp-sink 等前序步骤的上下文中自动提取 API 名单 +``` + +**渠道二:从用户输入获取** + +```bash +# 用户直接提供 PyTorch API 名单,例如:torch.relu、torch.sigmoid、torch.tanh 等 +``` + +**渠道三:从 Paddle 仓库分析获取** + +若 Paddle 仓库有改动,分析以下位置: + +```bash +cd /path/to/Paddle +# 1. 分析任意 Python 文件的改动 +git diff origin/develop -- '*.py' | grep -E "^\+.*def|^\+.*class" + +# 2. 分析 python_api_info.yaml 的改动 +git diff origin/develop -- python_api_info.yaml +``` + +**渠道四:从 PaConvert 仓库分析获取** + +若 PaConvert 仓库有改动,从 `api_mapping.json` 提取标记为 `ChangePrefixMatcher` 的 API: + +```bash +cd /path/to/PaConvert +# 分析 api_mapping.json 中标记为 ChangePrefixMatcher 的 API +git diff origin/master -- api_mapping.json | grep -E "ChangePrefixMatcher|torch\." +``` + +**API 名单合并** + +```bash +# 将从各渠道获取的 API 名单取并集,确保不重复,生成最终的统一 API 名单 +# 例如:torch.relu, torch.sigmoid, torch.tanh, ... +``` + +## Step 3:添加改动并提交 + +仅对**有代码改动的仓库**执行以下操作(顺序:Paddle → Docs → PaConvert): ```bash # Paddle 仓库 cd /path/to/Paddle -git add -A +git add -u git commit -m "[API Compatibility] api_name_1/api_name_2/api_name_3/... Edit By AI Agent" # 等待 pre-commit hook 完成 # 如果 pre-commit 失败,修复问题后重新 git add 和 commit # docs 仓库 cd /path/to/docs -git add -A +git add -u git commit -m "[API Compatibility] api_name_1/api_name_2/api_name_3/... Edit By AI Agent" # 等待 pre-commit hook 完成 # 如果 pre-commit 失败,修复问题后重新 git add 和 commit # PaConvert 仓库 cd /path/to/PaConvert -git add -A +git add -u git commit -m "[API Compatibility] api_name_1/api_name_2/api_name_3/... Edit By AI Agent" # 等待 pre-commit hook 完成 # 如果 pre-commit 失败,修复问题后重新 git add 和 commit ``` -## Step 3:推送代码到 upstream claude 分支 +## Step 4:推送代码到 upstream claude 分支 + +仅对**有代码改动的仓库**执行推送操作: ```bash # Paddle 仓库 @@ -65,9 +119,9 @@ cd /path/to/PaConvert git push upstream HEAD:claude -f ``` -## Step 4:创建 PR +## Step 5:创建 PR -根据自动获取的 PyTorch API 名单生成 PR,执行以下命令创建 PR(顺序:Paddle → Docs → PaConvert): +根据自动获取的 PyTorch API 名单生成 PR,**仅对有代码改动的仓库**执行以下命令创建 PR(顺序:Paddle → Docs → PaConvert): ```bash # Paddle PR @@ -138,7 +192,13 @@ EOF # 二、注意事项 -- 从前序步骤的上下文中自动获取 PyTorch API 名单,无需用户输入 +- **PyTorch API 名单获取策略**: + - 先检查三个仓库的改动状态(Step 1) + - 根据各仓库的改动情况,灵活选择获取渠道 + - 从多个渠道获取的 API 名单需要**取并集**,确保完整性和准确性 + - Paddle 仓库改动分析:任意 Python 文件修改、python_api_info.yaml 修改 + - PaConvert 仓库改动分析:api_mapping.json 中标记为 `ChangePrefixMatcher` 的 API +- **仅对有代码改动的仓库进行提交和 PR 创建**,如果某个仓库无代码改动,则跳过该仓库的提交、推送和 PR 创建步骤 - 三个 PR 的 API 名单必须完全一致 - 如果 pre-commit hook 失败,修复问题后重新提交 - 所有改动必须推送到 upstream 的 claude 分支 diff --git a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/python-decorator/SKILL.md b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/python-decorator/SKILL.md index 2fdce2a457a..aeb5768017c 100644 --- a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/python-decorator/SKILL.md +++ b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/python-decorator/SKILL.md @@ -1,7 +1,10 @@ --- name: python-decorator -description: 仅用于《Paddle API 对齐 PyTorch 项目》,负责 Step2:API 代码修改,实施 Python 装饰器的代码开发。通过 Python 装饰器,在 Python 层为 Paddle API 提供参数别名、参数顺序、参数类型和参数用法的兼容转换,实现 PyTorch 风格的 API 调用,并保持 Paddle API 的向后兼容性。 +description: 负责《Paddle API 对齐 PyTorch 项目》中 Step2:API 代码修改,实施 Python 装饰器的代码开发。通过 Python 装饰器,在 Python 层为 Paddle API 提供参数别名、参数顺序、参数类型和参数用法的兼容转换,实现 PyTorch 风格的 API 调用,并保持 Paddle API 的向后兼容性。 allowed-tools: Read Grep‌ Glob‌ Edit Bash +context: fork +background: true +verbose: true disable-model-invocation: false --- diff --git a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/pytorch-alignment-validator/SKILL.md b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/pytorch-alignment-validator/SKILL.md index ff14844b7bd..4de107b428d 100644 --- a/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/pytorch-alignment-validator/SKILL.md +++ b/docs/dev_guides/coding_agent/api_compatibility/.claude/skills/pytorch-alignment-validator/SKILL.md @@ -1,6 +1,6 @@ --- name: pytorch-alignment-validator -description: 仅用于《Paddle API 对齐 PyTorch 项目》,负责 Step3:Pytorch 对齐验证,基于 PaConvert 工具验证 Paddle API 与 PyTorch API 是否用法完全对齐一致 +description: 负责《Paddle API 对齐 PyTorch 项目》中 Step3:Pytorch 对齐验证,基于 PaConvert 工具验证 Paddle API 与 PyTorch API 是否用法完全对齐一致 allowed-tools: Read Grep‌ Glob‌ Write‌ Edit Bash(python *) disable-model-invocation: false ---