TLDR代码分析工具Skill tldr-code

这个技能是一个令牌高效代码分析工具,通过五层堆栈(抽象语法树、调用图、控制流图、数据流图、程序依赖图)实现95%令牌节省,帮助开发者理解代码结构、调试、重构、复杂性分析和跨文件依赖。关键词包括代码分析、AST、调用图、复杂性分析、调试工具、代码架构、令牌节省。

架构设计 0 次安装 0 次浏览 更新于 3/14/2026

名称:tldr代码 描述:通过五层堆栈(AST、调用图、CFG、DFG、PDG)进行令牌高效代码分析。节省95%的令牌。 允许工具:[Bash] 关键词:[调试、重构、理解、复杂性、“调用图”、“数据流”、“谁调用”、“多复杂”、搜索、探索、分析、死代码、架构、导入]

TLDR代码:完整参考

令牌高效代码分析。相对于原始文件读取,节省95%

快速参考

任务 命令
文件树 tldr tree src/
代码结构 tldr structure . --lang python
搜索代码 tldr search "模式" .
调用图 tldr calls src/
谁调用X? tldr impact 函数名 .
控制流 tldr cfg 文件.py 函数
数据流 tldr dfg 文件.py 函数
程序切片 tldr slice 文件.py 函数 42
死代码 tldr dead src/
架构 tldr arch src/
导入 tldr imports 文件.py
谁导入X? tldr importers 模块名 .
受影响测试 tldr change-impact --git
类型检查 tldr diagnostics 文件.py
语义搜索 tldr semantic search "认证流程"

五层堆栈

第1层:AST         ~500个令牌   函数签名、导入
第2层:调用图      +440个令牌   谁调用什么(跨文件)
第3层:CFG         +110个令牌   复杂性、分支、循环
第4层:DFG         +130个令牌   变量定义/使用
第5层:PDG         +150个令牌   依赖关系、切片
───────────────────────────────────────────────────────────────
总计:             ~1,200个令牌   vs 23,000原始 = 节省95%

CLI命令

导航

# 文件树
tldr tree [路径]
tldr tree src/ --ext .py .ts        # 过滤扩展名
tldr tree . --show-hidden           # 包含隐藏文件

# 代码结构(代码图)
tldr structure [路径] --lang python
tldr structure src/ --max 100       # 最大分析文件数

搜索

# 文本搜索
tldr search <模式> [路径]
tldr search "def process" src/
tldr search "class.*Error" . --ext .py
tldr search "TODO" . -C 3           # 3行上下文
tldr search "func" . --max 50       # 限制结果数

# 语义搜索(自然语言)
tldr semantic search "认证流程"
tldr semantic search "错误处理" --k 10
tldr semantic search "数据库查询" --expand  # 包含调用图

文件分析

# 完整文件信息
tldr extract <文件>
tldr extract src/api.py
tldr extract src/api.py --class UserService      # 过滤到类
tldr extract src/api.py --function process       # 过滤到函数
tldr extract src/api.py --method UserService.get # 过滤到方法

# 相关上下文(遵循调用图)
tldr context <入口> --project <路径>
tldr context main --project src/ --depth 3
tldr context UserService.create --project . --lang typescript

流分析

# 控制流图(复杂性)
tldr cfg <文件> <函数>
tldr cfg src/processor.py process_data
# 返回:圈复杂度、块、分支、循环

# 数据流图(变量跟踪)
tldr dfg <文件> <函数>
tldr dfg src/processor.py process_data
# 返回:变量定义、读取、修改的位置

# 程序切片(什么影响第X行)
tldr slice <文件> <函数> <行>
tldr slice src/processor.py process_data 42
tldr slice src/processor.py process_data 42 --direction forward
tldr slice src/processor.py process_data 42 --var result

代码库分析

# 构建跨文件调用图
tldr calls [路径]
tldr calls src/ --lang python

# 反向调用图(谁调用这个函数?)
tldr impact <函数> [路径]
tldr impact process_data src/ --depth 5
tldr impact authenticate . --file auth  # 按文件过滤

# 查找死/不可达代码
tldr dead [路径]
tldr dead src/ --entry main cli test_  # 指定入口点
tldr dead . --lang typescript

# 检测架构层
tldr arch [路径]
tldr arch src/ --lang python
# 返回:入口层、中间层、叶层、循环依赖

导入分析

# 解析文件导入
tldr imports <文件>
tldr imports src/api.py
tldr imports src/api.ts --lang typescript

# 反向导入查找(谁导入这个模块?)
tldr importers <模块> [路径]
tldr importers datetime src/
tldr importers UserService . --lang typescript

质量与测试

# 类型检查 + 代码检查
tldr diagnostics <文件|路径>
tldr diagnostics src/api.py
tldr diagnostics . --project              # 整个项目
tldr diagnostics src/ --no-lint           # 仅类型检查
tldr diagnostics src/ --format text       # 可读格式

# 查找受影响测试
tldr change-impact [文件...]
tldr change-impact                        # 自动检测(会话/git)
tldr change-impact src/api.py             # 显式文件
tldr change-impact --session              # 会话修改文件
tldr change-impact --git                  # Git差异文件
tldr change-impact --git --git-base main  # 对比分支差异
tldr change-impact --run                  # 实际运行受影响测试

