☰
OpenChamber VS Code 扩展完整指南:把 OpenCode AI Agent 带进编辑器
2026/11/4 6:08:31 网站建设 项目流程

OpenChamber VS Code 扩展完整指南:把 OpenCode AI Agent 带进编辑器

【免费下载链接】openchamberAgentic Development Environment based on OpenCode AI agent项目地址: https://gitcode.com/gh_mirrors/op/openchamber

OpenChamber VS Code 扩展把 OpenCode AI Agent 直接嵌入 VS Code:聊天面板与代码同屏,选区右键即可解释、改进、补上下文,支持多模型并行对比与行内评论,不切窗口、不丢上下文。

AI 回答在浏览器标签页、代码在编辑器里,中间隔着无数次切屏:改一处逻辑要手动贴大段代码,贴漏路径回答就跑偏,对比两个模型的输出更是来回翻页面。OpenChamber 的做法是把 OpenCode 服务搬进编辑器——扩展本地拉起(或连接已有的)OpenCode API 服务,聊天以 webview 面板(扩展在编辑器内嵌的独立网页视图)长在 VS Code 里,选区、文件、行号都能一键变成提示词的一部分。

🎯 选中代码后右键:解释、改进与补充上下文

三个右键动作本质都是"读选区 → 拼提示词 → 投递到聊天面板",提示词构造逻辑集中在 packages/vscode/src/extension.ts。

  • Explain:有选区时,提示词为Explain the following Code / Text:加相对路径:行号范围与带languageId的代码块;无选区时退化为只带路径,解释整个文件。
  • Improve Code:要求必须有选区,构造Improve the following Code:的同格式提示词,让 Agent 就地改进。
  • Add to Context:不发提示词,而是构造{filePath, filename, text}上下文项——filename是 1-based 的相对路径:行号——挂到下一条消息上。

行号统一 +1 转为 1-based 显示,多行选区写成start-end。投递目标如何选,在下一节的"优先投递策略"里讲。

🏁 多模型同题竞速:一条提示词并行跑多个模型

并排对比的底层机制是"每条模型实例一条独立的 SSE 事件流代理"(SSE,Server-Sent Events,服务端单向推流)。

OpenChamber: Run on Several Models(命令 id 沿用openchamber.openAgentManager)打开一个 "Run on several models" 草稿标签页,composer 直接进入并行模式;同一提示词在多个模型上并行执行,结果并排呈现,保留最好的或融合。原理在 packages/vscode/src/SessionEditorPanelProvider.ts:面板里每个模型实例各自发api:sse:start,扩展为每个streamId经openSseProxy打开一条到 OpenCode 的 SSE 代理,事件流分块经api:sse:chunk转回 webview;每条流挂独立AbortController,面板销毁时全部 abort 并清空sseStreams,不留连接。

📌 会话常驻编辑器:侧边栏与标签页两种形态

会话有两种载体:Activity Bar 里的openchamber.chatView侧边栏,和可常驻、与文件并排的编辑器标签页(WebviewPanel)。

  • OpenChamber: Open Sidebar先打开活动栏容器workbench.view.extension.openchamber再聚焦聊天视图;webview 未就绪时提示 "Chat sidebar is not ready"。
  • OpenChamber: Focus Chat直接聚焦聊天输入框;OpenChamber: New Session要求已打开文件夹,多根工作区会弹 quick pick 选一个。
  • OpenChamber: Open Session in Editor把当前或新会话开成独立标签页;createOrShow按sessionId复用已有面板,不会重复开。

优先投递策略贯穿所有右键动作:addContextSelectionToActivePanel/createSessionWithPromptInActivePanel只接管"用户正在工作的那个面板",返回 false 才回退到侧边栏并自动 reveal——保证上下文和评论落在你眼前的地方,而不是另开标签页抢注意力。

💬 行内评论与文件附件:把上下文钉在代码行上

评论锚定在代码行上、随下一条消息发出,附件只收本地文件资源。

Add Comment在选中行上打开评论线程并锚定在编辑器里,直到消息发送——设计原则是"评论写在代码所在之处"(见 packages/vscode/src/InlineCommentThreads.ts)。webview 的草稿列表是权威来源,线程跟随 webview 经内部命令openchamber.internal.inlineCommentsSync报告的草稿快照同步;每个 webview 各存一份草稿,删除时对全部面板广播、幂等处理。评论只能加在工作区文件上,跨工作区文件会被canCommentOn拦截并提示 "File is outside the workspace";扩展激活后编辑器行槽+按钮与右键动作同权。

资源管理器里对文件右键Attach to OpenChamber Chat(openchamber.attachExplorerToChat)把文件作为附件带进聊天:仅接受file协议资源,目录会被跳过并单独提示。

装好并跑起来:OpenChamber 安装前置条件检查

安装只需满足两个条件:

要求说明
OpenCode CLI已安装且在 PATH 中,可用OPENCODE_BINARY环境变量指定路径
VS Code1.85 及以上(packages/vscode/package.json 声明^1.85.0)

