---
title: "局限与约束"
description: "了解 Verdent 的局限与约束"
---

### 你将学到

Verdent for VS Code 的已知局限，包括文件格式限制、工具约束以及平台相关的注意事项。

---

## 已知局限

<Tabs>
  <Tab title="文件格式">
    ### 不支持二进制文件

    Verdent 的文件工具仅支持基于文本的格式。以下文件无法编辑：

    | 格式类型          | 示例                           |
    | ----------------- | ------------------------------ |
    | **图片**          | PNG、JPG、GIF、SVG（作为二进制） |
    | **视频**          | MP4、AVI、MOV                  |
    | **编译后代码**    | EXE、DLL、SO                   |
    | **压缩包**        | ZIP、TAR、GZ                   |
    | **Office 文档**   | DOCX、XLSX、PPTX               |
    | **PDF**           | PDF 文件                       |

    **变通方法：** 二进制文件可以在代码中被引用或进行概念性讨论，但修改需要借助外部工具。
  </Tab>
  <Tab title="工具约束">
    ### file_read 行数限制

    **局限：**

    - 大文件（\>10,000 行）应分段读取
    - 完整读取大文件可能导致上下文耗尽

    **解决方案：** 使用行范围：`file_read("file.js", start_line=100, max_lines=50)`

    ---

    ### bash 命令超时

    **局限：**

    - 最大超时时间：120 秒（2 分钟）
    - 长时间运行的操作会被自动终止

    **解决方案：** 将操作拆分为可在 2 分钟内完成的较小命令

    ---

    ### 搜索性能

    **局限：**

    - 宽泛的 glob 模式（`**/*`）可能返回数千条结果
    - 正则搜索比字面字符串更慢

    **解决方案：** 使用具体的模式并排除不必要的目录
  </Tab>
  <Tab title="上下文窗口">
    ### 上下文耗尽

    **问题：** 在长会话或复杂操作中，AI 的上下文窗口可能被填满，限制了引用更早对话内容的能力。

    **缓解策略：**

    - 使用子智能体进行探索性研究（结果只消耗主上下文）
    - 通过行范围有策略地读取文件
    - 在读取完整内容前先使用 `grep_file`
    - 将后台任务委派给 Explorer 子智能体

    <Tip>
      对于超过 500 行的文件，请始终使用行范围以节省上下文空间。
    </Tip>
  </Tab>
</Tabs>

---

## Verdent 无法做到的事

<Tabs>
  <Tab title="系统管理">
    ### 无法直接进行系统管理

    **无法：**

    - 以编程方式修改 VS Code 设置
    - 自动安装 VS Code 扩展
    - 更改系统级配置
    - 重启 VS Code 或系统服务

    **范围：** Verdent 在 VS Code 工作区内运行，而非系统管理层级。
  </Tab>
  <Tab title="自主执行">
    ### 无法自主执行

    **手动接受模式的控制：**

    - 用户必须在手动接受模式下批准工具执行
    - 未经批准不会有自动化的后台操作
    - 无法在 VS Code 关闭时运行命令

    **目的：** 保证安全性以及用户对所有操作的控制。

    <Warning>
      Verdent 无法在未经用户批准的情况下后台执行命令。在手动接受模式下，所有操作都需要明确的同意。
    </Warning>
  </Tab>
  <Tab title="实时监控">
    ### 无法实时监控

    **无法：**

    - 持续监控运行中的进程
    - 实时跟踪文件系统变化
    - 对系统事件发出告警
    - 持续流式读取日志文件

    **替代方案：** 使用 MCP 集成对接外部监控工具。
  </Tab>
  <Tab title="网络操作">
    ### 没有 MCP 无法进行网络操作

    **内置局限：**

    - 无法发起任意 HTTP 请求（针对特定页面请使用 `web_fetch`）
    - 无法直接连接数据库（需要 MCP）
    - 无法直接访问云服务（需要 MCP）
    - 没有实时 API 集成（需要 MCP）

    **解决方案：** 配置 MCP 服务器以访问外部系统。
  </Tab>
</Tabs>

---

## 平台特定的限制

