VSC/Cursor插件上架

VS Code、Cursor、Open VSX、命名空间

Views:  times Updated on July 30, 2026 Posted by elmagnifico on July 21, 2026

Foreword

CodeBind Docs 写完、VS Marketplace也挂上去了,本以为Cursor那边搜一下就能装。结果发现:Cursor扩展市场不跟Microsoft那套走,得另发一份到Open VSX。下面把VS Code怎么发、Open VSX怎么发、以及这趟踩的坑一起记下来,免得下次又忘。

两套市场

Cursor和VS Code的插件市场原本是一套,但是后来微软收紧策略,导致分开了,变成了2个市场。

Cursor里有两套完全不同的“市场”,名字都带marketplace

名字 实际装啥 怎么上架
Extensions(扩展面板) VS Code 那类插件,CBD 就是这个 发到 Open VSX
Plugins(Customize / cursor.com/marketplace) rules、skills、MCP、hooks 另搞一套 .cursor-plugin/,走人工审核

CBD是正经VS Code扩展,跟Cursor Plugin那套无关。想让人在Cursor里 Ctrl+Shift+X 搜到,只发Microsoft Marketplace不够,必须再发Open VSX。

官方也写明了:Cursor第三方扩展走Open VSX,中间再套一层他们自己的安全扫描代理。

VS Code插件

官方文档:Publishing Extensions。下面按我实际走过的顺序记。

0. 扩展本身先能装

本地 npm run compile 过,扩展开发宿主里跑得起来,上架前最好再过一遍测试。打包工具用官方的 @vscode/vsce(老包名 vsce 别再用)。

package.json 至少这些要齐,缺了会拒:

字段 说明
name 扩展名,小写、短横线,进 ID 的那截
publisher 发布者 ID,跟市场里建的一模一样
version semver,每次改内容再发必须升
engines.vscode 最低 VS Code 版本
displayName / description 市场展示用
icon 建议 128×128 PNG
repository 仓库地址,市场页会挂链接

另外README、CHANGELOG、LICENSE建议都有,市场页长什么样,基本看README。CBD还补了 keywordscategoriesgalleryBanner,好看一点而已。

扩展完整ID = publisher.name,例如 codebind.codebind-docs这个ID以后基本改不了,起名字时想清楚。

1. Azure DevOps搞一个PAT

