CANN PyPTO 贡献指南:从 fork 到合入的 PR 提交前检查清单实战
CANN PyPTO 贡献指南从 fork 到合入的 PR 提交前检查清单实战【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto在 CANN / PyPTOParallel Tensor/Tile Operation 编程范式开源仓库中向cann/pypto提交高质量的 Pull RequestPR需要经过 fork 验证、Git 认证、upstream 同步、Commit 规范、PR 规范、Cross-Fork 参数与用户确认等多道关卡。本文以仓库内pypto-pr-creator技能所维护的提交前检查清单为核心骨架结合仓库官方贡献文档CONTRIBUTION.md、docs/zh/contribute/pull-request.md与 docs/zh/contribute/code-check-rule.yaml 告警屏蔽规则逐项讲解每条检查项背后的工程含义与可执行命令帮助你一次通过 pre-receive hook、code-check 与 CLA 检查将改动干净利落地合入上游主仓库。一、检查清单的定位何时加载、覆盖什么本清单文件位于 .agents/skills/pypto-pr-creator/references/checklist.md是pypto-pr-creator技能在**阶段 4预检与阶段 6创建 PR 后检查**前必须加载并逐项勾选的核对表。它把一次 PR 提交拆解为七个维度环境预检— 确认本地仓库、remote 与 fork 链关系Git 认证— 确保 push 凭据可用代码准备— 同步 upstream、补充测试、修复 code-check 告警Commit 规范— 校验 message 格式PR 规范— 校验标题、Body 与关联 IssueCross-Fork 参数— 校验 MCP 创建 PR 时的参数格式用户确认— 提交前向用户展示完整执行计划并获取明确确认。配套的参考文件同样位于.agents/skills/pypto-pr-creator/references/目录下pr-spec.md 提供 PR/Commit 格式规范、git-auth.md 提供认证方式配置、troubleshooting.md 提供 push/PR 失败诊断。而仓库官方的 PR 提交规范则以 docs/zh/contribute/pull-request.md 为权威来源本清单中的格式要求与其保持一致。二、环境预检本地仓库、origin 与 fork 链清单第一阶段要求确认四件事本地仓库路径正确执行git rev-parse --is-inside-work-tree确认当前目录位于 pypto 仓库内。origin 指向用户 fork而非cann/pypto这是最容易出错的一步。origin必须指向username/pypto若误指向cann/pypto需要修复git remote set-url origin https://gitcode.com/username/pypto.gitupstream remote 已添加若不存在执行git remote add upstream https://gitcode.com/cann/pypto.gitfork 链关系已验证通过 GitCode MCP 调用gitcode_get_repository(ownerusername, repopypto)确认返回结果中parent.full_name cann/pypto。这一步保证你提交的 PR 确实来自cann/pypto的 fork而非其他无关仓库的副本。浅克隆已修复如需要先执行git rev-parse --is-shallow-repository检测是否浅克隆。若是执行git fetch --unshallow origin拉全历史否则后续 rebase 与 push 会报 shallow update not allowed。从底层看GitCode 平台对 PR 的 pre-receive hook 会同时校验提交来源链与 commit 格式fork 链不正确或浅克隆未修复都会在推送阶段被拦截因此这一阶段是后续所有操作的物理前提。三、Git 认证push 前的凭据准备git push依赖认证清单要求在 push 之前完成认证配置并验证。快速检测命令echo GITCODE_TOKEN: $([ -n $GITCODE_TOKEN ] echo 已设置 || echo 未设置) echo credential.helper: $(git config --global credential.helper 2/dev/null || echo 未配置)认证方式可参考 git-auth.md按适用场景选择方式安全性持久性推荐场景cache推荐内存存储临时可设超时容器/临时环境store明文持久个人开发机SSH Key加密持久长期开发GITCODE_TOKEN URL环境变量临时CI/CDlibsecret系统加密持久Linux 桌面容器环境推荐 7 天超时的缓存 helpergit config --global credential.helper cache --timeout604800 # 首次 push 输入用户名和 Token后续自动使用缓存最终验证以git push --dry-run origin branch通过为准。一个易踩的坑是 GitCode不支持 Bearer token 认证只支持 HTTP Basic Auth详见 troubleshooting.md可用GIT_CURL_VERBOSE1 git push origin branch 21 | grep -i authorization确认请求头是Authorization: Basic base64而非Bearer。认证配置成功前禁止执行任何 push 操作。四、代码准备同步 upstream、测试用例与 code-check4.1 与 upstream 保持同步git fetch upstream master git log --oneline HEAD..upstream/master第二行输出必须为空否则说明分支已落后于 upstream需要 rebase 后再推git fetch upstream master git rebase FETCH_HEAD仓库官方指南 docs/zh/contribute/pull-request.md 同样强调Rebase your branch to most recent version ofmasterbranch落后分支会触发远端pre-receive hook check failed。4.2 测试用例清单要求 feat/fix 类型变更必须配套添加测试用例。这与官方指南 Add test cases for feat or fix done in the pull request 一致。PyPTO 仓库的测试分布在 framework/testsC UT/ST与 python/testsPython 用例两套体系下例如python/tests/st/operation/下每个算子目录都包含对应的.py用例文件。新增接口或修复 Bug 时应在对应层级补充覆盖新行为的用例。4.3 code-check 告警修复与屏蔽规则清单要求修复 code-check 警告参考规则文件为 docs/zh/contribute/code-check-rule.yaml。该 YAML 定义了仓库允许的告警屏蔽规则每条规则包含屏蔽规则编号、语言C/Python、告警来源如超大函数[C]超大圈复杂度[Python]G.FMT.02等、屏蔽选项规范例外的场景 / 误报与屏蔽理由。实际屏蔽时需注意两类语义规范例外的场景例如规则 1、13 中代码功能逻辑紧密关联的函数/目录拆分后影响可维护性规则 25G.FNM.03允许pypto.frontend.jit修饰的大融合算子入口保留平铺参数规则 26G.LOG.03允许 Example 脚本使用print直接向用户展示结果。误报例如规则 7G.CMT.05-CPP——PyPTO 是开源代码仓而非正式交付客户代码允许保留 TODO/TBD 注释规则 24 中当前类内部或 Package 内部变量被视为明显误报。此外多条规则的屏蔽范围被限定为examples/tests相关代码如规则 21、22、27~31因为这些测试代码需要覆盖原生 Python 向 PILPyPTO Intermediate Language翻译的各种边界行为lambda 赋值、dict[key] 取值、复杂推导式、未指定异常类型抛出、捕获后直接重抛等以验证翻译结果符合预期。新增屏蔽规则或修改规则文件本身需要 maintainer 评审通过后才可合入。五、Commit 规范tag(scope): Summary的严格约束清单对每个 commit 的要求与官方规范 docs/zh/contribute/pull-request.md 完全对齐tag(scope): SummaryTag 合法类型pr-spec.md 明确chore不在允许列表Tag用途feat新功能fixBug 修复docs文档变更style代码格式refactor重构test测试相关perf性能优化Scope 规则填写受影响的模块/组件名多模块用|分隔如feat(frontend|backend): ...涉及模块过多时用all如refactor(all): ...。Summary 规则英文编写、首字母大写、不加句号、祈使语气、长度 10–200 字符。可用如下正则自检与阶段 4 预检命令一致git log -1 --format%s | grep -E ^(feat|fix|docs|style|refactor|perf|test)(.*): [A-Z].{10,200}正误对比来自 pr-spec.md✅ 正确❌ 错误原因Add support for FP16 data typeAdded support for FP16过去时态Fix memory leak in graph optimizationFixes memory leak in optimizer.祈使句尾不加句号Update tensor creation API documentationupdated API documentation未首字母大写feat(skills): Add PR creator skillfeat(skills): 为 PyPTO 项目添加 PR 创建技能必须使用英文fix(ops): Fix precision issue in softmaxfeat: add feature缺少 scope整体要求每个 commit 只做一件事整个 commit message 不超过 10 行多 commit 场景推荐提交顺序为fixup→refactor→feat→test。PyPTO 采用 squash merge因此不要求冗长的 commit message 正文但 PR Body 中应包含每个 commit 的简短摘要。六、PR 规范标题、Body 与关联 Issue6.1 PR 标题与 commit message 同格式tag(scope): Summary同样是英文、首字母大写、无句号、祈使语气。6.2 PR Body禁止为空必须清晰传达变更意图动机、背景、上下文让 reviewer 理解 why移除无关模板内容与占位符关联 Issue 放在最后一行格式Related Issues: #xxx多 commit 场景需在 Body 中列出每个 commit 摘要。官方文档给出了完整的 PR Body 示例见 docs/zh/contribute/pull-request.mdfeat(interface): Optimize the pypto.cond with concrete value The origin implementation of pypto.cond generate both if/else branch, even if the condition is always true or false, in this PR, we optimize the implementation to generate only one branch. Changes: - Optimize the pypto.cond with concrete value, which can reduce the number of branches in the program - Update the test cases to cover the new features Related Issues: #1234,#56786.3 单一职责清单要求单一职责 — 无不相关变更混入。官方指南亦强调 Send well scoped pull request that are easy to review and revert, merge multiple unrelated changes should be avoided。此外仓库 CONTRIBUTION.md 提醒若修改不是简单 Bug 修复而是新增特性、接口、配置参数或修改代码流程务必先通过 Issue 进行方案讨论避免代码被拒绝合入。仓库提供了 PR 模板文件.gitcode/PULL_REQUEST_TEMPLATE.md中文与 .gitcode/PULL_REQUEST_TEMPLATE_en.md英文提交时按模板填写业务背景、目的、方案等信息。七、Cross-Fork 参数MCP 创建 PR 的格式陷阱清单指出创建 PR 时通常通过 GitCode MCP 工具完成三个参数最容易出错head使用username:branch_name格式冒号分隔。错误示例与正确示例对比来自 troubleshooting.mdheadfeat/add-pr-guide # 错误缺少 fork owner headusername/feat/add-pr-guide # 错误用了 / 而非 : headusername:feat/add-pr-guide # 正确MCP 参数名全小写例如owner、repo、pull_number、title、body。owner/repo指向上游仓库cann/pypto而不是用户 forkgitcode_create_pull_request( ownercann, repopypto, titletag(scope): Summary, headusername:branch_name, basemaster, body... )创建前应先判断是创建还是更新调用gitcode_list_pull_requests(ownercann, repopypto)筛选state opened且source_branch匹配当前分支的 PR存在则询问用户更新现有 PR 或新建。更新时使用gitcode_update_pull_request( ownercann, repopypto, pull_numberpr_number, title新标题, body新描述 )MCP 返回 400 时错误信息可能被吞掉可用 curl 直接请求https://api.gitcode.com/api/v5/repos/cann/pypto/pulls获取详细错误见 troubleshooting.md 中的完整脚本。八、用户确认执行前必须展示计划表清单最后一条是流程的硬性约束在获得用户明确确认之前禁止执行任何 git 操作包括创建分支、commit、push、创建/更新 PR。确认环节需向用户展示完整的执行计划表通常包含确认项内容本地仓库路径$PYPTO_REPOFork 仓库username/pypto分支名branch_nameCommit 信息tag(scope): SummaryPush 目标origin →branch_namePR 目标cann/pypto→masterPR 标题与 Body预览内容这条约束同样被写入pypto-pr-creator技能的强制约束段落配合禁止打印GITCODE_TOKEN包括屏幕、日志、调试信息远程操作必须通过 GitCode MCP 完成等规则确保整个提交流程可审计、可回退。九、PR 创建后的收尾检查PR 创建成功后清单之外还有两项关键收尾来自pypto-pr-creator技能阶段 6PR 链接验证确认链接指向https://gitcode.com/cann/pypto/merge_requests/pr_id而不是username/pypto/...。如果 PR 被创建到了自己的 fork 下说明owner/repo参数传错了。CLA 检查通过gitcode_get_pull_request读取 PR labels若含cla/no则 CLA 未通过。修复路径包括核对 commit 作者邮箱与 GitCode 账户主邮箱一致git log -1 --formatAuthor: %an %ae、使用git commit --amend --author...修正作者后 force push或补充一个空 commit 重新触发 CLA 检查git commit --allow-empty -m docs: trigger CLA check git push origin branch_name仓库的 CI 合入门槛见 docs/zh/contribute/pull-request.md为在 PR 评论区发送compile触发 CI 编译编译通过且获得 committer 的approve标签与其他 contributor 的lgtm标签后方可合入code-check告警需在合入前修复或按 docs/zh/contribute/code-check-rule.yaml 中定义的规则屏蔽。另外仓库使用 pre-commit 在本地提交前执行代码风格检查C 用 clang-format v18、Python 用 ruff v0.14 的 E/W/F/I/N 规则族、行宽 120 字符、codespell 拼写检查安装方式为pip install pre-commit pre-commit install详见 CONTRIBUTION.md。十、快速自查速查表将清单浓缩为 push 前 30 秒的最终自检#检查项通过标准1origin 指向指向username/pypto非cann/pypto2upstreamgit fetch upstream master后HEAD..upstream/master为空3认证git push --dry-run origin branch通过4Commit 格式tag(scope): Summarytag 合法、英文、首字母大写、无句号、10–200 字符、≤10 行5单一职责每个 commit 只做一件事PR 无无关变更6测试与 code-checkfeat/fix 配套测试告警已修复或按规则屏蔽7PR 参数headusername:branch、参数全小写、owner/repo cann/pypto8用户确认已展示完整执行计划表并获明确确认9收尾PR 链接指向cann/pypto/merge_requests/pr_idCLA 通过只要以上各项全部勾选你的 PR 就能顺利通过 pre-receive hook、code-check 与 CLA 三道关卡进入approvelgtm的合入流程。【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Agent Governance Toolkit:OWASP ASI Top 10 与行业 Starter 策略包的规则级映射

