news 2026/9/20 21:10:48

如何给 transcribe.cpp 提 PR:CONTRIBUTING 规范与 CI 门禁完整清单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何给 transcribe.cpp 提 PR:CONTRIBUTING 规范与 CI 门禁完整清单

如何给 transcribe.cpp 提 PR:CONTRIBUTING 规范与 CI 门禁完整清单

【免费下载链接】transcribe.cppggml speech-to-text inference for 16+ model families项目地址: https://gitcode.com/GitHub_Trending/tr/transcribe.cpp

transcribe.cpp是基于 ggml 的 C/C++ 语音转写(speech-to-text)推理库,支持 16+ 模型家族、60+ 模型变体。想给这个项目提 PR?先读懂 CONTRIBUTING.md 和.github/workflows/下的 CI 门禁,你的 PR 才能一次过审。本文整理了提 PR 前的规范要点与 CI 检查清单。

一、开工前:3 分钟读懂项目规范

克隆仓库后,按顺序读这 3 份文件:

  • CONTRIBUTING.md —— 贡献规范、代码风格、审查门禁(本文核心依据)
  • docs/porting/0-porting.md —— 移植新模型家族的 8 阶段工作流:1-intake → 2-oracle → 3-convert → 4-cpp → 5-quants → 6-bench → 7-wer → 8-ship
  • .github/pull_request_template.md —— PR 模板的 4 个必填栏目

项目定位偏保守:它是一个库 + 运行时 + 打包产物,被用户嵌入到更大的进程中,所以改动必须"易审查、跨平台可移植、合并后可持续维护"。

💡 想移植新模型?规范明确要求先开 issue,写清上游模型仓库、family key、变体名和架构模式(encoder-transducer / encoder-decoder / audio-LLM / encoder-CTC),再按阶段顺序推进,不要跳过 intake 和 golden manifest 直接写 C++。

二、AI 辅助贡献:披露是硬性要求

可以用 AI 辅助写代码,但有两条红线:

  1. 必须在 PR 中披露AI 的使用,且人类作者要理解并拥有这部分改动;
  2. 禁止用 AI 写 PR 描述、issue、commit message 或回复 reviewer —— "一眼 AI 味"的 PR 描述几乎必被拒。

三、代码风格与格式门禁:动手前先跑一遍格式检查

CI 会用固定版本的 clang-format(脚本里 pin 住,本地输出与 CI 逐字节一致)检查你改动的 C/C++,用系统里的 clang-format 大概率过不了:

scripts/ci/clang-format.sh # 就地格式化 scripts/ci/clang-format.sh --check # 只检查不修改

几条高频踩坑点:

规范要求
缩进/花括号4 空格缩进,花括号与声明同行
命名函数/变量用snake_case,公共符号带transcribe_前缀
注释简短、只用 ASCII,解释 ABI 约定和数值选择,不写任务历史
重构行为改动与批量重排代码必须分开提交
依赖不加第三方依赖、新文件、新头文件,除非有充分理由

注意:ggml/src/third_party/等 vendored 目录永远不要动格式。完整风格细则见 CONTRIBUTING.md 的 Coding style 一节,源头参考是 src/transcribe.cpp 与 CMakeLists.txt 周围的现有写法。

四、PR 门禁清单:合并前必须全绿

CONTRIBUTING.md 的 Review gates 一列出了合并前必过的 7 道门禁,本地命令直接照抄:

