news 2026/9/10 22:47:56

LocalAI AI 辅助贡献规范:许可证合规、DCO 签认与 Assisted-by 溯源实践指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LocalAI AI 辅助贡献规范:许可证合规、DCO 签认与 Assisted-by 溯源实践指南

LocalAI AI 辅助贡献规范:许可证合规、DCO 签认与 Assisted-by 溯源实践指南

【免费下载链接】LocalAILocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI

LocalAI 是一个以 MIT 许可证开源的 AI 引擎,其社区协作同样向 AI 编程助手(Claude、Copilot、Cursor、Codex、Aider 等)开放,但这并不意味着 AI 可以替代人类完成法律与质量层面的全部责任。本文基于仓库中 docs/content/reference/ai-coding-assistants.md 参考文档及其背后的政策源文件 .agents/ai-coding-assistants.md,系统梳理在向 LocalAI 提交 AI 辅助贡献时必须遵守的许可证要求、Signed-off-by与 DCO(Developer Certificate of Origin)签认规则、Assisted-by溯源格式以及人类提交者的责任边界,帮助贡献者与 AI 工具正确、合规地参与到该项目的开发中。

政策出处:文档层级与"源文件"关系

AI 辅助贡献政策在仓库中有多个落点,它们构成一套相互引用的文档体系:

  • 面向站点读者的参考页:docs/content/reference/ai-coding-assistants.md 是 Hugo 参考(reference)章节中的公开页面,带disableToctitleweight等 front matter,用于向访问文档站的开发者说明政策要点。
  • 政策的"源文件"(source of truth):.agents/ai-coding-assistants.md 被 AGENTS.md 与 CONTRIBUTING.md 明确称为"full policy source of truth",是 Agent 与维护者实际遵循的权威文本。
  • 仓库级入口文件:AGENTS.md 是给 AI 编程助手的统一入口(其符号链接形式为 CLAUDE.md),以"何时该读哪个文件"的表格索引全部专题指南;CONTRIBUTING.md 则是人类贡献者的开发流程手册,内含 "AI Coding Assistants" 摘要章节。

政策本身并非 LocalAI 原创,而是对齐 Linux 内核项目的 AI 辅助贡献指南(内核文档站docs.kernel.org上的 coding-assistants 政策),并针对 LocalAI 的 MIT 许可证与仓库目录布局做了适配。若对某个条款意图理解有歧义,内核文档是判断意图的权威参考。

除政策文件本身外,AI 工具参与开发还应遵循标准流程,参考以下配套文档:

文档作用
CONTRIBUTING.md开发工作流、分支命名、conventional commits 提交规范与 PR 指南
.agents/coding-style.md代码风格、editorconfig、日志与文档约定
.agents/building-and-testing.md构建与测试流程(含各平台 Docker 构建)

许可证与法律要求:MIT 兼容是第一道门槛

LocalAI 采用MIT License,许可证全文见仓库根目录的 LICENSE,版权人为 Ettore Di Giacinto(mudler@localai.io)。AI 辅助贡献首先必须在许可证层面合规:

  • 新源文件应使用 SPDX 许可证标识MIT(视文件类型而定)。这一要求在仓库中已有落实——例如 backend/cpp/llama-cpp/passthrough_options.h、backend/cpp/ds4/request_lifecycle.h 等较新的 C/C++ 后端文件顶部都携带了SPDX-License-Identifier行,Python 后端的构建脚本(如backend/python/longcat-video/Makefile)同样如此。
  • 贡献必须与 MIT 兼容,不得引入 GPL 等不兼容许可证的代码,除非与维护者显式沟通并达成一致。

换句话说,即使代码是 AI 生成的,它进入仓库后依然按 MIT 授权对外发布,因此"这段代码的许可证是什么、是否允许并入 MIT 项目"必须由提交者事先确认,而非交给模型自行判断。

Signed-off-by 与 DCO:AI 绝对不能代替人类签认

**开发者来源证书(DCO)**的签认具有法律含义:它声明签名者有权贡献该代码、理解其许可证,并对其负责。LocalAI 政策对此给出了一条不可逾越的红线:

AI Agent 不得添加Signed-off-by标记。只有人类才能合法地对 DCO 做出认证。

人类提交者因此必须承担以下全部责任:

  1. 审阅所有 AI 生成的代码
  2. 确保符合许可证要求
  3. 在项目要求 DCO 时,添加自己的Signed-off-by标记以认证该贡献;
  4. 为贡献承担全部责任

