opencode chat (VS Code 扩展)
连接 headless opencode serve 的 VS Code 侧边栏聊天面板。AI 工具渲染为卡片,
文件改动通过 VS Code 原生 diff 预览。
环境要求
- 一个正在运行的 opencode server(
opencode serve,默认端口 http://127.0.0.1:4096)
- 环境变量
OPENCODE_SERVER_PASSWORD(serve 启用 Basic Auth 时),或填入扩展配置
使用
npm install && npm run compile
- VS Code 按 F5(扩展开发宿主),左侧 activity bar 出现 opencode 图标,点开聊天面板
- 首次连接:扩展自动检测 health + server 工作目录与当前工作区是否一致(不一致会告警)
推荐:在项目目录启动 serve,保证 AI 的文件操作落在工作区内:
Start-Process "C:\Users\Administrator\AppData\Roaming\npm\node_modules\opencode-ai\bin\opencode.exe" serve --port 4096 -WorkingDirectory "D:\path\to\project"
功能
- 会话列表(下拉切换 / 新建)
- 模型选择(下拉,默认 = server 默认模型)
- 发送(prompt_async)+ 中止
- 流式渲染:text / reasoning(折叠)/ tool 卡片(输入输出可展开)/ step
- AI 改动提示:监听 tool 事件(edit/write),文件变化后显示"查看改动"按钮,
点击用
vscode.diff 打开"修改前 vs 当前"(修改前内容取运行时的文件快照,
不依赖 /session/:id/diff 端点)
配置
| 项 |
默认 |
说明 |
opencodeChat.serverUrl |
http://127.0.0.1:4096 |
server 地址 |
opencodeChat.username |
opencode |
Basic Auth 用户名 |
opencodeChat.password |
空 |
留空则读 OPENCODE_SERVER_PASSWORD |
opencodeChat.defaultModel |
空 |
如 opencode/big-pickle(providerID/modelID) |
架构
src/extension.ts 激活、注册 ChatViewProvider、健康检查(health + 工作目录比对)
src/panel.ts WebviewViewProvider:postMessage 协议、SSE 事件分发、文件快照 diff
src/client.ts HTTP/SSE 客户端(Basic Auth、会话、prompt_async、事件流自动重连)
media/chat.js webview 端渲染(消息/工具卡片/流式/diff 按钮)
media/chat.css VS Code 原生 CSS 变量风格
| |