基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
  • 知识卡片碎片时间过考点
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
    • AI 热点每日 AI 资讯与动向
AI 工作台
简历
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
技术实践2026-11-03 21:37

从Git提交追踪AI代码来源并生成物料清单

dev.to · AI#软件物料清单#AI编程#代码溯源
Editor brief · 编辑速览

文章以AT&T供应商条款为例,介绍扫描提交中的AI署名和会话链接,生成CycloneDX或SPDX文件的方法。这些记录只能证明AI参与过提交,无法精确识别其编写的代码行。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

客户要求交付软件物料清单(SBOM)时,可能还会追问:代码用了哪款 AI 工具,工具是否获批?作者拿 AT&T 的供应商条款做了一次真实仓库实验,发现 Git 提交记录能提供部分证据,却无法证明每行代码的来源。

这篇值得读的地方,是把「披露 AI 使用」拆成了可执行的检查,也明确划出了边界:生成合规格式的文件,距离完整、可靠的来源证明,还有一段路。

客户要的不只是依赖清单

据原文,AT&T 的供应商 AI 条款 v2.1(2025 年 10 月)要求:如果供应商代码使用 AI 工具生成,首次交付及后续每次发布都要提交 SBOM,其中包含「AI Solution」的说明。AI 生成的工作还要标记为「AI Generated」。

此外,每款 AI 工具都必须事先获批;使用未经批准的工具,AT&T 没有义务为相关工作付款。

这把问题从「开发者喜欢用什么工具」,推到了「交付时能否拿出使用记录」。作者找到的 Lockheed Martin 分包条款副本,只要求按需提供 AI 生成内容的可追溯信息,表述更宽泛。AT&T 是作者找到的措辞如此具体的买方,不能据此推断整个行业都已采用同样要求。

Git 能证明 AI 参与过,却认不出每一行

作者选择从提交记录取证,因为不少编程代理会留下标记:

  • Claude Code 添加 Co-Authored-By: Claude,较新版本还添加 Claude-Session 链接。
  • GitHub 的 Copilot coding agent 添加 Agent-Logs-Url。
  • Cursor 和 Aider 也有各自的共同作者标记。

作者编写的 ai-code-sbom 是单个 Python 文件,除 Python 运行环境外只需要 git。它扫描一个发布范围内的提交,输出 CycloneDX 或 SPDX 文件及纯文本摘要,还能根据工具和提供商允许列表执行检查,发现列表外的记录就失败。

实测使用公开仓库 pyrail,从 v0.4.1 到 v0.5.0,共 151 次提交,其中 8 次带有 AI 标记:Copilot coding agent 和 Claude Code 各出现在 5 次提交中,有 2 次 squash merge 同时带着双方标记,因此不是 10 次独立提交。

这些提交涉及该版本 22 个变更文件中的 20 个。作者配置「只允许 Claude Code」后,检查失败,并列出了 5 次 Copilot 提交。这是实验最实用的结果:交付之前,可以先发现记录中不符合工具政策的使用情况。

但不能直接把提交里的代码都算给 AI。带标记的提交新增了 2,028 行,整个版本新增了 8,354 行。2,028 行只是这些提交中可能由 AI 生成的新增行数上限,不能当作实际生成量。

文件通过校验,不代表表达方式已经统一

接下来是标准怎么装下这些信息。

按作者的说明,CycloneDX 和 SPDX 都还没有公认字段,完整表达「代码由 AI 工具 X、模型 Y 编写」。作者把工具放进 CycloneDX 的 formulation,用于描述版本如何被制作出来。若放进顶层 services,则会表达产品运行时调用 AI 服务,含义就变了。

在 SPDX 中,作者把它表示为 Tool,通过包的 usesTool 关系关联。

两种输出都通过了官方 schema 校验,但这是作者自行选择的映射。格式合法,只能证明文件符合结构要求,不能证明客户认可它的证据含义。

原文还指出,模型、提供商调用路径及证据观察方式,都缺少相应的公认表达。比如同样使用 Anthropic 模型,经 Anthropic direct、Bedrock 或 Vertex 调用,交付时可能需要区分,现有方案却还没有完整解决。

我的判断

我认可作者优先收集明确记录的选择。它能回答「哪些提交留下了哪款工具参与的证据」,也能把允许列表检查接到发布流程里,比凭代码风格猜测更贴近客户询问的工具和提供商身份。

但这套方案的前提是提交标记足够可靠。编辑器内联建议可能不留痕迹,标记可以关闭,也可能在 squash 时丢失。空报告只能表示没找到证据,不能证明没用 AI。作者主动排除了检测猜测,因为它们无法给出条款要求的工具或提供商身份。

原文没有提供漏检率、误检率,也没有买方验收结果。仓库实验验证了扫描和策略检查能运行,没有验证它足以满足合同。相比人工填报,提交扫描有自动化优势;相比工具审批记录,它又缺少完整的授权上下文。两者更适合互相补充。

能拿来做什么

  • 给前端或 Node 项目交付前,可以按两个发布标签之间的提交生成报告,并用团队批准的工具及提供商允许列表检查,提前处理发现的例外。
  • 使用编程代理时,可以保留共同作者和会话链接等提交信息,并检查 squash 后是否仍存在,避免发布阶段才发现证据丢失。
  • 客户要求披露 AI 来源时,应先明确需要工具名、模型、调用路径还是代码范围,再核对报告能覆盖哪些字段,并明确说明未留痕使用无法被这类扫描发现。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
用独立AI会话复核代码与执行计划
下一篇
三款编程Agent工具实测自动交付

资讯速览

dev.to · AI · 2026-11-03 21:37

AI 评分 8.0 / 10

相关标签

#软件物料清单#AI编程#代码溯源

继续阅读

  • 用 CI 检查阻止智能体规范失效
  • 用独立AI会话复核代码与执行计划
  • 三款编程Agent工具实测自动交付
  • Agent安全防线应落在工具调用上
  • 研究Agent迁移:从沙箱文件到会话状态