前言¶
在开发 DeepSeek Harness (DSH) 智能体时,让 Agent 理解代码库结构是一项常见需求。通常的做法是让 LLM 直接阅读大量代码,或者搭建爬虫服务,前者成本高且速度慢,后者需要维护额外服务。
dsh-repo-analyzer 是一个本地仓库智能插件,旨在通过静态分析提供栈检测、依赖地图和模块引用信息。它不依赖外部服务,所有计算都在当前文件系统上运行。
核心功能¶
插件提供三个主要工具:
- repo_scan:扫描仓库。识别技术栈、校验 manifest 文件、识别扩展名和系统文件、列出目录层级清单。
- repo_deps:分析依赖。解析 package.json、pyproject.toml、go.mod、Cargo.toml,支持查询单个依赖、定位文件及可用工具的配置文件。
- repo_refs:本地模块引用。支持 import/require 解析,识别最常用的模块节点和文件夹依赖。
安装与启用¶
使用官方命令安装:
dsh plugin --profile <name> add dsh-repo-analyzer
安装后,插件会自动加载到指定的 profile 中。
配置项¶
插件支持以下配置项(YAML 格式):
- insert:
- id: dsh-repo-analyzer
name: dsh-repo-analyzer
config:
root: '.' # 仓库根目录,指向 agent 的 cwd
maxDepth: 4 # 目录遍历深度限制,0 表示不限制
maxFiles: 20000 # 单次解析文件数量上限
maxFileBytes: 1048576
exclude: # 需要排除的路径(默认已包含 node_modules/.git/dist 等)
- node_modules
- .git
- lib
典型用法¶
- 获取仓库清单:使用
repo_scan获取仓库的技术栈清单和目录结构。 - 查询依赖引用:使用
repo_deps查询某个依赖(如 lodash)有哪些文件被引用,并评估其影响范围。 - 定位模块:使用
repo_refs导出引用图,分析模块依赖关系,告诉用户这个模块最适合放在哪个目录。
技术实现细节¶
- 全本地运行:依赖 manifest 文件(package.json 等)的存在概率较高。
- 依赖解析:package.json 使用 JSON.parse 解析,pyproject.toml / go.mod / Cargo.toml 使用正则解析,并忽略无效值。
- 引用图:对 .ts/.tsx/.js/.jsx/.mjs/.cjs/.py 下的 import/require 进行扫描,将引用转换为文件路径,并按目录分组。
- 安全验证:所有用户输入路径都经过
resolveWithin验证(默认在 root 下),防止链式链接文件攻击。
结语¶
该插件适合需要在本地进行代码库分析的场景,能帮助智能体快速建立对代码结构的认知。