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 插件(Microsoft Marketplace)
官方文档: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 还补了 keywords、categories、galleryBanner,好看一点而已。
扩展完整 ID = publisher.name,例如 codebind.codebind-docs。这个 ID 以后基本改不了,起名字时想清楚。
1. Azure DevOps 搞一个 PAT
Marketplace 认证挂在 Azure DevOps 上,所以要先搞 Personal Access Token:
- 打开 Azure DevOps,用微软账号登录(跟后面建 Publisher 用同一个)
- 用户设置 → Personal access tokens → New Token
- Organizations 选 All accessible organizations(选成某个具体 org 很容易发不出去)
- Scopes 勾 Marketplace → Manage
- 创建后立刻复制,关掉就再也看不见了
这完全是Agent的说法,实际个人作者根本不需要,直接走下步即可
2. 创建 Publisher

- 打开 https://marketplace.visualstudio.com/manage
- Create publisher
- ID:唯一标识,进 URL,创建后不能改(CBD 用的
codebind) - 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。

本地试装:
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

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

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

- open-vsx.org 用 GitHub 登录
- 注册 Eclipse Foundation 账号,GitHub Username 填成同一个 GitHub
- 个人设置里 Log in with Eclipse,签 Open VSX Publisher Agreement(没签完一律发不出去)
- 生成 Access Token
- 创建 namespace(对应
package.json的publisher) 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

拿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,警告会消失(有时再发一个新版本才完全干净)。

踩坑
以为发了 VS 就能在 Cursor 搜到
社区里一堆人踩过:VS Marketplace 有货,Cursor 扩展面板搜不到。原因就是上面那条——Cursor 默认吃 Open VSX,不自动镜像 Microsoft 市场。
临时办法:本机装 .vsix(Extensions: 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,名字改成了一样的,就是删了之前的,但是上传就一直提示插件已经存在了

VS Marketplace 自大约 2025 年中起的政策是:
扩展一旦被 Remove(删除),
name(ID 里第二段,例如codebind-docs)会永久占用,原作者也不能再用。
干,所以现在要换个name上传,真的离谱了
Summary
上架扩展本身不难,难的是两个市场两套规矩,还都叫 marketplace。Publisher 核心就三件事:身份(账号 / 协议)、命名空间(撞名真的会卡死)、版本与打包(升版本、.vsix、两边各发)。
CBD 现在:
- VS:codebinddocs.codebinddocs
- Cursor:codebinddocs
Quote
https://github.com/eclipse-openvsx/openvsx/wiki/Namespace-Access
https://github.com/EclipseFdn/open-vsx.org/wiki/Guidelines-on-Namespace-Requests