mcpField
T
tldr-code

tldr-code

github.com/parcadei开发3.9k505 次安装39 周前更新
代码仓库

关于 tldr-code

tldr-code 是用于导航和分析代码库的命令行技能,提供结构化摘要与代码流信息。它支持多种编程语言,并以搜索、依赖分析、诊断和语义查询帮助开发者定位相关代码。

主要功能

  1. 01代码结构与模式搜索
  2. 02调用、导入和依赖分析
  3. 03控制流与数据流检查
  4. 04诊断与受影响测试查找
  5. 05自然语言语义搜索

适用场景

  1. 01查找函数的调用方和依赖
  2. 02追踪控制流或变量流
  3. 03调试前定位相关文件
  4. 04用自然语言描述搜索代码

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/parcadei/continuous-claude-v3 --skill tldr-code

安装后在 Claude Code 中输入/tldr-code确认已加载。

附带文件rules.md

详细介绍

TLDR-Code:完整参考

高效利用 Token 进行代码分析。相比直接读取原始文件,节省 95%。

快速参考

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

五层栈

Layer 1: AST         ~500 tokens   Function signatures, imports
Layer 2: Call Graph  +440 tokens   What calls what (cross-file)
Layer 3: CFG         +110 tokens   Complexity, branches, loops
Layer 4: DFG         +130 tokens   Variable definitions/uses
Layer 5: PDG         +150 tokens   Dependencies, slicing
───────────────────────────────────────────────────────────────
Total:              ~1,200 tokens  vs 23,000 raw = 95% savings

CLI 命令

导航
# File tree
tldr tree [path]
tldr tree src/ --ext .py .ts        # Filter extensions
tldr tree . --show-hidden           # Include hidden files

# Code structure (codemaps)
tldr structure [path] --lang python
tldr structure src/ --max 100       # Max files to analyze
搜索
# Text search
tldr search <pattern> [path]
tldr search "def process" src/
tldr search "class.*Error" . --ext .py
tldr search "TODO" . -C 3           # 3 lines context
tldr search "func" . --max 50       # Limit results

# Semantic search (natural language)
tldr semantic search "authentication flow"
tldr semantic search "error handling" --k 10
tldr semantic search "database queries" --expand  # Include call graph
文件分析
# Full file info
tldr extract <file>
tldr extract src/api.py
tldr extract src/api.py --class UserService      # Filter to class
tldr extract src/api.py --function process       # Filter to function
tldr extract src/api.py --method UserService.get # Filter to method

# Relevant context (follows call graph)
tldr context <entry> --project <path>
tldr context main --project src/ --depth 3
tldr context UserService.create --project . --lang typescript
流程分析
# Control flow graph (complexity)
tldr cfg <file> <function>
tldr cfg src/processor.py process_data
# Returns: cyclomatic complexity, blocks, branches, loops

# Data flow graph (variable tracking)
tldr dfg <file> <function>
tldr dfg src/processor.py process_data
# Returns: where variables are defined, read, modified

# Program slice (what affects line X)
tldr slice <file> <function> <line>
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
代码库分析
# Build cross-file call graph
tldr calls [path]
tldr calls src/ --lang python

# Reverse call graph (who calls this function?)
tldr impact <func> [path]
tldr impact process_data src/ --depth 5
tldr impact authenticate . --file auth  # Filter by file

# Find dead/unreachable code
tldr dead [path]
tldr dead src/ --entry main cli test_  # Specify entry points
tldr dead . --lang typescript

# Detect architectural layers
tldr arch [path]
tldr arch src/ --lang python
# Returns: entry layer, middle layer, leaf layer, circular deps
导入分析
# Parse imports from file
tldr imports <file>
tldr imports src/api.py
tldr imports src/api.ts --lang typescript

# Reverse import lookup (who imports this module?)
tldr importers <module> [path]
tldr importers datetime src/
tldr importers UserService . --lang typescript
质量与测试
# Type check + lint
tldr diagnostics <file|path>
tldr diagnostics src/api.py
tldr diagnostics . --project              # Whole project
tldr diagnostics src/ --no-lint           # Type check only
tldr diagnostics src/ --format text       # Human-readable

# Find affected tests
tldr change-impact [files...]
tldr change-impact                        # Auto-detect (session/git)
tldr change-impact src/api.py             # Explicit files
tldr change-impact --session              # Session-modified files
tldr change-impact --git                  # Git diff files
tldr change-impact --git --git-base main  # Diff against branch
tldr change-impact --run                  # Actually run affected tests
缓存
# Pre-build call graph cache
tldr warm <path>
tldr warm src/ --lang python
tldr warm . --background                  # Build in background

# Build semantic index (one-time)
tldr semantic index [path]
tldr semantic index . --lang python
tldr semantic index . --model all-MiniLM-L6-v2  # Smaller model (80MB)

守护进程(加快查询)

守护进程将索引保存在内存中,以便快速响应重复查询。

守护进程命令
# Start daemon (backgrounds automatically)
tldr daemon start
tldr daemon start --project /path/to/project

# Check status
tldr daemon status

# Stop daemon
tldr daemon stop

# Send raw command
tldr daemon query ping
tldr daemon query status

# Notify file change (for hooks)
tldr daemon notify <file>
tldr daemon notify src/api.py
守护进程功能
功能描述
自动关闭空闲 30 分钟后关闭
查询缓存SalsaDB 记忆化
内容哈希跳过未更改的文件
脏数据跟踪增量重新索引
跨平台Unix 套接字 / Windows TCP
守护进程套接字协议

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

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

// Response
{"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)

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

设置
# Build index (downloads model on first run)
tldr semantic index .

# Default model: bge-large-en-v1.5 (1.3GB, best quality)
# Smaller model: all-MiniLM-L6-v2 (80MB, faster)
tldr semantic index . --model all-MiniLM-L6-v2
搜索
tldr semantic search "authentication flow"
tldr semantic search "error handling patterns" --k 10
tldr semantic search "database connection" --expand  # Follow call graph
配置

在 .claude/settings.json 中:

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

支持的语言

语言AST调用图CFGDFGPDG
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 与其他工具

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

Python API

from tldr.api import (
    # L1: AST
    extract_file, extract_functions, get_imports,
    # L2: Call Graph
    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,
    # Unified
    get_relevant_context,
    # Analysis
    analyze_dead_code, analyze_architecture, analyze_impact,
)

# Example: Get context for LLM
ctx = get_relevant_context("src/", "main", depth=2, language="python")
print(ctx.to_llm_string())

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

关键要点: TLDR 用于导航,然后你再阅读。不要只凭摘要尝试修复 Bug。

模式
# 1. NAVIGATE: Find which files matter
tldr imports file.py              # What does buggy file depend on?
tldr impact func_name .           # Who calls the buggy function?
tldr calls .                      # Cross-file edges (follow 2-hop for models)

# 2. READ: Get actual code for critical files (2-4 files, not all 50)
# Use Read tool or tldr search -C for code with context
tldr search "def buggy_func" . -C 20
这样做的原因

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

  • 存在 Bug 的文件(处理程序访问 task.user_id)
  • 定义契约的文件(模型定义 owner_id)

TLDR 会找出相关文件,然后你再阅读这些文件。

获取更多上下文

如果 TLDR 的输出不够:

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

Token 节省效果的证据

Raw file read:    23,314 tokens
TLDR all layers:   1,189 tokens
─────────────────────────────────
Savings:              95%

核心思路:调用图帮助定位相关代码,然后通过分层提供结构化摘要。你无需阅读无关代码。

评论

支持 Markdown