教程 搜索 / Native Mac IDE / 将插件发布到插件市场
📝 文字 ● 中级 更新于 2026-05-13

将插件发布到插件市场

通过 git URL 分享插件只能解决一次性问题。将插件发布到插件市场,则让"安装团队标准工具链"变成任何人都能一键完成的操作,新员工在入职第一天就能无障碍运行,无需任何人指导。

插件最大的价值在于共享。原因并不复杂——为自己写的 hook 同样值得为团队写,一旦值得为团队写,"好,clone 这个仓库,跑这条命令,把这个文件夹复制到那里"这类操作本身就成了真正的瓶颈。愿意安装一个打磨好的插件的人,未必愿意为此走五步终端操作。

插件市场就是填补这一鸿沟的目录层。它是一个小型 JSON 清单,列出一个或多个插件,托管在团队可以访问的地方。用户一旦添加了你的插件市场(一条命令、一个 URL),其中的每个插件都能通过简短名称安装:lingcode plugin install tdd,而不是 lingcode plugin install git+https://github.com/yourorg/lingcode-plugins/tree/main/tdd。前者才是团队成员实际会去运行的命令。

有一个权衡值得理解:插件市场是安装时刻的快照。用户执行 marketplace add 时,LingCode 读取的是那一刻的清单。没有自动更新流程——若要刷新,需要先移除再重新添加插件市场。这是有意为之(从远程源自动拉取插件变更会带来安全风险),但这也决定了运营插件市场的方式。

你将学到

第一步:编写插件市场清单

1

一个 JSON 文件,列出所有插件

在发布位置的根目录创建 marketplace.json

{
  "name": "acme",
  "description": "Internal LingCode plugins for the Acme engineering team.",
  "plugins": [
    {
      "name": "tdd",
      "description": "Acme's TDD workflow: write the failing test first.",
      "source": "git+https://github.com/acme/lingcode-plugins.git",
      "subpath": "tdd"
    },
    {
      "name": "deploy-staging",
      "description": "Deploy the current branch to Acme's staging environment.",
      "source": "git+https://github.com/acme/lingcode-plugins.git",
      "subpath": "deploy-staging"
    }
  ]
}

结构很简洁:一个插件市场有名称、描述,以及一个插件列表。每个插件条目包含自己的名称、描述、source(从哪里克隆)和 subpath(source 中的子目录)。用户安装时,LingCode 根据 source+subpath 拉取实际的插件内容。

第二步:托管清单

2

只要能被访问到即可

"托管"插件市场,本质上就是托管一个 JSON 文件,以及它所指向的插件文件夹。通常有两种选择:

  • git 仓库。marketplace.json 放在根目录,插件放在子目录,推送到 GitHub。用户通过 git URL 添加插件市场;LingCode 从默认分支读取清单。
  • 稳定 URL 上的静态文件。marketplace.json 部署到 CDN 或静态托管服务,将插件的 source URL 单独指向 git 仓库。适合需要将插件市场元数据与插件代码解耦的场景。

对大多数团队来说,git 仓库的方式更简单:一个仓库同时包含插件市场和所有插件,更新任意一方都是一次普通的 commit。如果插件引用了内部内容,将仓库设为私有即可。

第三步:用户添加插件市场

3

一条命令,一个 URL

你的团队成员只需运行一次:

lingcode plugin marketplace add https://github.com/acme/lingcode-plugins

LingCode 读取该地址的 marketplace.json,将其快照保存到 ~/.claude/marketplaces/acme/,此后便知道这个插件市场所提供的所有插件。

第四步:用户通过简短名称安装插件

4

这就是目标

注册插件市场后,安装插件变得如此简单:

lingcode plugin install tdd
lingcode plugin install deploy-staging

无需 URL,无需 subpath,无需任何复制操作。LingCode 在已注册的插件市场中查找 tdd,在 acme 中找到它,然后拉取并安装。lingcode plugin search 可以列出所有可用插件,方便用户浏览。

入职建议:marketplace add 命令添加到团队的"新开发者配置"文档中,与克隆主仓库的步骤并列。两分钟、一条命令,团队使用的所有插件即刻就位。

第五步:与无更新模型共处

5

快照,而非订阅

用户添加插件市场后,他们的快照就固定了。你在清单中新增的插件不会出现在他们的 plugin search 结果中,直到他们重新添加插件市场为止。这是安全性的代价:从远程源自动拉取插件元数据,意味着永久信任那个远程来源。

有两种模式能很好地适应这一限制:

  • 在聊天或文档中公告。新增插件时,发一条通知:"有新插件可用,运行 marketplace remove acme && marketplace add <url> 来刷新。"大多数团队都会跟进。
  • 对插件市场做版本管理。每个插件条目可以携带 version 字段;用户运行 lingcode plugin update <name> 可以获取已注册插件市场中该插件的最新版本。他们仍然无法在不重新添加的情况下看到插件,但已有插件可以获取更新。

第六步:尽早养成的好习惯

6

三个会持续复利的习惯

  • 版本标签。每次对插件做出有意义的改动时,用 semver 风格的标签(如 v0.3.0)打标插件市场仓库。即使没有工具消费这些标签,未来的你也能一眼定位。
  • 每个插件单独写 README。每个插件目录都有自己的 README,说明它做什么、改动了什么,以及(对于 hooks)会阻断什么。没有仔细阅读就安装的用户,至少有个地方可以回头查。
  • CHANGELOG。在插件市场级别维护一份变更日志。每条改动一行记录,省去日后无数次的重新排查。
含 hooks 的插件会触发授权确认。用户运行 plugin install tdd 时,如果插件包含 hooks/hooks.json 或可执行脚本,LingCode 会在安装前弹出提示。你的插件市场不会绕过这一机制——也不应该绕过。这个授权提示是安全模型的组成部分,不是体验上的瑕疵。

下一步