Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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**进行对齐验证
Expand All @@ -227,7 +227,7 @@ Paddle 支持自动生成 inplace API,无需在`ops.yaml`中单独配置。当
3. **流程推进的豁免与放弃条件**:
- **豁免条件**:
* 每一个执行步骤均需调用相应的 skill 来执行
* 当前仅支持方案 1/2,若决策为其他方案,则该 API 跳过,只需记录决策结果即可,不要自行处理
* 当前仅支持方案 1/2/3,若决策为其他方案,则该 API 跳过,只需记录决策结果即可,不要自行处理
- **放弃策略**(合理分配精力,最大化成功率):
* **放弃判断标准**:
- 当某个 API 在 Step2 或 Step3 经过多次尝试(建议 3 次)仍无法通过验证
Expand All @@ -245,6 +245,8 @@ Paddle 支持自动生成 inplace API,无需在`ops.yaml`中单独配置。当

## 4.2 详细步骤

依此顺序执行,每个 Step 结束后才进入下一个 Step:

### Step 1: 方案决策 ⚙️

**目标**:确定每个 API 的改动方案
Expand All @@ -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. 输出:是否代码修改无误(即单测运行通过)
Expand Down Expand Up @@ -320,7 +322,7 @@ Paddle 支持自动生成 inplace API,无需在`ops.yaml`中单独配置。当
1. **流程正向推进原则**
- 正常情况下必须遵循 Step1 → Step2 → Step3 → Step4 → Step5 的顺序
- 每个步骤完成并验证通过后,才能进入下一步骤
- 禁止跳过任何步骤(特别是 Step3 对齐验证步骤和 Step5 代码提交步骤
- 禁止跳过任何步骤(特别是 Step3 对齐验证步骤

2. **异常回溯调整原则**
- 当 Step2(代码修改)或 Step3(对齐验证)多次尝试仍无法通过时
Expand Down
Original file line number Diff line number Diff line change
@@ -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
---

Expand Down
Original file line number Diff line number Diff line change
@@ -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 调度效率。
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

该描述中英文与中文之间缺少空格(如“C++下沉”“C++层”)。按本仓库中文文档书写规范,建议改为“C++ 下沉”“C++ 层”,以保持中英文混排一致性。

Suggested change
description: 负责《Paddle API 对齐 PyTorch 项目》中 Step2:API 代码修改,实施 C++下沉的代码开发。通过将 Python API 下沉至 C++层,可以减少 Python 装饰器带来的性能开销,提升 API 调度效率。
description: 负责《Paddle API 对齐 PyTorch 项目》中 Step 2:API 代码修改,实施 C++ 下沉的代码开发。通过将 Python API 下沉至 C++ 层,可以减少 Python 装饰器带来的性能开销,提升 API 调度效率。

Copilot uses AI. Check for mistakes.
allowed-tools: Read Grep‌ Glob‌ Edit Bash
context: fork
background: true
verbose: true
disable-model-invocation: false
---

Expand Down
Original file line number Diff line number Diff line change
@@ -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
---

Expand All @@ -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` 等标记的**已跟踪文件**,则该仓库**需要提交**
- 若仓库中只有 `??` 标记的**未跟踪文件**,则该仓库**无需提交**
- 若仓库无任何改动,则该仓库**无需提交**
Comment on lines +18 to +29
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里用 git status --untracked-files=no 并在判断标准中将“只有 ?? 未跟踪文件”视为“无需提交”,会导致新增但应纳入提交的文件(如新增测试/文档)被忽略,最终 PR 缺文件。建议保留对未跟踪文件的可见性(不加 --untracked-files=no),并在流程里明确:需要人工甄别未跟踪文件是否属于本次改动,属于则应纳入提交。

Copilot uses AI. Check for mistakes.

对每个仓库执行以下操作(顺序: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 完成
Comment on lines 82 to 86
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里使用 git add -u 只会暂存已跟踪文件的修改/删除,不会把新增文件(例如新增的 docs 页面或新增测试文件)加入提交,容易造成提交不完整。建议改为在确认无多余文件后使用 git add -A,或在保留 -u 的同时补充明确步骤:对需要纳入的新增文件单独 git add <path> 并在提交前检查 git diff --cached

Copilot uses AI. Check for mistakes.
# 如果 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 仓库
Expand All @@ -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):
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step 2 描述的是“从多个渠道获取并取并集”,这里却写成“根据自动获取的 PyTorch API 名单生成 PR”,表述不一致,容易让执行者误以为一定能自动得到名单。建议改为“根据 Step 2 获取/汇总的 PyTorch API 名单生成 PR”,或补充明确哪些渠道是自动、哪些需要人工输入。

Suggested change
根据自动获取的 PyTorch API 名单生成 PR,**仅对有代码改动的仓库**执行以下命令创建 PR(顺序:Paddle → Docs → PaConvert):
根据 Step 2 获取/汇总的 PyTorch API 名单生成 PR,**仅对有代码改动的仓库**执行以下命令创建 PR(顺序:Paddle → Docs → PaConvert):

Copilot uses AI. Check for mistakes.

```bash
# Paddle PR
Expand Down Expand Up @@ -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 分支
Expand Down
Original file line number Diff line number Diff line change
@@ -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
---

Expand Down
Original file line number Diff line number Diff line change
@@ -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 是否用法完全对齐一致
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里同一句里同时出现了 “Pytorch 对齐验证” 和 “PyTorch API”,大小写不一致。建议统一使用官方写法 “PyTorch”(即改为“PyTorch 对齐验证”)。

Copilot uses AI. Check for mistakes.
allowed-tools: Read Grep‌ Glob‌ Write‌ Edit Bash(python *)
disable-model-invocation: false
---
Expand Down