远程开发
wescode 继承了 VS Code 的远程开发能力,支持通过 SSH、Docker 容器和 WSL 进行远程开发。AI 功能在远程环境中同样可用,CKG 索引运行在远程端以获得最佳性能。
SSH 远程连接
前置条件
- 远程服务器已安装 SSH 服务
- 本地已配置 SSH 密钥或密码认证
- 远程服务器有足够的磁盘空间(wescode Server 约需 500MB)
连接远程服务器
- 打开命令面板(
Ctrl+Shift+P/Cmd+Shift+P) - 输入
Remote-SSH: Connect to Host - 输入远程服务器地址:
user@hostname - 选择远程工作区目录
或在 SSH 配置文件中预先定义主机:
# ~/.ssh/config
Host dev-server
HostName 192.168.1.100
User developer
IdentityFile ~/.ssh/id_ed25519
ForwardAgent yes
AI 功能在远程环境
连接到远程服务器后,wescode 的 AI 功能自动在远程端运行:
- CKG 索引:在远程服务器上建立和维护,避免网络传输大量文件
- 文件读取:AI 直接在远程端读取文件内容
- 终端命令:在远程服务器上执行
- 编辑操作:修改直接应用到远程文件
配置远程环境
首次连接时,wescode 会自动安装远程 Server 组件。如果需要自定义:
# 远程服务器上的 config.yaml
terminal:
cwd: /home/developer/projects
端口转发
开发 Web 应用时,wescode 自动检测并转发常用端口:
- 自动发现
localhost:3000、:8080等监听端口 - 在本地浏览器中访问远程服务
- 在聊天中询问相关配置
帮我把远程服务器的 8080 端口转发到本地
Docker 容器开发
Dev Containers
wescode 支持 Dev Containers,让开发环境随项目走:
- 项目根目录创建
.devcontainer/devcontainer.json - 定义开发环境配置
- wescode 自动构建并连接到容器
示例 devcontainer.json:
{
"name": "Go Development",
"image": "mcr.microsoft.com/devcontainers/go:1.22",
"features": {
"ghcr.io/devcontainers/features/node:1": {}
},
"forwardPorts": [8080],
"postCreateCommand": "go mod download"
}
连接已有容器
# 1. 列出运行中的容器
docker ps
# 2. 使用命令面板:Attach to Running Container
AI 功能与容器
在容器内开发时:
- CKG 索引在容器内运行
- 终端命令在容器内执行
- 文件操作在容器的文件系统中进行
- AI 能够感知容器内安装的工具和运行时
检查容器内安装了哪些开发工具
Docker Compose 项目
对于多容器项目:
帮我理解这个 docker-compose.yml 的服务关系
wescode 能够:
- 解析服务之间的依赖关系
- 理解端口映射和网络配置
- 建议最优的开发容器选择
WSL 开发
连接 WSL
在 Windows 上,wescode 原生支持 WSL(Windows Subsystem for Linux)开发:
- 确保 WSL 2 已安装并配置
- 打开命令面板:
WSL: New WSL Window - 选择 WSL 发行版(Ubuntu、Debian 等)
WSL 环境优势
在 WSL 中开发的优势:
- 原生 Linux 工具链:使用真正的 Linux 环境
- 文件系统性能:在 WSL 文件系统中获得更好的 I/O 性能
- CKG 兼容:CKG 索引在 WSL 端运行,无跨文件系统性能损耗
- 终端体验:完整的 Linux 终端环境
最佳实践
# 推荐:将项目放在 WSL 文件系统中
/home/user/projects/my-app
# 不推荐:从 WSL 访问 Windows 文件系统
/mnt/c/Users/user/projects/my-app
在 WSL 文件系统中的项目,CKG 索引速度更快,文件监听更可靠。
远程文件同步
自动同步
wescode 使用标准的远程文件系统协议,修改自动同步到远程端:
- 保存即同步:文件保存后立即同步到远程
- 冲突检测:如果远程文件被其他人修改,提示冲突
- 断线重连:网络中断后自动恢复连接
大文件处理
对于大型项目,wescode 优化了文件传输:
- 增量传输:只传输修改的部分
- 延迟加载:只在需要时才加载远程文件内容
- 缓存策略:常用文件在本地缓存
排除文件
通过 .gitignore 或 wescode 配置排除不需要同步的文件:
# config.yaml
agent:
ignore_patterns:
- "node_modules/**"
- ".git/**"
- "vendor/**"
- "build/**"
延迟优化
网络延迟影响
远程开发的主要挑战是网络延迟。wescode 采用以下策略优化体验:
| 功能 | 优化策略 |
|---|---|
| 代码补全 | 远程端执行,减少往返 |
| CKG 索引 | 远程端建立,无需传输源码 |
| 文件搜索 | 远程端执行搜索 |
| AI 对话 | 远程端读取文件,本地渲染 |
| 终端操作 | 远程端执行,流式输出 |
提升远程开发体验
1. 选择低延迟的服务器
优先选择地理位置近的服务器。延迟建议:
- < 50ms:优秀
- 50-100ms:良好
- 100-200ms:可接受
-
200ms:可能影响体验
2. 使用代理加速
如果直连延迟高,可以配置 SSH 代理:
# ~/.ssh/config
Host dev-server
ProxyJump jump-server
3. 减少不必要的文件监听
# config.yaml - 减少文件系统事件
agent:
ignore_patterns:
- "**/node_modules/**"
- "**/.git/objects/**"
- "**/dist/**"
4. 使用 SSH 多路复用
# ~/.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
离线模式
如果网络完全断开:
- 已打开的文件仍可编辑(本地缓存)
- 终端会话会断开
- 重连后自动同步修改
常见场景
云开发机
# 连接到云开发机
ssh dev@cloud-dev.example.com
# wescode 自动安装 Server 组件并连接
树莓派/嵌入式开发
# 连接到树莓派
ssh pi@raspberrypi.local
# AI 辅助理解嵌入式代码
帮我分析这个 GPIO 控制代码
高性能计算
# 连接到 GPU 服务器
ssh user@gpu-server.lab.example.com
# 在远程服务器上运行训练脚本
在终端里运行训练脚本并监控 GPU 使用
注意事项
- 资源占用:wescode Server 在远程端需要约 500MB 磁盘空间和适量内存
- 权限:确保远程用户有权读写项目文件
- 防火墙:某些远程操作可能需要额外的端口访问
- 多窗口:可以同时连接多个远程服务器,每个窗口独立
- 工作区隔离:每个远程连接 + workspace 组合对应一个独立的 Cell
- 扩展兼容:大部分 VS Code 扩展在远程环境中正常工作