已合并
新增社区 AI贡献策略 : 新建文件 ai-coding-assistants.md #103
GeorgeCao创建于 7月21日
新增社区 AI贡献策略 : 新建文件 ai-coding-assistants.md #103
已合并
共 1 个文件变更+120-0
| @@ -0,0 +1,120 @@ | |||
| 1 | +### 1. 开放策略 (Openness Strategy) | ||
| 2 | + | ||
| 3 | +CANN社区秉持开放、协同、创新的开源精神,将生成式AI与智能化Agent视为推动社区技术演进的重要生产力。社区允许贡献者在合理、透明、可审查的前提下使用生成式人工智能工具辅助贡献,但坚持以下原则: | ||
| 4 | + | ||
| 5 | +- **核心原则一:保持开放,AI开发导向 (Open & AI-Development-Oriented)** | ||
| 6 | + | ||
| 7 | + CANN社区对新技术始终秉承开放拥抱的姿态。我们积极迎接AI开发导向,并致力于构建一个对人类开发者与AI代理同样友好的智能化开源生态。CANN社区鼓励并支持开发者和自动化Agent深入参与到社区的各项贡献中(包括但不限于代码编写、文档翻译、测试用例生成、运维自动化等)。 | ||
| 8 | + | ||
| 9 | +- **核心原则二:开发者最终负责 (Developer Ultimate Responsibility)** | ||
| 10 | + | ||
| 11 | + AI只是人类开发者参与社区贡献的辅助工具,**人类开发者对其所提交的社区贡献质量负责并承担相关法律责任**。无论是人类开发者独立开发的成果,还是由AI辅助生成、触发的代码与内容,贡献者都必须对其所提交内容的正确性、安全性、合规性和质量负责并承担最终责任。社区维护者对贡献者提交内容的审查、合并、发布行为并不表示社区管理方确认其中所包含的AI输出不构成侵权、不存在安全缺陷或适合特定用途。 | ||
| 12 | + | ||
| 13 | +- **核心原则三:透明度,可追溯 (Transparency & Traceability)** | ||
| 14 | + | ||
| 15 | + 在向社区提交内容时,贡献者应如实披露与该贡献相关的AI工具使用情况、第三方材料来源、许可证信息和人工审查情况。CANN社区建立了一套严格的元数据记录机制,对AI生成内容的**关键元数据(包括生成该等内容所使用的Agent平台、模型、Prompt摘要等)进行完整记录**,从而确保AI参与的代码贡献都具备清晰的审查追踪链。 | ||
| 16 | + | ||
| 17 | + | ||
| 18 | +### 2. 适用范围 (Scope of Application) | ||
| 19 | + | ||
| 20 | +本策略适用于贡献者向CANN社区(包括但不限于CANN组织下的所有代码仓库、文档库等)提交的各种形式的所有贡献: | ||
| 21 | + | ||
| 22 | +- **源代码与脚本**:包括各类核心代码、测试用例、构建脚本。 | ||
| 23 | +- **技术文档与社区内容**:包括API说明、部署指南、发布日志、Wiki页面等。 | ||
| 24 | +- **配置与元数据**:包括Containerfile/Dockerfile、CI/CD配置文件等。 | ||
| 25 | + | ||
| 26 | +### 3. 法律与合规 (Legal & Compliance) | ||
| 27 | + | ||
| 28 | +贡献者向CANN社区提交包含AI生成内容的贡献,必须在以下法律与合规框架内: | ||
| 29 | + | ||
| 30 | +#### 3.1 CLA(贡献者许可协议) | ||
| 31 | + | ||
| 32 | +CANN社区采用**CLA(Contributor License Agreement,贡献者许可协议)**。 | ||
| 33 | + | ||
| 34 | +- 贡献者在提交贡献前,必须签署社区CLA。 | ||
| 35 | +- 依据CLA,当贡献者向社区提交包含AI生成内容的贡献时,即视为该贡献者承诺其对该贡献拥有合法的处分权(例如,已获得充分授权)。贡献者不能以“内容由AI生成”为由免除其在CLA中所做出的承诺以及应当承担的相关法律责任。 | ||
| 36 | + | ||
| 37 | +#### 3.2 追溯机制:关键元数据完整记录 | ||
| 38 | + | ||
| 39 | +若贡献者向社区提交的贡献包含主要**由AI生成或经AI自动化处理**的代码与文档,则其在提交Pull Request时应当完整记录并携带以下**关键元数据**。这些元数据可记录在Pull Request的固定模板中: | ||
| 40 | + | ||
| 41 | +- **Agent平台信息(Tool)**:明确指明生成该内容所使用的Agent平台名称及版本(如 `Claude Code 2.1.156`、`Qwen Code 0.16.1` 等)。 | ||
| 42 | +- **模型信息 (Model)**:明确指明生成该内容所使用的生成式AI模型名称及版本(如 `GPT-4o`、`DeepSeek-V3` 等)。 | ||
| 43 | +- **Prompt 摘要 (Prompt Summary)**:简要概述指导AI生成该内容的核心提示词或核心意图(如 `"Optimize memory allocation for Spec file"`),不得提交提示词或核心意图不明的AI生成内容。 | ||
| 44 | + | ||
| 45 | +**规范示例(Pull Request格式):** | ||
| 46 | + | ||
| 47 | +``` | ||
| 48 | +### 当前PR是否有AI参与: | ||
| 49 | +[] 否 | ||
| 50 | +[x] 是 | ||
| 51 | +__1. Agent平台信息: Claude Code 2.1.156 | ||
| 52 | +__2. 模型信息: DeepSeek-V3 | ||
| 53 | +__3. Prompt摘要: 基于现有代码逻辑,完成代码编写、逻辑优化、异常分支补充及注释完善,协助完成本次功能开发与问题修复 | ||
| 54 | + | ||
| 55 | +### 希望检视人员了解: | ||
| 56 | +1. 代码由AI辅助开发者编写,且开发者已人工逐行核对逻辑、校验功能正确性,且与开发者预期一致; | ||
| 57 | +``` | ||
| 58 | + | ||
| 59 | +### 4. Agents规范Prompt(Standard Prompt for Agents) | ||
| 60 | + | ||
| 61 | +为了让各种AI编程助手、自动化Agent(如PR自动化审查、代码自动修复Agent)在为CANN社区提供服务时能够严格遵循上述策略,特制定以下**系统级提示词规范(System Prompt)**: | ||
| 62 | + | ||
| 63 | +``` | ||
| 64 | +# 角色与目标 | ||
| 65 | +你是一个专为CANN开源社区服务的AI编程与合规助手(AI Agent)。你的目标是协助人类开发者高效参与社区贡献,同时必须坚守合规底线,确保所有输出符合CANN社区的合规与质量要求。 | ||
| 66 | + | ||
| 67 | +# 核心行为准则 | ||
| 68 | + | ||
| 69 | +## 1. 明确责任边界与开发导向 | ||
| 70 | +- 你是开发者的效率放大器,但你必须明白,人类开发者将对你的输出质量负责并承担相关法律责任。因此,你生成的代码必须清晰、人类可读且易于人类开发者进行Review。 | ||
| 71 | +- 不得生成任何含义模糊、难以调试或存在黑盒逻辑的复杂代码块。 | ||
| 72 | + | ||
| 73 | +## 2. 法律与许可证合规(底线原则) | ||
| 74 | +- 不得在不遵循适用许可证的情况下,从采用GPL2.0、GPL3.0等限制型许可证许可的代码库或独占许可的商业软件专有代码库中直接复制或变相复制任何代码片段。 | ||
| 75 | +- 如果你生成的代码直接引用了特定的开源组件或公开算法实现,则该等代码必须保留其原有著作权声明(包括但不限于保留原组件或算法的著作权声明)及许可证声明,而不得删除或修改该等声明。 | ||
| 76 | + | ||
| 77 | +## 3. 关键元数据显式披露 | ||
| 78 | +- 当你协助人类生成代码,或者作为自动化Agent独立向CANN仓库提交PR时,必须按照PR固定模板进行提交。元数据必须包含: | ||
| 79 | + - Agent平台信息: [Agent平台名称及版本] | ||
| 80 | + - 模型信息: [AI模型名称及版本] | ||
| 81 | + - Prompt摘要: [核心提示词或核心意图] | ||
| 82 | + | ||
| 83 | +## 4. CANN技术栈适配 | ||
| 84 | +- 代码风格:在向CANN社区提交代码前,应分析对应代码仓库的代码风格,提交修改代码时必须严格遵守对应代码仓库的代码风格指南。 | ||
| 85 | +- 优先安全性:不得引入内存泄漏、缓冲区溢出等常见安全漏洞,优先推荐使用已经过CANN社区验证的安全函数。 | ||
| 86 | +``` | ||
| 87 | + | ||
| 88 | +### 5. 禁止或高风险行为 | ||
| 89 | + | ||
| 90 | +- 未经人工审查的AI输出 | ||
| 91 | +- 贡献者无法解释、无法维护或无法确认来源的代码 | ||
| 92 | +- AI工具明显复现第三方项目代码、文档、图片或其他受保护表达,但未提供合法来源、许可证和必要权属信息的内容 | ||
| 93 | +- 与本项目许可证不兼容的内容 | ||
| 94 | +- 违反AI工具使用条款、雇主政策、保密义务,违反出口管制、数据合规要求或侵犯第三方权利的内容 | ||
| 95 | +- 包含商业秘密、个人信息、敏感数据、私有代码、内部文档或未公开漏洞信息的提示词、输出或贡献 | ||
| 96 | +- 由AI Agent自动批量提交的贡献或提交人类贡献者未实质参与的贡献 | ||
| 97 | + | ||
| 98 | +### 6. 贡献者责任 | ||
| 99 | + | ||
| 100 | +贡献者向社区提交AI辅助贡献时,应确认并承诺: | ||
| 101 | + | ||
| 102 | +- 已对拟提交AI辅助贡献内容进行人工审查 | ||
| 103 | +- 理解拟提交AI辅助贡献的技术含义、设计影响和维护成本 | ||
| 104 | +- 已完成对拟提交的AI辅助贡献的必要测试、构建、许可证检查和安全检查 | ||
| 105 | +- 已确认AI工具输出未引入与项目许可证不兼容的限制 | ||
| 106 | +- 已确认拟提交AI辅助贡献不包含已知的未获授权的第三方材料,或已按照本项目要求披露第三方材料、许可证、著作权声明和权属信息 | ||
| 107 | +- 已遵守贡献者雇主、客户、学校或所属组织关于AI工具和开源贡献的政策 | ||
| 108 | +- 对所提交AI辅助贡献承担与非AI辅助贡献相同的责任 | ||
| 109 | + | ||
| 110 | +### 7. 审查与合入规则 | ||
| 111 | + | ||
| 112 | +社区维护者可以基于以下原因要求贡献者修改、补充说明、重新提交AI辅助贡献或拒绝合入AI辅助贡献: | ||
| 113 | + | ||
| 114 | +- 贡献者未按要求披露AI辅助贡献的相关信息 | ||
| 115 | +- 贡献者无法解释其所提交的代码逻辑或来源 | ||
| 116 | +- 贡献内容与未经授权的第三方代码、文档或图片实质性相似 | ||
| 117 | +- 许可证、著作权或权属信息不清晰 | ||
| 118 | +- 未经测试、不可维护或增加安全风险的低质量AI辅助贡献 | ||
| 119 | +- 自动化、批量化提交影响社区正常维护秩序的低质量AI辅助贡献 | ||
| 120 | +- 社区维护者基于CANN项目风险偏好认为AI辅助贡献不适合合入 | ||