> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Advanced 配置

> Devin Desktop 的 Advanced 配置，包括 SSH 支持、开发容器、WSL、扩展 市场 设置、diff 区域，以及允许 Cascade 访问 .gitignore。

所有 Advanced 配置都可以在 Devin Settings 中找到。你可以通过右上角下拉菜单 → Devin Settings，或通过 命令面板 (Ctrl/⌘+Shift+P) → Open Devin User Settings 进入。

<div id="enabling-cascade-access-to-gitignore-files">
  # 启用 Cascade 对 .gitignore 文件的访问权限
</div>

要让 Cascade 访问与你项目 `.gitignore` 中规则匹配的文件，请前往 Devin Settings，然后进入“Cascade Gitignore Access”。该选项默认处于关闭状态。要授予访问权限，请点击开关将其打开。

<div id="agent-diff-zones">
  # Agent diff 区域
</div>

当 Agent 编辑文件时，Devin Desktop 会显示 **diff 区域**——也就是编辑器中以内联高亮方式标出的区域，能准确显示具体改动内容，并为每个变更块提供接受和拒绝控件。所有 Agent 默认都会使用 diff 区域。

你可以在 Devin Settings → User Interface → **Agent Diff Zones** 中关闭非 Cascade Agent 的 diff 区域。禁用后，非 Cascade Agent 的编辑会直接应用到文件，工具栏会显示一个简单的关闭按钮，而不是接受/拒绝控件。

<div id="ssh-support">
  # SSH 支持
</div>

