mit einem Klick
create-pr
// 负责《Paddle API 对齐 PyTorch 项目》中 Step5:代码提交,分别对 Paddle、PaConvert、Docs 三个仓库创建或更新 Pull Request
// 负责《Paddle API 对齐 PyTorch 项目》中 Step5:代码提交,分别对 Paddle、PaConvert、Docs 三个仓库创建或更新 Pull Request
负责《Paddle API 对齐 PyTorch 项目》中 Step1:方案决策,分析 PyTorch API 与 Paddle API 之间的差异,制定合适的 API 改动方案
开展《Paddle API 对齐 PyTorch 项目》,负责项目整体统筹规划,调用多个 skill,完成输入的 API 对齐
负责《Paddle API 对齐 PyTorch 项目》中 Step4:API 文档修改,在 API 代码修改完成后,同步更新中文 API 文档,确保文档准确反映 API 的最新行为
负责《Paddle API 对齐 PyTorch 项目》中 Step2:API 代码修改,实施 C++下沉的代码开发。通过将 Python API 下沉至 C++层,可以减少 Python 装饰器带来的性能开销,提升 API 调度效率。
负责《Paddle API 对齐 PyTorch 项目》中 Step2:API 代码修改,实施 Python 装饰器的代码开发。通过 Python 装饰器,在 Python 层为 Paddle API 提供参数别名、参数顺序、参数类型和参数用法的兼容转换,实现 PyTorch 风格的 API 调用,并保持 Paddle API 的向后兼容性。
负责《Paddle API 对齐 PyTorch 项目》中 Step3:Pytorch 对齐验证,基于 PaConvert 工具验证 Paddle API 与 PyTorch API 是否用法完全对齐一致
| name | create-pr |
| description | 负责《Paddle API 对齐 PyTorch 项目》中 Step5:代码提交,分别对 Paddle、PaConvert、Docs 三个仓库创建或更新 Pull Request |
| allowed-tools | Bash(git *) |
| disable-model-invocation | false |
该 skill 负责将前序步骤的成果提交到三个代码库:
| 仓库 | 说明 | Base 分支 |
|---|---|---|
| PaddlePaddle/Paddle | API 代码实现 | develop |
| PaddlePaddle/PaConvert | PyTorch 兼容性测试 | master |
| PaddlePaddle/docs | 中文 API 文档 | develop |
三个仓库的本地目录名称分别为 Paddle、PaConvert、docs,自行找到对应本地路径,检查三个仓库是否有未提交的改动,只对有代码改动的仓库进行后续提交(排除未跟踪文件):
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
判断标准:
M、A、D 等标记的已跟踪文件,则该仓库需要提交?? 标记的未跟踪文件,则该仓库无需提交根据各仓库的改动状态,自行从多个渠道获取 PyTorch API 名单,最后需要取并集:
# 从 api-change-decider、python-decorator、cpp-sink 等前序步骤的上下文中自动提取 API 名单
# 用户直接提供 PyTorch API 名单,例如:torch.relu、torch.sigmoid、torch.tanh 等
若 Paddle 仓库有改动,分析以下位置:
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 仓库有改动,从 api_mapping.json 提取标记为 ChangePrefixMatcher 的 API:
cd /path/to/PaConvert
# 分析 api_mapping.json 中标记为 ChangePrefixMatcher 的 API
git diff origin/master -- api_mapping.json | grep -E "ChangePrefixMatcher|torch\."
API 名单合并
# 将从各渠道获取的 API 名单取并集,确保不重复,生成最终的统一 API 名单
# 例如:torch.relu, torch.sigmoid, torch.tanh, ...
仅对有代码改动的仓库执行以下操作(顺序:Paddle → Docs → PaConvert):
# Paddle 仓库
cd /path/to/Paddle
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 -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 -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
仅对有代码改动的仓库执行推送操作:
# Paddle 仓库
cd /path/to/Paddle
git push upstream HEAD:claude -f
# docs 仓库
cd /path/to/docs
git push upstream HEAD:claude -f
# PaConvert 仓库
cd /path/to/PaConvert
git push upstream HEAD:claude -f
根据自动获取的 PyTorch API 名单生成 PR,仅对有代码改动的仓库执行以下命令创建 PR(顺序:Paddle → Docs → PaConvert):
# Paddle PR
gh pr create --repo PaddlePaddle/Paddle --base develop --head zhwesky2010:claude \
--title "[API Compatibility] api_name_1/api_name_2/api_name_3/... Edit By AI Agent" \
--body "$(cat <<'EOF'
### PR Category
User Experience
### PR Types
Improvements
### Description
**API Compatibility Edit By AI Agent:**
\`\`\`
torch.api_name_1
torch.api_name_2
...
\`\`\`
### 是否引起精度变化
否
EOF
)"
# Docs PR
gh pr create --repo PaddlePaddle/docs --base develop --head zhwesky2010:claude \
--title "[API Compatibility] api_name_1/api_name_2/api_name_3/... Edit By AI Agent" \
--body "$(cat <<'EOF'
**API Compatibility Edit By AI Agent:**
\`\`\`
torch.api_name_1
torch.api_name_2
...
\`\`\`
- https://github.com/PaddlePaddle/Paddle/pull/{paddle_pr_number}
EOF
)"
# PaConvert PR
gh pr create --repo PaddlePaddle/PaConvert --base master --head zhwesky2010:claude \
--title "[API Compatibility] api_name_1/api_name_2/api_name_3/... Edit By AI Agent" \
--body "$(cat <<'EOF'
### PR Docs
- https://github.com/PaddlePaddle/docs/pull/{docs_pr_number}
### PR APIs
**API Compatibility Edit By AI Agent:**
\`\`\`
torch.api_name_1
torch.api_name_2
...
\`\`\`
- https://github.com/PaddlePaddle/Paddle/pull/{paddle_pr_number}
EOF
)"
其中:
api_name_1/api_name_2/... 替换为实际的 API 名单{paddle_pr_number} 和 {docs_pr_number} 替换为实际创建的 PR 号${ROOT_DIR} 变量表示根目录ChangePrefixMatcher 的 API