同时,AI Agent 也不得为自己添加Co-Authored-By(共同作者)尾注。一份贡献只能由人类评审者拥有;AI 的参与通过Assisted-by尾注记录(见下文),而不是把自己写成"共同作者"。

例外:维护者亲自运行的自动化

上述规则覆盖的是最常见场景——AI 助手帮助一位人类贡献者,随后由人类签认。但它不适用于另一种情形:维护者自己运行的自动化机器人直接打开 PR,没有人类提交者可以签名。如果机械地执行"AI 不得签名",这类 PR 将永远无人签认,DCO 检查会将其永久卡死。

因此政策规定:维护者运营的机器人必须添加Signed-off-by,且署名必须指向"操作它的那位维护者本人",而不是机器人、也不是模型。例如:

Assisted-by: Codex:gpt-5 Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

这并非 AI 在认证 DCO——签名的是维护者,正如他们手工敲入一个提交时那样:维护者配置了自动化、拥有其产出、并在合并时为其负责。Assisted-by尾注依然如实记录了"模型产出了这段代码",溯源链没有被破坏。

这一例外非常狭窄,不会为任何其他人放宽规则:

  • 仅适用于 LocalAI 维护者运营、且其产出在合并前由该维护者评审的自动化;
  • 签认者必须是接受 DCO 责任的真实个人;
  • 帮助外部贡献者的 AI 助手依然不得签认,签认尾注由该贡献者自己添加;
  • 机器人不得代表除其操作者以外的任何人签认,也不得为它推送分支的那个贡献者添加尾注;若自动化向他人分支贡献代码,则把签认留给该贡献者完成。

溯源机制:Assisted-by 提交尾注格式

当 AI 工具参与 LocalAI 开发时,规范化的溯源有助于跟踪 AI 在开发过程中不断演化的角色。贡献应在提交信息的尾注区(trailer)包含Assisted-by标记,格式如下:

Assisted-by: AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]

各字段含义:

字段含义示例
AGENT_NAMEAI 工具或框架的名称ClaudeCopilotCursorCodex
MODEL_VERSION使用的具体模型版本claude-opus-4-7gpt-5
[TOOL1] [TOOL2]Agent 调用的专项分析工具(可选)golangci-lintstaticcheckgo vet

注意,基础开发工具不应被列出——git、go、make、编辑器这类人人都用的常规工具不算"分析工具",无需在尾注中声明。

值得说明的是,本仓库确实维护着可供这类专项工具消费的静态检查配置:.golangci.yml 定义了以"与 master 的 diff 为新代码基线"的 lint 策略(new-from-merge-base: origin/master),并启用了forbidigo等规则约束代码风格(例如禁止测试中使用t.Errorf/t.Fatal,要求改用 Ginkgo/Gomega 的Expect(...).To(...))。这意味着 AI 声称跑过golangci-lint是可被复核、有价值的,也正因如此,政策只认可"专项分析工具"进入Assisted-by

完整示例

政策给出了一段完整的提交信息示例,同时演示了 conventional commits 风格、范围(scope)与清晰 body 的组合:

fix(llama-cpp): handle empty tool call arguments Previously the parser panicked when the model returned a tool call with an empty arguments object. Fall back to an empty JSON object in that case so downstream consumers receive a valid payload. Assisted-by: Claude:claude-opus-4-7 golangci-lint Signed-off-by: Jane Developer <jane@example.com>

示例中值得注意的要点:

  • 标题fix(llama-cpp): ...使用 conventional commits 的类型(范围)格式,scope 精确到后端模块,符合 CONTRIBUTING.md 中"短小、祈使句、72 字符内、用 body 解释 why"的提交规范;
  • body 交代了修复动机(此前解析器在模型返回空 arguments 对象时会 panic)与修复策略(回退到空 JSON 对象以保证下游收到合法 payload);
  • trailer 区严格分层:Assisted-by记录 AI 工具与模型(Claude:claude-opus-4-7)及专项工具(golangci-lint),随后是人类Signed-off-by

责任边界:审阅、验证与"幻觉防护"