缓存

# 预构建调用图缓存
tldr warm <路径>
tldr warm src/ --lang python
tldr warm . --background                  # 后台构建

# 构建语义索引(一次性)
tldr semantic index [路径]
tldr semantic index . --lang python
tldr semantic index . --model all-MiniLM-L6-v2  # 小模型(80MB)

守护进程(更快查询)

守护进程在内存中保存索引,实现即时重复查询。

守护进程命令

# 启动守护进程(自动后台)
tldr daemon start
tldr daemon start --project /path/to/project

# 检查状态
tldr daemon status

# 停止守护进程
tldr daemon stop

# 发送原始命令
tldr daemon query ping
tldr daemon query status

# 通知文件更改(用于钩子)
tldr daemon notify <文件>
tldr daemon notify src/api.py

守护进程功能

功能 描述
自动关闭 30分钟空闲
查询缓存 SalsaDB记忆化
内容哈希 跳过未更改文件
脏跟踪 增量重新索引
跨平台 Unix套接字 / Windows TCP

守护进程套接字协议

向套接字发送JSON,接收JSON响应:

// 请求
{"cmd": "search", "pattern": "process", "max_results": 10}

// 响应
{"status": "ok", "results": [...]}

所有22个守护进程命令:

ping, status, shutdown, search, extract, impact, dead, arch,
cfg, dfg, slice, calls, warm, semantic, tree, structure,
context, imports, importers, notify, diagnostics, change_impact

语义搜索(P6)

使用嵌入进行自然语言代码搜索。

设置

# 构建索引(首次运行下载模型)
tldr semantic index .

# 默认模型:bge-large-en-v1.5(1.3GB,最佳质量)
# 小模型:all-MiniLM-L6-v2(80MB,更快)
tldr semantic index . --model all-MiniLM-L6-v2

搜索

tldr semantic search "认证流程"
tldr semantic search "错误处理模式" --k 10
tldr semantic search "数据库连接" --expand  # 遵循调用图

配置

.claude/settings.json中:

{
  "semantic_search": {
    "enabled": true,
    "auto_reindex_threshold": 20,
    "model": "bge-large-en-v1.5"
  }
}

支持的语言

语言 AST 调用图 CFG DFG PDG
Python
TypeScript
JavaScript
Go
Rust
Java - - -
C/C++ - - -
Ruby - - - -
PHP - - - -
Kotlin - - - -
Swift - - - -
C# - - - -
Scala - - - -
Lua - - - -
Elixir - - - -

忽略模式

TLDR遵循.tldrignore(gitignore语法):

# .tldrignore
.venv/
__pycache__/
node_modules/
*.min.js
dist/

首次运行创建.tldrignore并设置默认值。 使用--no-ignore绕过。


何时使用TLDR vs 其他工具

任务 使用TLDR 使用Grep
查找函数定义 tldr extract 文件 --function X -
搜索代码模式 tldr search "模式" -
字符串文字搜索 - grep "文字"
配置值 - grep "KEY="
跨文件调用 tldr calls -
反向依赖 tldr impact 函数 -
复杂性分析 tldr cfg 文件 函数 -
变量跟踪 tldr dfg 文件 函数 -
自然语言查询 tldr semantic search -

Python API

from tldr.api import (
    # L1: AST
    extract_file, extract_functions, get_imports,
    # L2: 调用图
    build_project_call_graph, get_intra_file_calls,
    # L3: CFG
    get_cfg_context,
    # L4: DFG
    get_dfg_context,
    # L5: PDG
    get_slice, get_pdg_context,
    # 统一
    get_relevant_context,
    # 分析
    analyze_dead_code, analyze_architecture, analyze_impact,
)

# 示例:为LLM获取上下文
ctx = get_relevant_context("src/", "main", depth=2, language="python")
print(ctx.to_llm_string())

修复错误工作流(导航 + 阅读)

关键洞察: TLDR导航,然后您阅读。不要仅从摘要中修复错误。

模式

# 1. 导航:查找哪些文件重要
tldr imports 文件.py              # 错误文件依赖什么?
tldr impact 函数名 .           # 谁调用错误函数?
tldr calls .                      # 跨文件边(模型关注2跳)

# 2. 阅读:获取关键文件的实际代码(2-4个文件,不是所有50个)
# 使用Read工具或tldr search -C获取带上下文的代码
tldr search "def buggy_func" . -C 20

为什么这样有效

对于跨文件错误(例如,错误字段名、类型不匹配),您需要查看:

  • 有错误的文件(处理程序访问task.user_id
  • 有合同的文件(模型定义owner_id

TLDR查找哪些文件重要。然后您阅读它们。

获取更多上下文

如果TLDR输出不够:

  • tldr search "模式" . -C 20 - 获取带20行上下文的实际代码
  • tldr imports 文件.py - 查看文件依赖什么
  • 如果您需要完整实现,直接阅读文件

令牌节省证据

原始文件读取:    23,314个令牌
TLDR所有层:      1,189个令牌
─────────────────────────────────
节省:              95%

洞察:调用图导航到相关代码,然后层提供结构化摘要。您不阅读无关代码。