远程开发

wescode 继承了 VS Code 的远程开发能力,支持通过 SSH、Docker 容器和 WSL 进行远程开发。AI 功能在远程环境中同样可用,CKG 索引运行在远程端以获得最佳性能。


SSH 远程连接

前置条件

连接远程服务器

  1. 打开命令面板(Ctrl+Shift+P / Cmd+Shift+P)
  2. 输入 Remote-SSH: Connect to Host
  3. 输入远程服务器地址:user@hostname
  4. 选择远程工作区目录

或在 SSH 配置文件中预先定义主机:

# ~/.ssh/config
Host dev-server
    HostName 192.168.1.100
    User developer
    IdentityFile ~/.ssh/id_ed25519
    ForwardAgent yes

AI 功能在远程环境

连接到远程服务器后,wescode 的 AI 功能自动在远程端运行:

配置远程环境

首次连接时,wescode 会自动安装远程 Server 组件。如果需要自定义:

# 远程服务器上的 config.yaml
terminal:
  cwd: /home/developer/projects

端口转发

开发 Web 应用时,wescode 自动检测并转发常用端口:

帮我把远程服务器的 8080 端口转发到本地

Docker 容器开发

Dev Containers

wescode 支持 Dev Containers,让开发环境随项目走:

  1. 项目根目录创建 .devcontainer/devcontainer.json
  2. 定义开发环境配置
  3. 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 功能与容器

在容器内开发时:

检查容器内安装了哪些开发工具

Docker Compose 项目

对于多容器项目:

帮我理解这个 docker-compose.yml 的服务关系

wescode 能够:


WSL 开发

连接 WSL

在 Windows 上,wescode 原生支持 WSL(Windows Subsystem for Linux)开发:

  1. 确保 WSL 2 已安装并配置
  2. 打开命令面板:WSL: New WSL Window
  3. 选择 WSL 发行版(Ubuntu、Debian 等)

WSL 环境优势

在 WSL 中开发的优势:

最佳实践

# 推荐:将项目放在 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. 选择低延迟的服务器

优先选择地理位置近的服务器。延迟建议:

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 使用

注意事项


相关文档