### 操作系统差异

**bash 工具行为：**

| 平台            | Shell      | 说明                                                      |
| --------------- | ---------- | --------------------------------------------------------- |
| **macOS/Linux** | bash/zsh   | 完整的 bash 功能                                          |
| **Windows**     | PowerShell | 部分 bash 命令不可用，请使用 PowerShell 等效命令          |
| **WSL**         | bash       | Linux 命令在 WSL 环境中可用                               |

**路径处理：**

- Windows 使用反斜杠（`\`），Unix 使用正斜杠（`/`）
- 跨平台项目的文件路径可能需要调整

---

### VS Code 版本要求

**最低要求：**

- VS Code 版本兼容性（请在扩展市场查看当前最低版本）
- 足够的磁盘空间用于上下文缓存

<Info>
  具体的版本要求维护在 VS Code 市场列表中。请查看扩展详情以了解当前的兼容性。
</Info>

---

### 工作区约束

**单工作区聚焦：**

- Verdent 一次只在一个 VS Code 工作区内运行
- 无法同时修改多个打开的 VS Code 窗口中的文件
- 支持多根工作区，但上下文仅限于当前活动工作区

---

## 常见局限的变通方法

<Tabs>
  <Tab title="二进制文件">
    ### 二进制文件修改

    **局限：** 无法编辑图片、PDF 或编译后的二进制文件

    **变通方法：**

    - 在 bash 命令中引用外部工具：`bash("convert input.png -resize 50% output.png")`
    - 生成可供外部工具执行的脚本
    - 记录二进制文件操作的手动步骤

    **示例：**

    ```bash
    # Image conversion
    bash("convert input.png -resize 50% output.png")

    # PDF to text
    bash("pdftotext document.pdf output.txt")
    ```
  </Tab>
  <Tab title="大文件">
    ### 大文件处理

    **局限：** 超过 10,000 行的文件会给上下文窗口带来压力

    **变通方法：**

    - 使用行范围：`file_read("large.log", start_line=1000, max_lines=100)`
    - 先搜索：`grep_content("ERROR", glob="large.log")` 以查找相关部分
    - 将文件拆分为更小的模块以便管理

    <Tip>
      始终先使用 `grep_content` 来识别相关部分，然后只读取那些特定的行范围。
    </Tip>
  </Tab>
  <Tab title="上下文窗口">
    ### 上下文窗口耗尽

    **局限：** 长对话会填满上下文窗口

    **变通方法：**

    - 委派给 Explorer 子智能体进行代码库研究
    - 使用 Verifier 子智能体执行隔离的验证任务
    - 为不同的任务开启新对话
    - 使用 `todo_update` 在多个会话间跟踪进度

    **最佳实践：** 将后台研究委派给子智能体，以保留主上下文用于活跃的开发工作。
  </Tab>
  <Tab title="平台差异">
    ### 平台命令差异

    **局限：** bash 命令在 Windows 和 Unix 之间存在差异

    **变通方法：**

    - 使用跨平台工具：用 npm 脚本代替原始 bash
    - 条件命令：`bash("if [[ \"$OSTYPE\" == \"linux-gnu\"* ]]; then ...; fi")`
    - 在项目专属的 AGENTS.md 中加入平台说明

    **示例：**

    ```bash
    # Cross-platform
    bash("npm run build")

    # Platform-specific conditional
    bash("if [[ \"$OSTYPE\" == \"linux-gnu\"* ]]; then make; else nmake; fi")
    ```
  </Tab>
</Tabs>

---

## 未来改进

<Note>
  这些局限正在持续改进中。请查看 Verdent 发行说明，了解能力扩展、限制提升以及新增集成的更新。
</Note>

---

## 另请参阅

<CardGroup cols={2}>
  <Card title="工具参考" icon="wrench" href="/docs/verdent-for-vscode/advanced-features/tool-reference">
    完整的工具能力
  </Card>
  <Card title="最佳实践" icon="lightbulb" href="/docs/verdent-for-vscode/best-practices/prompts">
    优化 Verdent 的使用
  </Card>
</CardGroup>