使用 AI 助手不会降低贡献者的责任。人类提交者必须:

  • 理解进入 PR 的每一行代码
  • 验证生成的代码能编译、通过测试并符合项目风格(LocalAI 的构建/测试入口与具体过程见 .agents/building-and-testing.md);
  • 确认代码引用的任何 API、flag 或文件路径在当前代码树中真实存在——政策明确指出,AI 模型可能幻觉出并不存在的标识符。这一点在 LocalAI 这样功能面庞杂的仓库(多后端、多能力注册表、REST 与 MCP 双暴露面)中尤其关键,AGENTS.md 为此专门强调:新端点必须同步出现在 swagger@Tags/api/instructions注册表、auth 的RouteFeatureRegistry、React UI 的capabilities.js与文档等每一处能力面中,漏掉任何一处都会让客户端与 UI 感知不到该功能;
  • 不得未经审阅就逐字提交 AI 输出

此外,评审者可以对任何变更要求澄清,无论其是如何产生的。面对设计问题,"这是 AI 写的"不是一个可接受的答复——AI 参与不构成降低评审标准、免除解释义务的理由。

落地检查清单

综合政策文档与仓库配套文件,可以总结出人类贡献者与 AI 工具各自的行事清单:

对 AI 工具(Agent / Bot):

  • 不要添加Signed-off-byCo-Authored-By(为自己署名);
  • Assisted-by: AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]记录参与,不列出 git/go/make 等基础工具;
  • 遵守 AGENTS.md 及其索引的专题指南(构建、测试、代码风格等);
  • 不引入 MIT 不兼容的代码;新源文件按需添加 SPDX 标识MIT

对人类贡献者:

  • 逐行审阅并理解 AI 生成的代码,验证编译、测试与风格合规;
  • 核实引用的 API、flag、文件路径真实存在,警惕模型幻觉;
  • 亲自添加Signed-off-by认证 DCO,承担全部责任;
  • 使用 conventional commits 风格提交(如fix(llama-cpp): ...),并在 trailer 区先Assisted-bySigned-off-by

对维护者运营的自动化(唯一例外):

  • 以操作者的真实身份添加Signed-off-by,并保留Assisted-by溯源;
  • 不代其他贡献者签名,不为其推送的分支添加尾注。

政策本身是一份"活文档"(living document)。如果你不确定某个具体贡献应如何适用以上规则,建议在提交前先打开 issue 或与维护者沟通确认——这也正是该参考页以提示框形式给出的官方建议。对本仓库而言,最权威的落点始终是 .agents/ai-coding-assistants.md,配套流程详见 CONTRIBUTING.md 与 AGENTS.md。

【免费下载链接】LocalAILocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI

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

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

AMQP异步实现aio_pika 2.0

AMQP&#xff08;Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff09;是一个为面向消息的中间件设计的应用层标准协议&#xff0c;旨在实现跨平台、跨语言的异步消息通信。核心定位与背景AMQP 最初由摩根大通于 2003 年提出&#xff0c;后于 2011 年成…

作者头像 李华
网站建设 2026/9/10 22:45:02

从“事后追溯”到“实时可溯”:无感定位技术如何重塑战场数据链 技术白皮书

1 概述1.1 技术背景智能化联合作战的制胜核心&#xff0c;已从火力对抗、兵力对抗全面转向数据链速度、认知链路精度、战场数据可信度的体系对抗。战场数据链作为指挥、感知、机动、打击、评估的核心神经网络&#xff0c;决定了OODA作战循环的闭环效率与战局博弈主动权。传统战…

作者头像 李华
网站建设 2026/9/10 22:43:00

深度相机技术:机器人软件开发的感知核心艺术与应用实战

在当今机器人技术快速发展的浪潮中,感知能力成为其实现智能化的基石。深度相机作为一项突破性创新,凭借其精准捕捉三维场景的能力,正重塑机器人软件开发的格局。它不仅为导航避障提供关键数据,还为物体识别、交互行为等场景带来革命性影响。本文将深入剖析深度相机的技术本…

作者头像 李华
网站建设 2026/9/10 22:42:24

企业数据中台建设:核心痛点与qData商业版解决方案

1. 企业数据中台的市场现状与核心痛点 当前企业数字化转型已进入深水区&#xff0c;数据资产的价值挖掘成为核心竞争力。根据行业调研数据显示&#xff0c;超过78%的中大型企业在2023年已将数据中台建设列入战略优先级&#xff0c;但实际落地效果参差不齐。传统自建数据平台往往…

作者头像 李华