门禁命令 / 责任人通过标准
格式检查scripts/ci/clang-format.sh --check全部 C/C++ 匹配固定格式
Intake 签核人工 reviewintake schema 合法,reference_framework / architecture_pattern / known_risks 已审
Preflight Auv run scripts/preflight.py --family <f> --gate A通过,或警告对应已接受的 intake 缺口
Preflight Buv run scripts/preflight.py --family <f> --gate B转换器存在后通过
数值验证uv run scripts/validate.py all --family <f>容差文件内张量全部达标,转写与参考一致
默认测试ctest --test-dir build全部启用的默认测试通过
真实模型冒烟ctest --test-dir build -R <family>(开启TRANSCRIBE_BUILD_REAL_MODEL_TESTS=ON代表性精度 GGUF 上通过

另外两类内容严禁提交:GGUF 模型二进制、build/validate/下的重型张量 dump、每次运行的 preflight 输出、HF 凭证。候选 GGUF 只能作为 review 附件,附上 URL/路径、SHA256、源模型 revision 和转换命令。

五、CI 流水线里到底在查什么

每个 PR 会按改动路径触发对应工作流(定义在 .github/workflows/):

  • clang-format 门禁(clang-format.yml):固定版本 clang-format 全量检查,最常被 PR 卡住的一道。
  • native 库门禁(native-ci.yml):改动src/include/tests/ggml/、构建文件时触发,包含 4 条 lane:
    • cpp-tests:Linux + macOS(arm64) 全量 C++ 白盒测试,cmake --install后用外部 C 消费者做链接冒烟;
    • cpp-tests-sanitized:ASan+UBSan 跑同一套测试,验证 C 生命周期/ABI 契约;
    • provider-dl-vulkan:验证无 Vulkan 加载器时静默降级到 CPU 的行为;
    • posture-lint:校验 wheel preset 与 pyproject lane 的一致性镜像。
  • Python 绑定门禁(python-bindings.yml):FFI 生成漂移检查 + Python 测试套件。
  • 模型 catalog 门禁(catalog.yml):改动 catalog/、scripts/hf_cards/、docs/models/ 或 README 时,强制校验模型元数据一致性。

六、Reviewer 会核对的 8 项 + PR 描述写法

评审者按 CONTRIBUTING.md 的 Reviewer checklist 逐项核对,重点:

  1. intake 已签核且与实现一致;
  2. Preflight A+B 的输出直接粘贴在 PR 描述里(不是提交成报告文件),警告要能解释;
  3. 验证摘要显示每个容差张量达标、转写逐字匹配;
  4. 默认测试 + 真实模型冒烟通过;
  5. tests/tolerances/ 下容差 JSON 的_comment解释了参考框架、dtype 和放宽理由;
  6. 移植日志记录了意外发现,供后续文档/工具修正。

PR 描述按模板填 4 栏:Summary(改了什么、为什么)、Scope(主要动到的区域)、AI Assistance(是否 AI 辅助)、Validation(做了什么验证、是否影响 WER/数值验证)。

七、常见被拒原因速查 ✅

  • 格式用了系统 clang-format,与 CI 固定版本不一致;
  • 没在 PR 描述里粘贴 preflight / validate 输出;
  • 把模型二进制或张量 dump 提交进了 git;
  • 功能改动夹带大范围重排格式;
  • PR 描述、commit message 是 AI 生成的(一眼即被拒);
  • 新家族没有 docs/porting/families/ 家族笔记、golden manifest 和容差文件。

把这份清单存档,动手前过一遍,你的 PR 就能顺畅穿过格式、测试与人工审查三道关卡 🚀

【免费下载链接】transcribe.cppggml speech-to-text inference for 16+ model families项目地址: https://gitcode.com/GitHub_Trending/tr/transcribe.cpp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 21:10:33

ASP.NET教学管理系统源码解析:架构、业务与改造

简介&#xff1a;教学管理系统是计算机本科毕业设计的高频选题&#xff0c;这份源码面向需要完成类似课题或想系统学习ASP.NET管理类Web开发的学生&#xff0c;完整呈现了从需求分析、三层架构设计到各功能模块编码落地的过程。压缩包共83个文件、504KB&#xff0c;以36个C#代码…

作者头像 李华
网站建设 2026/9/20 21:10:13

Flutter CustomScrollView:复杂滚动布局开发指南

1. 理解CustomScrollView的核心价值在Flutter开发中&#xff0c;当我们需要创建复杂的滚动布局时&#xff0c;常规的ListView、GridView等组件往往难以满足精细化的滑动控制需求。CustomScrollView就像一把瑞士军刀&#xff0c;它允许开发者将多个不同的滑动组件&#xff08;称…

作者头像 李华
网站建设 2026/9/20 21:10:09

基于深度学习与Dlib的口红色号检测推荐系统实现

简介&#xff1a;面向Python开发者及计算机视觉爱好者的智能口红色号检测推荐系统完整工程&#xff0c;基于Dlib人脸68点特征与face_recognition库完成人脸检测与唇部区域定位&#xff0c;结合TensorFlow及colorsys色彩转换技术&#xff0c;对嘴唇颜色进行提取并匹配相近色号&a…

作者头像 李华
网站建设 2026/9/20 21:07:50

SegNet图像分割PyTorch手写实现:池化索引与对称编解码结构解析

简介&#xff1a;本资源是一套基于PyTorch实现SegNet图像分割模型的完整Python项目源码&#xff0c;面向深度学习初学者与计算机视觉实践者&#xff0c;适用于语义分割入门学习、课程设计及小型科研实验。项目结构清晰&#xff0c;含119个文件&#xff0c;涵盖14个核心Python训…

作者头像 李华
网站建设 2026/9/20 21:06:51

如何用连词成句学英语?Earthworm游戏化学习完整指南

如何用连词成句学英语&#xff1f;Earthworm游戏化学习完整指南 【免费下载链接】earthworm Learning English through the method of constructing sentences with conjunctions 项目地址: https://gitcode.com/GitHub_Trending/ea/earthworm Earthworm 是一个开源的游…

作者头像 李华