dsh-repo-analyzer:本地仓库智能分析

前言

在开发 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

典型用法

  1. 获取仓库清单:使用 repo_scan 获取仓库的技术栈清单和目录结构。
  2. 查询依赖引用:使用 repo_deps 查询某个依赖(如 lodash)有哪些文件被引用,并评估其影响范围。
  3. 定位模块:使用 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 下),防止链式链接文件攻击。

结语

该插件适合需要在本地进行代码库分析的场景,能帮助智能体快速建立对代码结构的认知。

插件目录
GitHub 仓库

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