Synth Daily

背书

Vouch 是一个项目信任管理系统,它要求用户在参与项目的特定部分前,必须获得他人的信任背书。该系统旨在应对人工智能工具带来的低质量贡献问题,通过建立一个明确的信任网络来提高开源项目的贡献质量和安全性。项目维护者可以通过简单的文本文件来管理信任名单,并可以公开否认某些用户,阻止其参与。Vouch 提供 GitHub 集成和命令行工具,但目前仍处于实验阶段。

什么是 Vouch?

Vouch 是一种管理项目信任的系统。参与者必须先被“背书”(vouched for),才能与项目的特定部分进行互动。同时,项目也可以明确“否认”(denounce)某些人,以阻止他们参与。

  • 通用性强: 该系统设计通用,可用于任何代码托管平台上的任何项目。
  • 开箱即用: 默认提供与 GitHub 的集成,通过 GitHub Actions 和命令行工具即可使用。
  • 信任网络: 项目可以配置 Vouch 读取其他项目的信任或否认名单,从而形成一个共享信任决策的“信任网络”。在一个项目中被证明可信的用户,可以自动在另一个项目中也被视为可信。

注意: 这是一个正在由 Ghostty 项目使用的实验性系统。我们会根据使用经验和反馈持续改进。

为什么需要 Vouch?

传统上,开源项目依赖于一种“信任但需核实”的模式。理解代码库、实现更改并提交审核所需的高门槛,自然地过滤掉了许多低质量的贡献。然而,情况已经发生了变化。

  • 历史模式: 贡献代码的门槛足够高,这本身就是一层有效的筛选。
  • 当前挑战: 人工智能工具的出现,使得几乎没有任何理解的人也能轻易地创造出看似合理但质量极低的贡献。

贡献者提交变更的门槛极低,我们已无法再仅仅因此而信任他们。

开源的基础仍然是信任。每个项目都有一群明确可信的维护者和更多可能被信任的社区活跃成员。因此,Vouch 提倡转向一种显式的信任模式:由受信任的个体为他人背书,而被背书的人才能进行贡献。

Vouch 的工作原理

由项目自身来决定谁以及如何被背书或否认,以及这些状态会带来什么后果。项目应根据自己的社区情况,实施适合自己的策略。

如何使用 Vouch?

GitHub 集成

通过使用预置的 GitHub Actions,可以轻松地将 Vouch 集成到 GitHub 项目中。

  • check-pr: 当拉取请求 (PR) 被创建或重新打开时,检查作者是否获得背书。机器人和拥有写入权限的协作者会自动被允许。可以选择自动关闭来自未背书或被否认用户的 PR。
  • manage-by-discussion: 允许协作者通过在讨论区发表评论来为用户进行背书、否认或取消背书。
  • manage-by-issue: 允许协作者通过在议题 (Issue) 中发表评论来为用户进行背书或否认。

命令行工具 (CLI)

该命令行工具是一个 Nushell 模块,仅需 Nushell 即可运行,没有其他外部依赖。

  • 检查用户状态: vouch check <用户名>
  • 添加用户到背书名单: vouch add <用户名>
  • 否认一个用户: vouch denounce <用户名> --reason "提交了AI生成的垃圾内容"
  • GitHub 集成命令: 还提供了用于检查 PR 作者状态和通过 Issue 评论管理贡献者状态的特定命令。

信任名单文件格式(.td)

信任名单存储在一个 .td 文件中。.td 是 “Trustdown” 的缩写。

  • 格式非常简单:

    • # 开头的行为注释。
    • 每行一个用户名,按字母顺序排序。
    • 可以通过 平台:用户名 的格式指定平台(如 github:mitchellh)。
    • 通过在用户名前加上 - 来否认一个用户(如 -github:badactor)。
    • 可以在用户名后添加空格和理由。
  • 示例: # 这是一个注释 github:someuser -github:badactor 这是一个否认的理由 anotheruser