ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

code-server 实时协作实战:用 Duckly 与 CodeTogether 扩展实现跨 IDE 结对编程

code-server 实时协作实战:用 Duckly 与 CodeTogether 扩展实现跨 IDE 结对编程 code-server 实时协作实战用 Duckly 与 CodeTogether 扩展实现跨 IDE 结对编程【免费下载链接】code-serverVS Code in the browser项目地址: https://gitcode.com/GitHub_Trending/co/code-server在浏览器中运行的 code-server 并非“孤岛”——借助第三方 VS Code 扩展它完全支持多人实时协作。本篇围绕仓库文档 docs/collaboration.md 展开讲解如何通过 Duckly 和 CodeTogether 两款扩展在 code-server 中搭建实时代码共享与结对编程环境并结合源码说明--install-extension、--enable-proposed-api等关键参数的底层实现链路读完即可在 code-server 实例上独立完成协作会话的搭建。为什么 code-server 需要第三方扩展来协作code-server 基于 VS Code 构建因此可以复用 VS Code 扩展生态。官方协作方案的思路是协作能力不在 code-server 内核中实现而是由第三方扩展提供code-server 只负责提供“从 Open VSX 安装扩展”和“运行扩展所需的环境开关如 proposed API”。这意味着两个前提扩展必须来自 Open VSXcode-server 默认扩展市场而不是微软官方市场部分扩展依赖 VS Code 的 proposed API需要显式开启。下面两条协作路线Duckly、CodeTogether都建立在这两个前提之上。共同基础从 Open VSX 安装扩展的机制两种方案的安装命令看起来相似都是SERVICE_URLhttps://open-vsx.org/vscode/gallery \ ITEM_URLhttps://open-vsx.org/vscode/item \ code-server --install-extension publisher.name理解这条命令需要看三处仓库实现默认市场指向 Open VSX。patches/marketplace.diff 将 VS Code 的extensionsGallery配置覆盖为 Open VSX 的接口地址serviceUrl、itemUrl等并支持通过环境变量EXTENSIONS_GALLERY一个 JSON 字符串覆盖为自定义市场。src/node/main.ts 在启动时检测该变量并记录日志if (process.env.EXTENSIONS_GALLERY) { logger.info(Using custom extensions gallery) logger.debug( - ${process.env.EXTENSIONS_GALLERY}) }所以安装命令里显式设置SERVICE_URL/ITEM_URL环境变量的写法本质上与EXTENSIONS_GALLERY一样都是告诉扩展管理器“去哪里找市场接口”。集成测试 test/integration/installExtension.test.ts 验证了这一链路当设置EXTENSIONS_GALLERY: {}空配置时执行--install-extension会抛出No extension gallery service configured错误——即市场配置不可用时扩展安装会直接失败这一点在排查安装问题时值得注意。--install-extension会派生独立的 VS Code CLI 进程。在 src/node/main.ts 中shouldSpawnCliProcess通过检测--list-extensions、--install-extension、--uninstall-extension、--locate-extension等扩展类参数决定走 CLI 分支export const shouldSpawnCliProcess (args: UserProvidedArgs): boolean { return ( !!args[list-extensions] || !!args[install-extension] || !!args[uninstall-extension] || !!args[locate-extension] ) }命中后由runCodeCli加载 VS Code 模块并调用spawnCli执行实际的扩展安装见 src/node/main.ts。而--install-extension本身的参数定义在 src/node/cli.ts其格式为publisher.name可通过version指定版本例如vscode.csharp1.2.3也支持直接传入.vsix文件。方案一Duckly 实时代码共享Duckly 提供跨 IDE 的实时代码共享能力包括引自 docs/collaboration.md跨 IDE 支持可与使用 JetBrains、VS Code 等不同 IDE 的人协作实时输入同步P2P 加密传输语音与音频聊天终端共享安装 Duckly 扩展Duckly 通过扩展提供实时共享功能需要先从 Open VSX 安装gitduck.code-streamingSERVICE_URLhttps://open-vsx.org/vscode/gallery \ ITEM_URLhttps://open-vsx.org/vscode/item \ code-server --install-extension gitduck.code-streaming安装完成后刷新 code-server 窗口侧边栏/命令面板中应能看到 Duckly 扩展的入口。发起共享由于 code-server 基于 VS Code后续使用流程与 VS Code 中相同按 Duckly 官方的 “Pair programming with VS Code” 指引操作即可跳过其中“安装扩展”这一步因为你已经通过上面的 CLI 命令完成了安装。典型流程是在扩展面板中启动 Duckly 会话 → 生成共享链接 → 其他参与者无论使用 VS Code 还是 JetBrains 系 IDE打开链接加入。方案二CodeTogether 实时结对CodeTogether 定位为实时跨 IDE 的结对编程工具其官方特性清单引自 docs/collaboration.md跨 IDE 支持VS Code、Eclipse、IntelliJ 及其衍生 IDE浏览器或桌面均可实时编辑共享光标或独立光标适合结对pairing、围读mobbing、群攻swarming等多种协作模式P2P 加密服务器无法解密流量提供 SaaS 与私有化部署两种选项共享服务器、终端和控制台单元测试支持适配 Red / Green / Refactor 的 TDD 流程可通过浏览器或任意 IDE 加入会话免费的 1 小时会话4 人提供付费与免费多种订阅计划安装 CodeTogether 扩展第 1 步从 Open VSX 安装扩展SERVICE_URLhttps://open-vsx.org/vscode/gallery \ ITEM_URLhttps://open-vsx.org/vscode/item \ code-server --install-extension genuitecllc.codetogether第 2 步开启 proposed APICodeTogether 依赖 VS Code 的 proposed API 才能运行需要启动 code-server 时传入code-server --enable-proposed-api genuitecllc.codetogether该参数在 code-server 中被定义为string[]类型可以一次传入多个扩展 ID 分别启用见 src/node/cli.ts 的参数描述“Enable proposed API features for extensions. Can receive one or more extension IDs to enable individually.”。参数经 src/node/cli.ts 的toCodeArgs透传给 VS Code server 进程最终由 VS Code 的 proposed API 环境开关消费。另一种做法是写入 code-server 的配置文件。按 docs/FAQ.md 的说明code-server 启动时会在~/.config/code-server/config.yaml生成默认配置配置文件中每个 key 直接对应一个命令行 flag且命令行传入的 flag 优先于配置文件。因此只需在config.yaml中加上enable-proposed-api: - genuitecllc.codetogether配置位置可用--configflag 或$CODE_SERVER_CONFIG环境变量覆盖默认位置遵循$XDG_CONFIG_HOME。第 3 步刷新窗口并开始会话刷新 code-server 窗口后点击侧边栏的 CodeTogether 图标即可作为 host 发起会话或加入他人会话。源码补充code-server 对 proposed API 的额外处理从补丁文件 patches/proposed-api.diff 的结构可以看出code-server 对上游 VS Code 做了一处针对性修改将isProposedApiEnabled改为无条件返回true并把“是否对全部扩展启用 proposed API”的判断前置为true || ...。补丁注释说明其动机是某些扩展没有正确声明所需 API注释中提到的 Jupyter 扩展就曾遇到该问题导致即使传入--enable-proposed-api也无法生效。可以推断在当前 code-server 构建中--enable-proposed-api更多起到“显式声明”与配置持久化的作用而实际门控已被放宽。如果你在升级 code-server 后遇到 CodeTogether 的 proposed API 相关报错可结合该补丁与升级文档核对行为差异。小结code-server 的协作方案可以归纳为“一个市场 一个开关”扩展来源默认 Open VSX 市场patches/marketplace.diff 中的默认配置安装走--install-extension派生的 VS Code CLI 流程src/node/main.tsDuckly安装gitduck.code-streaming刷新窗口后按 VS Code 流程发起共享适合跨 IDE 的实时共享与语音协作CodeTogether安装genuitecllc.codetogether并启用--enable-proposed-api命令行或 config.yaml 均可从侧边栏图标发起或加入会话适合结构化的结对与 TDD 协作。两条路线均不改变 code-server 内核部署成本低排查问题时重点检查市场环境变量SERVICE_URL/ITEM_URL/EXTENSIONS_GALLERY与扩展安装日志即可覆盖绝大多数失败场景。【免费下载链接】code-serverVS Code in the browser项目地址: https://gitcode.com/GitHub_Trending/co/code-server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表