Agent Governance Toolkit:OWASP ASI Top 10 与行业 Starter 策略包的规则级映射

Agent Governance Toolkit:OWASP ASI Top 10 与行业 Starter 策略包的规则级映射 【免费下载链接】agent-governance-toolkit AI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for au…

2026/9/19 13:21:59 阅读更多 →
深度学习权重与偏置全解析:从初始化到实战调参

深度学习权重与偏置全解析:从初始化到实战调参

1. 权重和偏置到底是什么1.1 从一个最简单的神经元说起很多刚接触深度学习的同学,上来就被各种网络结构、激活函数、损失函数搞得晕头转向,却忽略了整个深度学习大厦最基础的砖块——神经元。其实你只要搞清楚一个神经元里发生了什么,权重和偏…

2026/9/19 13:21:47 阅读更多 →
DeepSeek-V4 接入 AMCT 大模型量化框架:MLA + Compressor + Indexer + Hyper-Connections 架构适配实战

DeepSeek-V4 接入 AMCT 大模型量化框架:MLA + Compressor + Indexer + Hyper-Connections 架构适配实战

DeepSeek-V4 接入 AMCT 大模型量化框架:MLA Compressor Indexer Hyper-Connections 架构适配实战 【免费下载链接】amct AMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。 项目地址: https://gitcode.com/cann/amct 本文基于 AMCT 开源仓库的 DeepSeek…

