DeepSeek Harness (DSH) 採用插件化架構。當編碼智能體需要在代碼庫中定位結構化信息時,傳統的正則表達式搜索往往存在令牌消耗大、語義準確度低的問題。dsh-tool-ast-grep 旨在解決這一痛點,它基於 ast-grep 引擎,爲 DSH 提供了基於抽象語法樹(AST)的結構化代碼搜索與語法大綱提取能力。
插件定位¶
該工具是一個爲 DeepSeek Harness 供電的 AST 結構化代碼搜索和語法大綱插件,由開發者 Jaylor-Wang 維護。它屬於“模型推理”類別,通過提供比正則更高效的搜索方式,幫助智能體理解代碼結構。
核心功能¶
插件主要提供以下三項核心能力:
- ast_search
使用 AST 模式和元變量(如$NAME、$$$)搜索代碼結構。它支持跨多行匹配,不依賴具體的格式或空白字符,並能通過節點類型進行查詢。 - ast_outline
從源文件中提取超緊湊的結構大綱(函數、類、類型、接口、導出等)。相比讀取完整文件,這能節省 80%-95% 的令牌,並支持深度控制(例如只看頂層方法或包含嵌套類)。 - Zero Shell Quoting Issues
通過子進程安全調用,免疫 Windows Shell 轉義和引號問題,確保在不同操作系統上的調用穩定性。
安裝與啓用¶
在使用插件前,需確保機器上已安裝 ast-grep CLI 工具。支持以下安裝方式:
# npm
npm install -g @ast-grep/cli
# pip
pip install ast-grep-cli
# cargo
cargo install ast-grep --locked
# brew (macOS/Linux)
brew install ast-grep
安裝 ast-grep 後,通過以下命令安裝 DSH 插件:
dsh plugin --profile web add dsh-tool-ast-grep
如果 ast-grep 安裝在非標準路徑,可以通過設置環境變量 AST_GREP_PATH 指定其完整路徑。
典型用法¶
ast_search 參數¶
| 參數 | 說明 |
|---|---|
pattern |
AST 模式,例如 function $NAME($$$) { $$$ } 或 $OBJ.push($ITEM) |
kind |
AST 節點類型,例如 class_declaration |
path |
搜索路徑,默認爲工作區根目錄 |
lang |
語言覆蓋(如 ts, python, rust) |
globs |
文件通配符(如 src/**/*.ts) |
limit |
最大返回結果數(默認 50) |
ast_outline 參數¶
| 參數 | 說明 |
|---|---|
file_path |
待檢查的文件路徑 |
lang |
語言覆蓋(省略則自動檢測) |
depth |
深度控制,1 僅頂層(默認),2 包含類方法 |
支持的語言¶
支持 TypeScript (ts, tsx)、JavaScript (js, jsx)、Python (py)、Rust (rs)、Go (go)、Java (java)、C (c, h) 以及 C++ (cpp, hpp, cc)。
注意事項¶
- 插件依賴於預先安裝的
ast-grepCLI,請確保已安裝。 - 插件以當前 DSH 進程的權限運行,請在使用前檢查源碼與許可證。
- 該插件採用 MIT 許可證。
總結¶
dsh-tool-ast-grep 是 DeepSeek Harness 生態中用於提升代碼搜索效率的重要工具。通過引入 AST 級別的搜索能力,它顯著降低了智能體處理代碼時的令牌消耗,同時保證了語義的準確性。
- 插件目錄: https://www.skillhub.cn/plugins/Jaylor-Wang/dsh-tool-ast-grep
- GitHub 倉庫: https://github.com/Jaylor-Wang/dsh-tool-ast-grep