扩展激活时连接是异步启动的(void openCodeManager.start()),不阻塞面板渲染。CLI 缺失导致 spawn 失败(ENOENT)时,连接管理器进入error状态,VS Code 弹出 "OpenCode CLI not found. Please install it and ensure it's in PATH.",附 More Info 按钮。装好后的界面大致如下,聊天面板里能看到 Agent 的文件搜索、补丁、Shell 执行等工具操作项:

配置与连接原理:两种模式与 opencode CLI 解析优先级

openchamber.apiUrl是否为空决定运行模式,openchamber.opencodeBinary只影响 CLI 定位。

  • managed(默认):apiUrl留空,扩展本地派生opencode serve --hostname 127.0.0.1 --port <port>,端口经net.createServer().listen(0, '127.0.0.1')动态分配避免冲突。
  • external:apiUrl指向已运行的 OpenCode API 服务器,扩展不再派生进程,直接从 URL 解析端口做 HTTP 连接。

关键机制(均在 packages/vscode/src/opencode.ts):启动前执行--version校验,只接受 OpenCode 2.x——1.x 的 API 面完全不同,会被assertSupportedOpenCodeBinary显式拒绝;托管服务用 Basic Auth 保护,密码默认randomBytes(32)随机生成,也可经OPENCODE_PASSWORD(或旧名OPENCODE_SERVER_PASSWORD)指定;就绪检查轮询/api/info(2.0.8 起移除/api/health),返回 200 且版本受支持才算就绪。

CLI 路径解析顺序(resolveOpencodeCliPath):

  1. VS Code 设置openchamber.opencodeBinary(配目录则自动拼平台二进制名;指向桌面 App 会报错要求独立 CLI;修改后需重载窗口生效)
  2. OpenChamber 共享配置~/.config/openchamber/settings.json的opencodeBinary
  3. 环境变量OPENCODE_BINARY、OPENCODE_PATH、OPENCHAMBER_OPENCODE_PATH、OPENCHAMBER_OPENCODE_BIN
  4. PATH 查找
  5. 常见安装位置回退(Unix:~/.opencode/bin、~/.bun/bin、/usr/local/bin、/opt/homebrew/bin;Windows:%USERPROFILE%\.opencode\bin、npm 全局目录、Scoop/Chocolatey)

出了问题先看这里:Show OpenCode Status 诊断报告

连接或会话异常时,OpenChamber: Show OpenCode Status输出的端到端诊断报告是第一手依据,先读它再猜原因。

报告包含:扩展/OpenCode/VS Code 三方版本号、工作区文件夹、连接状态、工作目录及其是否匹配工作区、配置值与实际解析值的 API URL、连接模式(含启动/重启次数)、CLI 路径、检测端口、就绪耗时、最近一次错误与退出码。随后依次探测九个 OpenCode 2.x 端点:/api/info(健康)、/api/config、/api/provider、/api/agent(12s 超时)、/api/command、/api/project、/api/location、/api/session(12s)、/api/session/active,每项给出状态码、耗时与响应摘要。

症状对照:连接失败看/api/info与Last error;会话列表为空看/api/session(侧边栏列表就靠它);目录不对看 "Working dir matches workspace"。确认服务状态异常时用OpenChamber: Restart API Connection——它优先走 webview 驱动的完整重载(覆盖层 + 托管重启 + 配置/数据刷新),没有打开的 webview 才退化为单纯重启管理器。

参与开发:本地调试与 VSIX 打包安装

本地开发两条命令即可,watcher + HMR 免刷新,退出自动清理进程树。

bun install bun run vscode:dev

该脚本(scripts/dev-vscode.mjs)同时启动 esbuild 监听扩展端与 Vite 监听 webview 端(固定localhost:5173,UI 改动走 HMR),等待端口就绪后以--new-window --disable-extensions --extensionDevelopmentPath packages/vscode拉起扩展开发宿主,退出时按 SIGINT → SIGTERM → SIGKILL 清理整个进程树。换宿主或工作区:

OPENCHAMBER_VSCODE_BIN=cursor bun run vscode:dev

也可用OPENCHAMBER_VSCODE_DEV_WORKSPACE,或直接把工作区路径作为位置参数。手动打包并安装 VSIX:

bun run --cwd packages/vscode build cd packages/vscode && bunx vsce package --no-dependencies code --install-extension packages/vscode/openchamber-*.vsix

build依次执行 esbuild 打包扩展端(src/extension.ts→dist/extension.js)与 Vite 构建 webview 端(VITE_OPENCODE_URL=/api);界面文案统一走 VS Code l10n 机制(package.nls.json及法文、土耳其文 bundle)。

从浏览器切屏到选区右键,从手动贴上下文到评论随消息自动送达,OpenChamber 把 Agent 织进了编辑器日常动线;读懂 CLI 解析优先级与 SSE 流代理这两段源码,就能从"会用"走到"懂原理"。扩展以 MIT 许可证开源(packages/vscode/README.md)。

【免费下载链接】openchamberAgentic Development Environment based on OpenCode AI agent项目地址: https://gitcode.com/gh_mirrors/op/openchamber

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询