2026/9/19 13:21:57 阅读更多 →

最新新闻

Coze零代码多智能体协作:从任务拆解到稳定运行的全流程实践

Coze零代码多智能体协作:从任务拆解到稳定运行的全流程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 15:05:44 阅读更多 →
Trae里Anaconda解释器,让Codex走TaoToken后能照着defaultInterpreterPath改对

Trae里Anaconda解释器,让Codex走TaoToken后能照着defaultInterpreterPath改对

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 15:05:44 阅读更多 →
Cursor 跑 MCP,模型通道改到 TaoToken 行不行?

Cursor 跑 MCP,模型通道改到 TaoToken 行不行?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 15:05:44 阅读更多 →
高铁接触网BIM全流程:建模深化施工校核指南

高铁接触网BIM全流程:建模深化施工校核指南

简介:这份PDF文档围绕BIM技术在高速铁路接触网工程中的应用展开,面向铁路电气化工程设计、施工及运维管理人员,针对传统二维CAD设计存在信息孤岛、碰撞难以发现、数据不连续等问题,提供了全生命周期的信息化解决思路。压缩包内共1…

2026/9/19 15:05:44 阅读更多 →
邮箱验证的正确姿势:从一行正则到分层校验的完整指南

邮箱验证的正确姿势:从一行正则到分层校验的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 15:05:44 阅读更多 →
Spring Boot CORS跨域配置与排错:前后端分离联调指南

Spring Boot CORS跨域配置与排错:前后端分离联调指南

简介:Spring Boot 开发者常遇到的跨域问题,在这份 PDF 文档中得到系统梳理,资源面向 Java Web 开发者和前后端分离项目维护人员,讲解 CORS 跨域资源共享机制及其在 Spring Boot 中的落地。文档按两条主线展开:一是自定…

2026/9/19 15:04:43 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →