Swarms Logo
产品

把私有 GitHub 仓库导入 Swarms Marketplace

现在你可以直接从私有仓库发布智能体。连接一次 GitHub,精确选择要共享哪些仓库,导入过程不会让你的任何代码变成公开。只读权限,令牌一小时过期,不保存任何凭证,随时可在 GitHub 上撤销。

Swarms 团队7 分钟阅读
把私有 GitHub 仓库导入 Swarms Marketplace

Swarms Marketplace 现在可以从你的私有 GitHub 仓库导入了。

在此之前,导入工具只能读取公开仓库。面板上就是这么写的,而由此带来的后果是:任何把智能体放在私有仓库里的人,都必须手工把代码复制过来、粘贴一段描述、重新敲一遍依赖,并且从此之后还要让两边保持同步。大多数做出值得出售的东西的人都在私有仓库里工作,因此这个导入工具恰恰对它本该服务的那批人不可用。

这个问题已经解决。连接一次 GitHub,挑选要共享的仓库,然后从其中任意一个发布。仓库全程保持私有。

这件事为什么对付费智能体尤其重要

它在此刻落地而不是作为一个顺手的小功能,是有具体原因的。

出售一个智能体和把它开源,是两个不同的决定。免费的上架可以指向一个公开仓库,什么也不损失;付费的上架则不行:如果代码是公开的,你正在出售的东西就免费摆在上架页旁边。在这次改动之前,发布一个付费智能体意味着二选一:要么把你打算收费的成果开源,要么手工把它抄进表单,并从此永远维护第二份副本。

私有导入消除了这个取舍。仓库保持私有,上架页承载买家评估所需的信息,而两者之间的连接不再需要手工步骤。

这一点对市场上的三条商业路径影响最大:

付费(Paid) 上架设定一个以美元计价的价格。买家一次性付费并获得访问权限,源码留在你的私有仓库里。

代币化(Tokenized) 上架会为该智能体铸造一个代币。访问权限跟随代币持有量而不是一次性购买,这让使用某个智能体的人可以同时持有它的一份权益。

Vault Mode 是代币化上架上的一个设置,而不是第三种定价模式,发布之前有必要先弄清这个区别。开启 Vault Mode 后,实体页面会对不持有代币的人设限:非持有者看到的是模糊化的页面和购买提示,而持有者与创作者看到全部内容。由于它本身已经按代币持有量控制访问,Vault Mode 与固定美元价格并不兼容,如果你两者都设置,发布表单会提示你。

具体怎么做

  1. swarms.world 注册。
  2. 打开 swarms.world/publish 并选择 Agent
  3. 展开 Import from GitHub。第一次会看到 Connect GitHub 按钮。
  4. 完成连接,并在 GitHub 自己的安装页面上选择要共享哪些仓库。
  5. 从列表中挑一个仓库,表单会自动填好。
  6. 在底部选择你的商业模式:Paid、Tokenized,或带 Vault Mode 的 Tokenized。
  7. 发布。

第一次之后,第三步和第四步就不会再出现。列表直接就在那里,因为这个连接属于你的账户,而不是某一个浏览器。

会导入哪些内容

选定仓库后,表单会填入名称、描述与 README、主实现文件、编程语言、作为标签的仓库 topics,以及从 requirements.txtpyproject.toml 中读取的依赖。

这些内容在发布前都可以编辑。导入只是一个起点,不是一份承诺,由它生成的上架页仍然由你来塑造。

它是怎么工作的

值得解释清楚的是市场能看到什么、不能看到什么,因为你是在被要求把一个服务连接到自己的私有源码上,这件事应当得到一个直接的回答,而不是一个让人安心的形容词。

这套机制建立在 GitHub App 之上,而不是 OAuth 登录。这个区别不是表面功夫。

一个 OAuth 应用要请求仓库访问权限时,请求的是 repo 作用域,而这个作用域是全有或全无的:它授予对你能看到的每一个私有仓库的读和写权限,而提出请求的那个服务会持有一个长期有效的令牌,直到你想起来去撤销。相当多的集成就是这么工作的。这意味着那个服务一旦被攻破,就等于你的全部代码被攻破。

GitHub App 的工作方式不同,下面这些特性正是市场实际依赖的:

由你选择仓库。 不是全部,也不是某个类别,而是你在 GitHub 安装页面上逐个勾选出来的一份明确清单。你没有选择的仓库对市场是不可见的,它既无法枚举,也无法得知它们存在。

只读。 这个应用持有两项权限:Contents 只读,用于读取文件;Metadata 只读,用于列出你共享了什么。没有任何写权限。它无法推送提交、无法开 pull request、无法修改设置,也无法触发工作流。这不是靠政策约束,而是能力上就做不到,因为 GitHub 会直接拒绝这类请求。

不保存凭证。 市场不保存 GitHub 令牌。当你导入时,服务端用自己持有的私钥对请求签名,换取一个仅作用于你所选仓库的访问令牌,用完即弃。该令牌一小时后过期。数据库里不存在一把长期有效、等着被窃取的密钥。

不会到达你的浏览器。 令牌在服务端铸造并使用,绝不会出现在页面、网络响应或本地存储中。

每一次读取都会校验。 在读取某个仓库之前,服务端会向 GitHub 确认你的安装是否真的覆盖了它。指定一个你没有共享的仓库是行不通的。

撤销权在你手里,不在我们手里。 访问 github.com/settings/installations 即可移除仓库或彻底卸载。它立刻生效,而市场无法绕过它。

一句话概括:市场可以读取你挑选的那些仓库,时间由你决定,除此之外什么也做不了。

公开仓库照常可用

如果你的智能体本来就是公开的,一切不变。仓库选择器下方的 URL 输入框依然在,粘贴一个公开仓库的 URL 和以前完全一样,不需要任何连接。

从这里开始

打开 swarms.world/publish,选择 Agent,展开 Import from GitHub。如果你已经连接过,你的仓库就在那里等着。如果还没有,连接大约需要三十秒,而共享什么由你决定。

想看看其他人发布了什么,可以浏览 swarms.world/platform/registry