Marketplace 认证挂在 Azure DevOps 上,所以要先搞 Personal Access Token:

  1. 打开 Azure DevOps,用微软账号登录(跟后面建 Publisher 用同一个
  2. 用户设置 → Personal access tokens → New Token
  3. OrganizationsAll accessible organizations(选成某个具体 org 很容易发不出去)
  4. ScopesMarketplace → Manage
  5. 创建后立刻复制,关掉就再也看不见了

这完全是Agent的说法,实际个人作者根本不需要,直接走下步即可

2. 创建Publisher

image-20260721171135115

  1. 打开 https://marketplace.visualstudio.com/manage
  2. Create publisher
  3. ID:唯一标识,进URL,创建后不能改(CBD用的 codebind
  4. Name:市场上显示的名字,品牌文案,这个还能动

ID别跟显示名搞混:ID是机器认的,Name是给人看的。

3. 打包 / 发布

命令行一把梭:

npm run compile
npx @vscode/vsce publish --no-dependencies
# CBD 仓库里等价于:npm run publish:vsce

publish 内部会跑 vscode:prepublish(一般就是compile),再上传。

先打 .vsix 再网页传(更稳,出问题好排查):

npm run package
# → codebind-docs-x.y.z.vsix

然后到manage页,进入你的publisher,选择New Extension或更新已有扩展,再上传 .vsix

image-20260721171234190

本地试装:

code --install-extension codebind-docs-x.y.z.vsix

或命令面板:Extensions: Install from VSIX...

4. 更新版本时注意

  • 改了README截图、描述、代码,都要bump version,同一版本号覆盖不了
  • unpublish 和“彻底删除”不是一回事,删除后名字可能被永久占用,慎用
  • .vscodeignore 写清楚,别把 node_modules、测试产物、开发脚本打进包,反过来媒体、out/、README别误忽略

CBD这边VS市场页:

https://marketplace.visualstudio.com/items?itemName=codebind.codebind-docs

Token

拿token,需要先新建一个组织,新建一个项目,然后就能拿到个人token了

https://go.microsoft.com/fwlink/?LinkId=307137

image-20260721191135472

默认只能一年,而且由于政策变动,目前只支持到26年12月1号,后续看情况吧

image-20260721191259338

Open VSX

Cursor扩展面板吃的是Open VSX,步骤和VS平行、账号体系完全两套。

image-20260721171455409

  1. open-vsx.org 用GitHub登录
  2. 注册Eclipse Foundation账号,GitHub Username填成同一个GitHub
  3. 个人设置里Log in with Eclipse,签Open VSX Publisher Agreement(没签完一律发不出去)
  4. 生成Access Token
  5. 创建namespace(对应 package.jsonpublisher
  6. ovsx publish 或网页拖 .vsix
npx ovsx create-namespace codebinddocs -p <token>
npx ovsx publish codebind-docs-x.y.z.vsix -p <token>
# 或:npm run publish:ovsx

仓库里 publish:vsce / publish:ovsx 两边各发一遍就行。注意:Open VSX的namespace可以和VS的publisher不同(我就是因为撞名被迫拆开的)。

Token

image-20260721190113470

拿token比较简单,直接生成即可,后续给到CI流程进行自动化

认领namespace

发完以后页面上很可能还有一条警告,大意是:

This version of the “CodeBind Docs” extension was published by elmagnificogi. That user account is not a verified publisher of the namespace “codebinddocs” of this extension.

意思是:扩展已经发上去了,但 codebinddocs 这个命名空间还没被官方认定归你所有。

Open VSX和VS Marketplace不一样:

  VS Marketplace Open VSX
建 publisher / namespace 你就是所有者 你只是 contributor,能发版
验证勾 建好就有 还要再 claim ownership 一次

所以:elmagnificogi 能发版,但还不是 codebinddocs 的verified owner。扩展能用、Cursor也能搜到,只是详情页带 ⚠️。

消掉警告的办法:去 EclipseFdn/open-vsx.org 开一个Issue,申请命名空间所有权,大致写:

  • Open VSX / GitHub用户名:elmagnificogi
  • 要认领的namespace:codebinddocs
  • 证明你是维护者,例如仓库、VS市场页链接

标题可以写成:Namespace Ownership Request: codebinddocs

管理员通过后,namespace变成verified,你就是owner,警告会消失(有时再发一个新版本才完全干净)。

image-20260721172645599

实际我已经获得授权了,但是依然未认证,这个需要github上继续联系对方,他应该只是设置了publisher,但是没把你设置为owner,导致这个命名空间一直没有被切换过来。

踩坑

以为发了VS就能在Cursor搜到

社区里一堆人踩过:VS Marketplace有货,Cursor扩展面板搜不到。原因就是上面那条,Cursor默认吃Open VSX,不自动镜像Microsoft市场。

临时办法:本机装 .vsixExtensions: Install from VSIX...)。长期还是得发Open VSX。

没签Eclipse协议

报错大意:

You need to sign the Eclipse Foundation Open VSX Publisher Agreement…

Open VSX是Eclipse基金会管的,发布者协议必须签。注意:

  • “Eclipse Contributor Agreement”和这个不是一回事
  • 登录Eclipse时用的GitHub,得和open-vsx.org登录的是同一个
  • 签完回到Profile,能看到协议相关入口才算过

namespace太像,不让建

想建 codebind,直接被拒:

Namespace name ‘codebind’ is too similar to existing namespace(s): CodeMind.

Open VSX有typosquatting / 相似度检查,名字撞得太近就不给你。跟CodeMind差几个字母,系统觉得用户会搞混,讲道理偏严,但也没地方跟机器人扯皮。

最后改成 codebinddocs,扩展ID变成:codebinddocs.codebind-docs

显示名照样可以叫CodeBind Docs,变的是URL / ID那截,不是产品名。

VS那边改不了publisher

第一反应:那我把VS Marketplace也改成 codebinddocs,两边统一?

不行。publisher.name 是扩展唯一身份:

  • Publisher ID创建后改不了
  • 你自己改 package.json 再发,市场会当成另一个新扩展
  • 老用户不会自动迁,下载量也不合并
  • 真要迁移得找Marketplace Support申请transfer,现在很少批,还一堆副作用

所以现实方案是:

  • VS Marketplace:继续 codebind.codebind-docs
  • Open VSX / Cursor:用 codebinddocs.codebind-docs

两边ID不一致,难看一点,但比下架重来强。下架还可能把名字永久占死,更亏。

删除改名

后续VS这边重新建publish,名字改成了一样的,就是删了之前的,但是上传就一直提示插件已经存在了

image-20260721172036019

VS Marketplace自大约2025年中起的政策是:

扩展一旦被 Remove(删除),name(ID 里第二段,例如 codebind-docs)会永久占用,原作者也不能再用。

干,所以现在要换个name上传,真的离谱了

Summary

上架扩展本身不难,难的是两个市场两套规矩,还都叫marketplace。Publisher核心就三件事:身份(账号 / 协议)、命名空间(撞名真的会卡死)、版本与打包(升版本、.vsix、两边各发)。

CBD现在:

Quote

https://github.com/eclipse-openvsx/openvsx/wiki/Namespace-Access

https://github.com/EclipseFdn/open-vsx.org/wiki/Guidelines-on-Namespace-Requests