限制與約束
了解 Verdent 的限制與約束
你將學到什麼
Verdent for VS Code 的已知限制,包括檔案格式限制、工具約束,以及平台特定的考量。
已知限制
不支援二進位檔案
Verdent 的檔案工具僅適用於文字格式。以下類型無法編輯:
| 格式類型 | 範例 |
|---|---|
| 圖片 | PNG、JPG、GIF、SVG(二進位形式) |
| 影片 | MP4、AVI、MOV |
| 編譯後程式碼 | EXE、DLL、SO |
| 壓縮檔 | ZIP、TAR、GZ |
| Office 文件 | DOCX、XLSX、PPTX |
| PDF 檔案 |
替代方案: 二進位檔案可以在程式碼中被引用或進行概念上的討論,但修改需要外部工具。
file_read 行數限制
限制:
- 大型檔案(>10,000 行)應分段讀取
- 完整讀取大型檔案可能導致上下文耗盡
解決方案: 使用行範圍:file_read("file.js", start_line=100, max_lines=50)
bash 指令逾時
限制:
- 最大逾時時間:120 秒(2 分鐘)
- 長時間執行的操作會被自動終止
解決方案: 將操作拆分為可在 2 分鐘內完成的較小指令
搜尋效能
限制:
- 過於寬泛的 glob 模式(
**/*)可能回傳數千筆結果 - 正規表示式搜尋比字面字串慢
解決方案: 使用特定模式並排除不必要的目錄
上下文耗盡
問題: 在長時間的工作階段或複雜操作期間,AI 的上下文視窗可能會被填滿,限制了引用較早對話內容的能力。
緩解策略:
- 使用子代理進行探索性研究(結果只會消耗主上下文)
- 使用行範圍策略性地讀取檔案
- 在讀取完整內容前先使用
grep_file - 將背景任務委派給 Explorer 子代理
對於超過 500 行的檔案,請務必使用行範圍以保留上下文空間。
Verdent 無法做到的事
無法直接進行系統管理
無法:
- 以程式方式修改 VS Code 設定
- 自動安裝 VS Code 擴充功能
- 變更系統層級的設定
- 重新啟動 VS Code 或系統服務
範圍: Verdent 在 VS Code 工作區內運作,而非系統管理層級。
無法自主執行
手動接受模式控制:
- 使用者必須在手動接受模式中核准工具執行
- 未經核准不會有自動化的背景操作
- 無法在 VS Code 關閉時執行指令
目的: 確保安全性以及使用者對所有操作的掌控。
Verdent 無法在未經使用者核准的情況下於背景執行指令。所有操作在手動接受模式中都需要明確同意。
沒有 MCP 時無法進行網路操作
內建限制:
- 無法發出任意 HTTP 請求(使用
web_fetch處理特定頁面) - 無法直接連接資料庫(需要 MCP)
- 無法直接存取雲端服務(需要 MCP)
- 沒有即時 API 整合(需要 MCP)
解決方案: 設定 MCP 伺服器以存取外部系統。
平台特定限制
作業系統差異
bash 工具行為:
| 平台 | Shell | 備註 |
|---|---|---|
| macOS/Linux | bash/zsh | 完整的 bash 功能 |
| Windows | PowerShell | 部分 bash 指令無法使用,請改用 PowerShell 對應指令 |
| WSL | bash | Linux 指令可在 WSL 環境中運作 |
路徑處理:
- Windows 使用反斜線(
\),Unix 使用正斜線(/) - 跨平台專案可能需要調整檔案路徑
VS Code 版本需求
最低需求:
- VS Code 版本相容性(請至擴充功能市集查看目前的最低版本)
- 足夠的磁碟空間用於上下文快取
特定版本需求維護於 VS Code 市集的列表中。請查看擴充功能詳細資訊以了解目前的相容性。
工作區約束
單一工作區聚焦:
- Verdent 一次只在一個 VS Code 工作區內運作
- 無法同時修改多個已開啟的 VS Code 視窗中的檔案
- 支援多根工作區,但上下文僅限於目前作用中的工作區
常見限制的替代方案
二進位檔案修改
限制: 無法編輯圖片、PDF 或編譯後的二進位檔
替代方案:
- 在 bash 指令中引用外部工具:
bash("convert input.png -resize 50% output.png") - 產生可供外部工具執行的指令碼
- 為二進位檔案操作記錄手動步驟
範例:
# Image conversion
bash("convert input.png -resize 50% output.png")
# PDF to text
bash("pdftotext document.pdf output.txt")大型檔案處理
限制: 超過 10,000 行的檔案會對上下文視窗造成負擔
替代方案:
- 使用行範圍:
file_read("large.log", start_line=1000, max_lines=100) - 先搜尋:
grep_content("ERROR", glob="large.log")以找出相關段落 - 將檔案拆分為較小的模組以便管理
請務必先使用 grep_content 找出相關段落,再只讀取那些特定的行範圍。
上下文視窗耗盡
限制: 長時間對話會填滿上下文視窗
替代方案:
- 委派給 Explorer 子代理進行程式碼庫研究
- 使用 Verifier 子代理進行隔離的驗證任務
- 為不同任務開啟新對話
- 使用
todo_update跨工作階段追蹤進度
最佳實務: 將背景研究委派給子代理,以保留主上下文供進行中的開發使用。
平台指令差異
限制: bash 指令在 Windows 與 Unix 之間有所不同
替代方案:
- 使用跨平台工具:以 npm 指令碼取代原生 bash
- 條件式指令:
bash("if [[ \"$OSTYPE\" == \"linux-gnu\"* ]]; then ...; fi") - 在專案專屬的 AGENTS.md 中加入平台備註
範例:
# Cross-platform
bash("npm run build")
# Platform-specific conditional
bash("if [[ \"$OSTYPE\" == \"linux-gnu\"* ]]; then make; else nmake; fi")未來改進
我們持續在改善這些限制。請查看 Verdent 發行說明,以了解功能擴展、限制提升與新整合的更新資訊。