VSCode 中常见的 SSH 支持由 Microsoft 提供并授权，因此我们专门为 Devin Desktop 实现了自己的版本。它确实要求你安装 [OpenSSH](https://www.openssh.com/)，但除此之外几乎没有其他依赖，基本上会像你平时用的一样“开箱即用”。你可以在 命令面板 中通过 `Remote-SSH` 访问 SSH，也可以通过左下角的 `Open a Remote Window` 按钮进入。
这个扩展在我们的内部开发中一直运行良好，但目前也有一些已知注意事项和 bug：

* 我们目前只支持通过 SSH 连接到基于 Linux 的远程主机。

* 常见的 Microsoft `Remote - SSH` 扩展 (以及 [open-remote-ssh](https://github.com/jeanp413/open-remote-ssh) 扩展) 无法使用——请不要安装它们，因为它们会与我们的 SSH 支持冲突。

* 我们目前还不具备 Microsoft SSH 扩展的全部功能。现在主要支持最核心的功能：连接到主机。如果你有功能需求，欢迎告诉我们！

* 通过 SSH 连接后，如需访问远程主机上的 devcontainer，请使用 命令面板 (Ctrl/Cmd+Shift+P) 并选择以下选项之一：

<Frame>
  <img src="https://mintcdn.com/cognitionai/WE51TvKjsiyk1ZHl/desktop/assets/windsurf/ssh-devcontainer-options.png?fit=max&auto=format&n=WE51TvKjsiyk1ZHl&q=85&s=4a7de13e7604b6569cec985d92bfa75d" width="394" height="65" data-path="desktop/assets/windsurf/ssh-devcontainer-options.png" />
</Frame>

* SSH agent 转发默认开启，并会使用 Devin Desktop 与该主机的最新连接。如果你遇到相关问题，请尝试重新加载窗口以刷新连接。

* 在 Windows 上，当系统提示你输入密码时，你会看到一些 `cmd.exe` 窗口。这是正常现象——我们很快就会去掉它们。

* 如果你遇到问题，请先确认你可以在终端中使用常规 `ssh` 连接到远程主机。如果问题仍然存在，请在提交 bug 报告时附上 `Output > Remote SSH (Devin)` 选项卡中的输出！

<div id="dev-containers">
  # 开发容器
</div>

Devin Desktop 在 Mac、Windows 和 Linux 上均支持开发容器，适用于本地和远程 (通过 SSH) 工作流程。

前提条件：

* 本地：你的机器上必须安装 Docker，并且可在 Devin Desktop 终端中访问。
* 通过 SSH 远程：使用 Devin Desktop Remote-SSH 连接到远程主机。远程主机上必须安装 Docker，并且可从远程 shell 访问。你的项目应包含 `devcontainer.json` 或等效配置。

可用命令 (本地和远程窗口中均可用) ：

1. `Dev Containers: Open Folder in Container`
   * 使用指定的 `devcontainer.json` 打开新的工作区。
2. `Dev Containers: Reopen in Container`
   * 在由你的 `devcontainer.json` 定义的新容器中重新打开当前工作区。
3. `Dev Containers: Attach to Running Container`
   * 附加到现有的 Docker 容器，并将当前工作区连接到该容器。如果该容器不符合[开发容器规范](https://containers.dev/implementors/spec/)，Devin Desktop 会尽力检测远程用户和环境。
4. `Dev Containers: Reopen Folder Locally`
   * 连接到开发容器时，断开连接并在本地文件系统中重新打开工作区。
5. `Dev Containers: Show Devin Desktop Dev Containers Log`
   * 打开 开发容器 日志输出，以便排查问题。

这些命令可通过命令面板使用；点击左下角的 `Open a Remote Window` 按钮时也会显示这些命令 (包括你通过 SSH 连接到远程主机时) 。

相关内容：

* `Remote Explorer: Focus on Dev Containers (Devin Desktop) View` — 快速打开 开发容器 视图。

<div id="known-limitations">
  ### 已知限制
</div>

Devin Desktop 目前不执行 [Dev Container Specification 生命周期命令](https://containers.dev/implementors/json_reference/#lifecycle-scripts)：

* `onCreateCommand`
* `updateContentCommand`
* `postCreateCommand`
* `postStartCommand`
* `postAttachCommand`

这同时适用于容器级生命周期命令 (在 `devcontainer.json` 中定义) 和 feature 级生命周期命令 (在 `devcontainer-feature.json` 中定义) 。此外，也不会安装 Dotfiles。

**可正常工作的内容：**

* Feature `install.sh` 脚本 (这些脚本会在镜像构建时运行)
* Feature `mounts` (卷会在容器运行时挂载)
* Feature `entrypoint` 字段 (每次容器启动时都会执行)
* 其他所有在镜像构建时执行的操作 (Dockerfile、docker-compose、features)

<div id="workaround-using-a-feature-entrypoint-for-runtime-setup">
  ### 变通方案：使用 Feature entrypoint 进行运行时设置
</div>

如果你正在编写一个需要在容器启动时运行设置的 Dev Container Feature (例如，根据挂载卷中的内容配置文件) ，请使用该 Feature 的 `entrypoint` 字段，而不是生命周期命令。entrypoint 会在挂载完成后于每次容器启动时执行，并且完全自包含——使用你的 Feature 的用户无需修改他们的 `devcontainer.json`。

在你的 `devcontainer-feature.json` 中，声明 entrypoint：

```json theme={null}
{
    "name": "my-feature",
    "id": "my-feature",
    "version": "1.0.0",
    "mounts": [
        { "type": "volume", "source": "my-volume", "target": "/data/my-dir" }
    ],
    "entrypoint": "/usr/local/share/my-feature/entrypoint.sh"
}
```

在你的 `install.sh` 中 (会在镜像构建时运行) ，编写 entrypoint 脚本：

```bash theme={null}
#!/usr/bin/env bash
set -e
mkdir -p /usr/local/share/my-feature
cat > /usr/local/share/my-feature/entrypoint.sh << 'EOF'
#!/bin/sh
# 依赖挂载的设置（在每次 container 启动时运行，volume 已挂载）
if [ -d /data/my-dir ]; then
    mkdir -p /etc/myapp
    cp /data/my-dir/config /etc/myapp/config
fi
exit 0
EOF
chmod +x /usr/local/share/my-feature/entrypoint.sh
```

<Note>
  entrypoint 脚本应完成必要的设置后正常退出。不要在末尾加上 `exec "$@"`——CLI 自带的 entrypoint 脚本包装器会负责将控制权交给 container 命令。脚本应尽量保持精简，因为它会在 IDE 连接前同步执行。
</Note>

<div id="wsl-beta">
  # WSL (测试版)
</div>

自 1.1.0 版本起，Devin Desktop 开始以测试版形式支持 Windows Subsystem for Linux。你必须先在 Windows 设备上完成 WSL 的设置和配置。

你可以点击左下角的 `Open a Remote Window` 按钮，或在命令面板中的 `Remote-WSL` 下访问 WSL。

<div id="extension-marketplace">
  # 扩展市场
</div>

你可以更改下载扩展时使用的市场。为此，请前往 `Devin Settings`，在 `General` 部分下修改 Marketplace URL 设置。

<Frame>
  <img src="https://mintcdn.com/cognitionai/WE51TvKjsiyk1ZHl/desktop/assets/windsurf/marketplace.png?fit=max&auto=format&n=WE51TvKjsiyk1ZHl&q=85&s=9815a3e8bfc880187c2fc01126c8264b" width="3420" height="2130" data-path="desktop/assets/windsurf/marketplace.png" />
</Frame>

<div id="devin-desktop-plugins">
  ## Devin Desktop 插件
</div>

<AccordionGroup>
  <Accordion title="Devin Pyright">
    在扩展搜索栏中搜索 “Devin Pyright”，或粘贴 `@id:codeium.windsurfPyright`。
  </Accordion>
</AccordionGroup>
