
Apache Thrift AI 辅助贡献完整指南从 ASF 合规、JIRA 流程到 AI 代码标注规范【免费下载链接】thriftApache Thrift项目地址: https://gitcode.com/GitHub_Trending/thr/thriftApache Thrift 是 Apache 软件基金会ASF旗下的跨语言 RPC 与序列化框架采用Apache License 2.0协议发布。随着 AI 编程工具Claude、Copilot、ChatGPT 等的普及AI 生成的代码大量涌入开源仓库本仓库根目录的 AGENTS.md由根目录 CLAUDE.md 通过AGENTS.md指令引入作为 AI 协作助手的默认行为准则系统规定了AI 辅助开发者在为本项目贡献代码时必须遵守的规则。本文围绕该文件展开完整解读其在 ASF 许可合规、Issue 追踪、Pull Request、AI 生成内容标注、语言专属规则、安全协作与 Git 工作流方面的硬性要求并对照仓库内的 CONTRIBUTING.md、SECURITY.md、doc/thrift-threat-model.md 等配套文档逐一佐证。读完本文你将能合规地提交第一个不会被打回、且经得起 committer 审查的 Apache Thrift PR——无论代码是由你还是 AI 撰写。一、文件定位CLAUDE.md 与 AGENTS.md 的关系仓库根目录的 CLAUDE.md 全文仅一行AGENTS.md。这是 Claude Code 等 AI 编程工具支持的引用指令语法等价于请将 AGENTS.md 的全部内容并入上下文。因此真正约束 AI 行为的是 AGENTS.md。AGENTS.md 的自述明确了两层定位它管辖的是Apache Thrift 代码库上的 AI 辅助工作This file governs AI-assisted work on the Apache Thrift codebase它补充但绝不替代CONTRIBUTING.mdIt supplements but does not replace CONTRIBUTING.md——人类贡献者仍需完整阅读 CONTRIBUTING.md。从仓库结构看AGENTS.md 还被列入根 Makefile.am 的EXTRA_DIST分发清单随源码包一起发布说明它是项目正式对外承诺的协作规范的一部分而非临时草稿。二、ASF 法律合规第三方代码的许可红线Apache Thrift 是 Apache 软件基金会项目以 Apache License 2.0 发布见仓库根目录 LICENSE。AGENTS.md 第 1 节要求 AI 必须主动执行并监控ASF 许可政策而不是被动等审查者发现2.1 引入依赖前的许可筛查在引入任何依赖、代码片段或从外部来源衍生的代码之前必须先验证其许可证与 Apache 2.0 兼容类别代表许可证处理方式不兼容非穷尽列举GPL、AGPL、SSPL、BUSL、CC-BY-NC禁止引入兼容示例MIT、BSD-2/3、Apache 2.0、ISC、MPL 2.0有注意事项可引入其中 GPL/AGPL 等强 copyleft 许可证与 Apache 2.0 存在传染性与授权条款冲突属于硬性红线。2.2 Category X / Category A 分类ASF 的《第三方许可政策》Third-Party Licensing Policy将许可证分为两类Category A允许包含进 ASF 项目Category X绝不允许引入。AI 在贡献前应主动查询该分类清单而不是把判断责任推给 committer。2.3 更新 LICENSE 与 NOTICE当引入需要署名的第三方代码或二进制时必须按 ASF 规范在LICENSE和/或NOTICE中添加相应声明。AGENTS.md 给出一条务实建议如果不确定某个条目是否需要登记先加上它并在 PR 描述中标记出来交由 committer 审查决定。2.4 生成式 AI 输出ASF 的《生成式工具指南》Generative Tooling Guidance同样适用于本项目。AGENTS.md 特别提醒AI 生成的代码可能无意中复现受版权保护的材料如训练数据中记忆的既有代码段。因此凡是非平凡的 AI 生成代码块都要在提交信息或 PR 描述中显式标记供审查者复核其来源与许可。三、Issue 追踪何时用 JIRA何时用 GitHub IssuesAGENTS.md 第 2 节给出了 Issue 追踪的双轨制变更类型追踪系统说明重大变更Apache JIRATHRIFT 项目所有非平凡 PR 的必须前置条件小修/快速修复GitHub Issues拼写错误、平凡的编译器警告等JIRA 与 GitHub 的集成机制在 PR 标题开头包含 JIRA ticket 标识符会自动在 JIRA 中生成指向该 PR 的链接。PR 标题格式THRIFT-9999: Short description of the change提交信息格式代码变更强制要求偏离将不予合并THRIFT-9999: Short description of the change Client: cpp,py,java (comma-separated list of affected languages)Client:行列出所有受影响的语言绑定用逗号分隔例如cpp,erl,perl。这与 CONTRIBUTING.md 中的提交信息规范完全一致后者明确写道deviations will not be merged偏离将不会合并。3.1 一条规范提交流程示例AGENTS.md 给出的示例对应 JIRA 工单 [THRIFT-5929] 及其关联 PR一条完整的合规提交信息如下THRIFT-9999: Fix connection timeout handling in Go client Client: go Co-Authored-By: Claude Sonnet 4.6 noreplyanthropic.com四、Pull Request 硬性要求AGENTS.md 第 3 节在 CONTRIBUTING.md 基础上提炼出关键要点每个 Issue 一个提交提交前先 squash 合并所有重大变更都需要 JIRA ticket每次提交的变更必须附带测试通过make style验证编码规范分支命名约定使用 JIRA ticket ID例如THRIFT-9999PR 从你的 fork 分支 →apache:master。其中提供测试与测试先行原则在 CONTRIBUTING.md 中有更详细的展开使用测试驱动开发TDD在应用修复之前先编写能隔离该 bug 的测试提交前检查生成的代码。4.1make style到底是什么仓库中make style目标在根 Makefile.am 中定义style-local: codespell --write-changes --skip$(skipped_files) --disable-colors即通过codespell工具对整个代码库做拼写检查并自动写入修正--write-changes跳过预定义的skipped_files列表且禁用彩色输出以适配 CI 日志。此外仓库还通过根 Makefile.am 的EXTRA_DIST分发.clang-format、.flake8、.editorconfig等格式配置供 C、Python 等语言子目录的格式化工作使用doc/coding_standards.md 及各语言目录下的coding_standards.md如 lib/cpp/coding_standards.md、lib/py/coding_standards.md承载详细的编码规范说明。五、AI 生成内容的强制标注这是 AGENTS.md 对 AI 开发者最具约束力的一节第 4 节依据 CONTRIBUTING.md 的AI generated content小节与 ASF 生成式工具指南5.1 双标签机制AI 辅助的提交和 PR必须标注可使用以下一种或两种标签Co-Authored-By: AI tool name and version Generated-by: AI tool name and versionGenerated-by:是 ASF 推荐格式Co-Authored-By:是广泛采用的通用实践如 SPARK-25018 及 Git 提交信息约定中的用法。关键规则即使 AI 只生成了变更的一部分也必须加注标签。示例对应 AGENTS.md 第 4 节与第 3 节格式要求THRIFT-9999: Fix connection timeout handling in Go client Client: go Co-Authored-By: Claude Sonnet 4.6 noreplyanthropic.com5.2 严禁放入工具内部链接任何工具内部链接都不得出现在提交信息、PR 描述、JIRA 评论或电子邮件中包括但不限于AI 会话与对话 URL例如Claude-Session:、https://claude.ai/code/session_…、https://chatgpt.com/c/…及其他工具的同类链接某些助手默认会附加此类链接本项目的默认规则是覆盖该行为——提交块trailer block中只需保留上述归属标注行。AGENTS.md 给出了两条硬核理由永久性链接一旦进入 git 历史就不可撤销即便 force-push 也无法抹除——被取代的提交仍可通过 SHA 访问到保密性链接可能指向非公开材料包括第 6 节安全中仍在 embargo保密期内的工作可能造成提前泄露。5.3 人类作者的最终责任无论代码由谁生成人类作者仍需负责审查、测试并对提交的代码负责The human author remains responsible for reviewing, testing, and standing behind all submitted code。AI 标注是透明性要求不是责任转移。六、语言专属规则/lib、/test、/tutorial 的层级关系Apache Thrift 支持约 28 种目标语言仓库在 lib/ 下按语言组织运行时库如 lib/cpp/、lib/py/、lib/java/、lib/go/ 等对应 test/ 与 tutorial/ 下的跨语言测试与教程代码。AGENTS.md 第 5 节规定了语言专属规则的效力层级本文件AGENTS.md在所有情况下都有效必须与任何附加的语言专属规则叠加使用若lib/lang/目录下有自己的CLAUDE.md或AGENTS.md则该规则适用于该语言目录内的所有工作语言专属规则按隐含扩展到test/和tutorial/下对应的语言代码若test/或tutorial/本身为某语言提供了CLAUDE.md/AGENTS.md则规则合并更靠近代码的文件即同目录下的文件在冲突时优先。这一就近优先原则确保了语言绑定维护者可以为自己的子项目制定更严格的规则同时不削弱仓库级规范。七、安全协作规范AGENTS.md 第 6 节针对安全敏感变更传输大小限制、TLS 配置、认证、序列化边界或任何被项目安全团队标记的内容给出了专项纪律7.1 公开文本禁止描述为安全修复在提交信息、PR 标题、PR 描述或行内注释等面向公众的文本中绝不可将变更描述为安全修复必须使用中性的功能语言例如用add a configurable frame-size limit添加可配置的帧大小限制代替fix DoS vulnerability修复 DoS 漏洞。原因在于漏洞细节必须通过 ASF 私有渠道securityapache.org流转AI 工具不得绕开该流程。7.2 必须参考威胁模型在提出缓解措施或默认值之前必须查阅 doc/thrift-threat-model.md了解项目官方记录的攻击面、信任边界和各语言绑定的安全属性。该文档是仓库维护的正式威胁模型当前为 draft v2它将各组件分为不同威胁画像IDL 编译器构建期文本处理器、C/c_glib 运行时内存不安全、爆炸半径最大、JVM/Python/Go/Rust 运行时内存安全但反序列化 DoS 仍相关等并记录了大量历史安全问题如 Go 绑定递归 skip 栈溢出THRIFT-5469、Rust 服务端容量溢出THRIFT-5812。7.3 负责任披露外部报告者与 AI 审查者都应遵循 SECURITY.md 的负责任披露流程不得通过公开的 GitHub Issue、PR 或讨论串报告漏洞而应发送邮件至securityapache.org附上受影响的版本、语言绑定、问题描述、潜在影响及复现步骤如安全可包含最小 PoC。7.4 先验证再断言当主张某个安全问题、或判断某个组件受某 bug 影响时必须先针对具体发布版本进行可复现性/可利用性的实证验证才能将其作为事实陈述。这是对以证据为边界原则的工程化落实。八、代码变更、Git 与 PR 工作流AGENTS.md 第 7 节约束日常开发节奏变更范围最小化修复 bug 或处理 Issue 时只改动与该 Issue 相关的内容除非被明确要求不要触碰CHANGES.md、版本文件或无关条目独立 PRbug 修复默认作为独立 PR 提交不直接提交到 master也不混入已有/无关的工作严格测试先行先编写或更新能演示 bug 的测试再应用修复改动任何生成代码前必须先检查生成结果。这一节与 CONTRIBUTING.md 的 GitHub PR 流程相衔接fork → clone → 按 Issue 建分支 → 修改并附带测试 → squash 为单个提交 → 推送到分支 → 从分支向apache:master发起 PR → 等待 committer 审查与 CI 完成。九、打开 PR 前的快速检查清单AGENTS.md 第 8 节提供了一份可直接勾选的清单作为提交前的最后一道自检任何新依赖的许可证已对照 ASF Category A/X 清单检查如需第三方归属声明LICENSE和/或NOTICE已更新JIRA ticket 已存在除非确属琐碎变更PR 标题以THRIFT-NNNN:开头如有 ticket提交信息包含受影响的Client:语言列表已 squash 为单个提交已添加或更新测试make style通过已用Co-Authored-By:/Generated-by:标注 AI 作者身份如适用提交信息或 PR 文本中没有任何工具内部或 AI 会话 URL安全敏感变更使用中性提交/PR 语言不公开漏洞细节涉及传输限制 / TLS / 认证的变更已对照 doc/thrift-threat-model.md 交叉检查十、对 AI 协作的实际意义一份可执行的协议综合 AGENTS.md 全文Apache Thrift 对 AI 辅助贡献的期待可归纳为三层协议合规层所有引入的第三方代码先过许可筛查Category X 零容忍归属声明进LICENSE/NOTICE透明层AI 参与的提交必须用Co-Authored-By:/Generated-by:标注绝不夹带工具内部会话链接即使只改了一行也不省略质量层测试先行、单提交、make style通过、安全文本中性化、变更范围最小化——这些与人类贡献者的要求完全一致AI 只是被要求执行同样的标准并额外承担可追溯性义务。从仓库现状看根目录CLAUDE.md、AGENTS.md与 CONTRIBUTING.md、SECURITY.md、doc/thrift-threat-model.md 已形成一套自洽的协作体系前者约束 AI 行为后者约束人类流程二者叠加即构成完整的 Apache Thrift 贡献规范。对希望长期参与 Thrift 生态的开发者与 AI Agent 而言遵循本文所述规则是让补丁顺利合并、并赢得 committer 信任的最低成本路径。【免费下载链接】thriftApache Thrift项目地址: https://gitcode.com/GitHub_Trending/thr/thrift创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考