Claude Code Plugins

Community-maintained marketplace

Feedback

Serena智能代码分析工具使用指南,提供符号级代码探索、编辑和重构能力。

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name serena-code
description Serena智能代码分析工具使用指南,提供符号级代码探索、编辑和重构能力。
version v1.0
tags serena, code-analysis, refactoring, symbols
allowed-tools mcp__serena_*
requires-skills

Serena代码分析工具

🎯 垂直职责

单一职责: 符号级代码探索、搜索、编辑和重构

📦 核心能力

1. 代码探索

工具 用途 示例
list_dir 列出目录内容 列出ep21/src/main/java
find_file 查找文件 查找*Optimizer.java
get_symbols_overview 获取文件符号概览 查看类的所有方法
find_symbol 按名称查找符号 查找SSAGraph
search_for_pattern 模式搜索 搜索extends.*Optimizer

2. 代码编辑

工具 用途 示例
replace_symbol_body 替换符号体 重写整个方法
insert_after_symbol 符号后插入 添加新方法
insert_before_symbol 符号前插入 添加导入
rename_symbol 重命名符号 重命名类/方法/字段

3. 项目理解

工具 用途 示例
read_memory 读取项目记忆 读取EP21_TECH_MEM.md
write_memory 写入项目记忆 更新技术文档
list_memories 列出所有记忆 查看可用记忆

4. 智能思考

工具 用途 触发时机
think_about_collected_information 分析收集信息 搜索后
think_about_task_adherence 检查任务一致性 编辑前
think_about_whether_you_are_done 判断完成状态 任务结束

🔗 关系图

无依赖 (独立工具集) ← 所有技能依赖 (被广泛使用)

🚀 使用流程

标准代码探索流程

# 1. 获取符号概览 (避免读取整个文件)
mcp__serena__get_symbols_overview("ep21/src/main/java/.../SSAGraph.java")

# 2. 查找特定符号
mcp__serena__find_symbol("SSAGraph", relative_path="ep21", depth=1)

# 3. 读取符号体 (仅读需要的部分)
mcp__serena__find_symbol("computeDominators", include_body=true)

# 4. 查找引用
mcp__serena__find_referencing_symbols("computeDominators", "SSAGraph.java")

# 5. 分析信息
mcp__serena__think_about_collected_information()

符号级编辑流程

# 1. 定位符号
mcp__serena__find_symbol("methodName", include_body=true)

# 2. 检查任务一致性
mcp__serena__think_about_task_adherence()

# 3. 替换符号体
mcp__serena__replace_symbol_body("methodName", newBody)

# 4. 验证完成
mcp__serena__think_about_whether_you_are_done()

项目记忆更新流程

# 1. 读取现有记忆
mcp__serena__read_memory("EP21_TECH_MEM.md")

# 2. 更新内容
mcp__serena__edit_memory("EP21_TECH_MEM.md", needle, repl, "literal")

# 3. 或完全重写
mcp__serena__write_memory("EP21_TECH_MEM.md", newContent)

📊 效率对比

操作 传统工具 Serena工具 节省
查找方法 grep + Read find_symbol 60%
理解类结构 Read (300行) get_symbols_overview 85%
重构方法 Edit (行号) replace_symbol_body 50%
跨文件引用 grep全局 find_referencing_symbols 70%

⚠️ 最佳实践

✅ 使用符号级工具

# 推荐: 符号级操作
mcp__serena__find_symbol("computeDominators", include_body=true)
mcp__serena__replace_symbol_body("computeDominators", newBody)

# 避免: 读取整个文件
Read file_path="ep21/.../SSAGraph.java"

✅ 使用模式搜索

# 推荐: 搜索模式
mcp__serena__search_for_pattern("implements.*IFlowOptimizer", restrict_search_to_code_files=true)

# 避免: Grep搜索
Grep pattern="implements.*IFlowOptimizer"

✅ 使用思考工具

# 在关键节点使用思考工具
mcp__serena__think_about_collected_information()  # 搜索后
mcp__serena__think_about_task_adherence()        # 编辑前
mcp__serena__think_about_whether_you_are_done()  # 完成时

❌ 避免重复读取

# 错误: 多次读取同一文件
Read file_path="SSAGraph.java"  # 第1次
Read file_path="SSAGraph.java"  # 第2次 - 浪费

# 正确: 使用符号概览 + 选择性读取
mcp__serena__get_symbols_overview("SSAGraph.java")  # 1次
mcp__serena__find_symbol("specificMethod", include_body=true)  # 按需

版本: v1.0 | 垂直职责: Serena代码分析工具 | 2025-12-23