Thorns-超紧凑型代码库智能
使用树形图进行跨平台代码库分析,以最小的输出获得最大的洞察力。
特性
- 跨平台:WSL、Linux、Windows、macOS(arm64/x64)
- 12种语言:JavaScript、TypeScript、Python、Rust、Go、C/C++、Java、C#、Ruby、PHP、JSON
- 依赖图:文件级导入、孤立、循环deps
- 代码重复:基于AST的克隆检测
- 耦合度量:大多数连接的文件
- 文件大小:分布和最大文件
- 标识符使用:最常见的变量/函数
- 复杂性热点:高cx/深度文件
- 超全面忽略:自动加载.gitignore、.docherignore、.npmignore+200+内置模式
- 智能过滤:忽略所有语言中的node_modules、target、vendor、dist、build、.cache等
- 超紧凑型:零不必要的代币
- 快速:本机解析器,每秒约1000个文件,跳过96%以上的无关文件
用法
快速开始
分析当前目录:
bunx mcp-thorns分析特定目录:
bunx mcp-thorns /path/to/codebase使用Bun在全球范围内安装
bun add -g mcp-thorns然后使用:
thorns /path/to/codebase程序化API
import { analyze } from 'mcp-thorns';
// Get ultra-compact analysis as a string
const output = analyze('./path/to/codebase');
console.log(output);
// Or use the raw functions for custom formatting
import { analyzeCodebase, formatUltraCompact } from 'mcp-thorns';
const data = analyzeCodebase('./path/to/codebase');
const formatted = formatUltraCompact(data);输出格式
超紧凑的备忘单,信息密度最大:
━━━ 47f 8.5kL 44fn 5cls cx:7.9 d:21.7 ━━━
JA 97% 40f 8.3kL 44fn 5c 575i 96e cx:7.9
JS 3% 7f 214L 0fn 0c 0i 0e cx:0
━━━ fn ━━━
7× Ja:main(1)
6× Ja:uuid(1)
5× Ja:createApp(1)
4× Ja:verifyApps(1)
3× Ja:processNextApp(1)
━━━ cls ━━━
2× Ja:StatelessMCPTools
2× Ja:ValidationSystem
━━━ imports ━━━
2× import { CallToolRequestSchema...
1× import WebSocket from 'ws';
━━━ calls ━━━
504× console.log
63× ws.on
51× setTimeout
━━━ ⚠ hotspots ━━━
cx:57 d:19 src/validation-system.js
cx:20 d:28 src/stateless-mcp-tools-basic.js传说:
- 缩写:
f=文件L=线条fn=功能cls=类别i=进口e=出口cx=复杂性d=AST深度(N)=参数计数 - 问题:
orph=孤立文件dup=重复代码circ=圆形depsin/out=依赖耦合 TOTALS:总文件、行、函数、类、平均复杂度、平均深度|问题计数- 语言行:代码库的百分比、文件/行/函数/类/导入/导出计数、平均复杂性
TOP-FUNCTIONS(most-defined):最常见的函数签名(count×lang:签名)TOP-CLASSES(most-defined):最常见的类别TOP-IMPORTS(common-deps):最常见的进口TOP-CALLS(frequent-invocations):调用最多的函数/APIHOTSPOTS(complex-files):复杂性热点-重构候选对象(cx=复杂性,d=深度)ORPHANS(unused-or-entries):文件未导入到任何地方-潜在的死代码或入口点COUPLING(central-files):具有最多依赖项的文件-中心集线器,重构候选文件(在←进口,out→uses)DUPLICATES(code-clones):基于AST的结构克隆-合并候选(计数×哈希:文件)CIRCULAR-DEPS(import-cycles):导入周期-架构问题LARGEST-FILES(split-candidates):最大的文件-可维护性风险FILE-SIZE-DISTRIBUTION:按行数的文件大小分布TOP-IDENTIFIERS(common-names):代码库中使用最多的变量名
支持的语言
- JavaScript(.js、.mjs、.cjs、.jsx)
- TypeScript(.ts、.tsx)
- Python(.py)
- 锈蚀(.rs)
- 去(.去)
- C(.C,.h)
- C++(.cpp、.cc、.cxx、.hpp)
- Java(.Java)
- C#(.cs)
- Ruby(.rb)
- PHP(.PHP)
- JSON(.JSON)
忽略的目录和文件
自动跳过200多种模式,包括:
- 版本控制系统:
.git,.svn,.hg,CVS - 构建工件:
dist,build,out,target,vendor - 特定语言的:
node_modules,__pycache__,.gradle,Pods等等。 - 缓存:
.cache,.next,.nuxt,.parcel-cache,.vite,.turbo - 月中日:
.vscode,.idea,.vs,.sublime-* - 测试和覆盖:
.pytest_cache,.nyc_output,coverage,htmlcov - 主目录:
~/.cache,~/.config,~/.local,~/.npm,~/.cargo等等。(分析子图形时) - 锁定文件:
bun.lockb,package-lock.json,yarn.lock,pnpm-lock.yaml - 自定义模式:加载和合并
.gitignore,.dockerignore,.npmignore,.thornsignore
Thorns通过忽略96%以上的非代码文件来优先考虑速度。
需求
- 运行时:Bun>=1.0
- 平台:Linux、macOS、Windows(WSL2)、Docker
- 为支持的平台自动下载预构建的二进制文件
兼容性
✅ Linux:Ubuntu、Debian、Alpine、Fedora、Arch ✅ macOS:英特尔和苹果硅(arm64) ✅ 视窗:WSL2、Git Bash、PowerShell ✅ 码头工人:所有Linux映像(Alpine、Debian、Ubuntu) ✅ CI/CD:GitHub Actions、GitLab CI、Jenkins、CircleCI ✅ 云:AWS Lambda(带节点/Bun层)、GCP云功能
执行方法
| 方法 | 最适合 | 要求 |
|---|---|---|
| bunx | 快速分析 | bun |
| Bun global | 重复使用 | bun |
| 程序化 | 集成 | Bun |
运作原理
- 遍历目录树,按扩展名过滤
- 使用树状图解析每个文件
- 分析AST的函数、类、导入、导出、复杂性
- 按语言汇总统计数据
- 输出简明摘要
演出
- 跳过大于1MB的文件
- 使用本机解析器(不是WASM)
- 最小内存占用
- 在现代硬件上每秒处理约1000个文件
