技术深度解析
'Co-authored-by: Copilot'现象根植于现代代码生成模型的架构。GitHub Copilot由OpenAI的Codex驱动,Codex是GPT-3的后代,在GitHub仓库中数十亿行公开代码上进行了微调。与依赖n-gram模型或简单模式匹配的早期自动补全工具(如TabNine、Kite)不同,Codex使用基于Transformer的解码器,拥有120亿参数(Codex-12B)。它处理整个上下文窗口——正在编辑的文件、打开的标签页甚至项目结构——以生成语法和语义上合理的代码。
是什么让开发者感到需要注明作者身份?关键在于上下文理解。早期的Copilot(2021-2022年)通常生成单行补全或简单循环。到2024年,随着GPT-4-turbo和'Copilot Chat'功能的引入,模型能够生成多函数模块,包含导入、错误处理和文档字符串。最新版本Copilot X与拉取请求集成,可以建议整个差异。这不再是'建议',而是'交付物'。
一个在VS Code中使用Copilot的开发者可能会输入一个函数签名和一段描述逻辑的注释。Copilot生成10-20行实现需求的代码。开发者审查、调整变量名、添加遗漏的边界情况,然后提交。AI贡献了结构骨架和70%的逻辑。开发者贡献了最后的30%——关键推理和领域特定调整。正是这个比例让'Co-authored-by'标签显得合理。
从版本控制的角度看,Git的提交元数据没有非人类作者的字段。'Co-authored-by'尾部标记是从结对编程借用的约定,其中两个人类合作完成一次提交。GitHub的界面会解析它以显示多个作者。但没有任何机制来追踪AI贡献的百分比,也无法区分'AI生成、人工验证'与'人工编写、AI辅助'。这种模糊性对代码审计和许可证合规性而言,是一颗定时炸弹。
相关开源项目:
- Aider(GitHub: paul-gauthier/aider,20k+星标):一个在终端中工作、可编辑多个文件的AI结对编程工具。它在其提交消息中明确追踪AI贡献,使用包含模型名称和token数量的结构化格式。
- Open Interpreter(GitHub: OpenInterpreter/open-interpreter,55k+星标):允许LLM在本地运行代码。它有一个'record'模式,记录所有AI生成的命令,提供审计轨迹。
- GitHub Copilot CLI(GitHub: github/gh-copilot):Copilot的命令行界面,可生成shell命令和git操作。它尚未添加归属标签,但社区已创建了分支脚本来实现。
基准数据:
| 模型 | HumanEval Pass@1 | MBPP Pass@1 | 每次建议的平均行数 | 上下文窗口 |
|---|---|---|---|---|
| Codex-12B | 28.8% | 44.5% | 3.2 | 2048 tokens |
| GPT-4 (Code) | 67.0% | 70.2% | 8.7 | 8192 tokens |
| Claude 3.5 Sonnet | 72.3% | 74.1% | 12.1 | 100K tokens |
| DeepSeek-Coder-V2 | 75.2% | 76.8% | 14.5 | 128K tokens |
数据要点: 从Codex到GPT-4及更高版本,HumanEval分数的跃升(28.8%到75.2%)与每次建议的平均行数增加4倍相关。模型不再补全token,而是补全函数。这一数量上的飞跃支撑了开发者认知上的质变——AI现在贡献了值得归属的大量可重用代码块。
关键参与者与案例研究
GitHub(微软): Copilot的创造者。GitHub的官方立场是用户拥有生成的代码,并且他们已为企业客户提供版权索赔赔偿。然而,GitHub并未认可'Co-authored-by'标签。事实上,他们的文档仍将Copilot称为'工具'。这造成了公司法律立场(工具)与社区使用(合著者)之间的紧张关系。
OpenAI: 模型提供商。OpenAI的条款声明,他们将通过其API生成的输出的所有权利转让给用户。但他们也承认,模型可能为不同用户生成'相似或相同'的输出——这对版权独特性来说是一个问题。
Anthropic(Claude): Claude的代码生成越来越多地用于复杂重构。Anthropic对AI的协作性质更为明确,CEO Dario Amodei表示'AI应被视为同事,而非工具'。这种哲学上的契合可能推动Claude用户采用类似的归属实践。
Cursor(Anysphere): 一个深度集成AI的VS Code分支。Cursor的'Composer'功能允许在一次提示中进行多文件编辑。该公司内置了归属功能:每个AI生成的更改在差异视图中高亮显示,提交消息自动包含'Generated by Cursor'标签。Cursor是第一个将AI归属作为默认功能的产品化编辑器。