Files
gh-zephyrdeng-cc-plugins-pl…/commands/serena-index.md
2025-11-30 09:08:25 +08:00

195 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: serena-index
description: "异步执行 Serena 项目索引,为项目建立语义理解和代码符号索引"
category: project
complexity: standard
mcp-servers: [serena]
personas: [architect]
---
# /serena-index - Serena 项目索引
## Triggers
- 项目首次使用 Serena MCP 时需要建立索引
- 代码库发生重大变更后需要重新索引
- 手动请求项目索引更新
- 新项目 onboarding 流程的一部分
- 索引工具响应变慢时需要重新索引
## Usage
```
/serena-index [project-path] [options]
Options:
--generate-config # 生成 .serena/project.yml 配置文件
--reindex # 强制重新索引,清除旧索引数据
--setup-hooks # 配置自动索引 hook会话开始时自动索引
--status # 查询当前索引状态和健康度
--smart # 智能决策(仅在需要时索引)
--verify # 验证索引完整性
--cleanup # 清理过期索引数据
```
## 环境要求
- 项目必须是 Git 仓库(需要 `.git` 目录)
- Python 环境和 uvx 工具可用
- 磁盘空间充足(索引文件可能较大)
- Serena MCP 已配置并启用
## Behavioral Flow
1. **环境检测**: 验证 Git 仓库、Python 环境、Serena MCP 配置
2. **配置准备**: 可选生成 `.serena/project.yml` 配置文件
3. **委托执行**: 将索引任务委托给 serena-indexer agent 异步执行
4. **进度监控**: 跟踪索引进度和统计信息
5. **完成验证**: 验证索引数据完整性和可用性
Key behaviors:
- 自动检测项目是否配置了 Serena MCP
- 使用 Task agent 异步执行,不阻塞主工作流
- 提供清晰的进度反馈和完成状态
- 支持配置文件生成和重新索引
- 索引数据存储在 `.serena/` 目录
## MCP Integration
- **Serena MCP**: 执行 `uvx --from git+https://github.com/oraios/serena serena project index`
- **Sequential MCP**: 用于复杂的索引状态分析和验证
## Tool Coordination
- **Task**: 委托给 serena-indexer agent 进行异步索引执行
- **Bash**: 检查 MCP 配置和执行索引命令
- **Read**: 读取项目配置文件验证 Serena 可用性
## Key Patterns
- **异步执行**: Task(serena-indexer) → 不阻塞主流程
- **配置管理**: 生成配置 → 执行索引 → 验证完成
- **环境验证**: Git 检查 → Python 检查 → MCP 配置检查
- **错误处理**: 优雅处理索引失败,提供清晰错误信息和解决方案
## Examples
### 基本用法
```
/serena-index
# 自动检测当前项目并异步执行索引
# 索引数据将存储在 .serena/ 目录
```
### 首次使用(生成配置)
```
/serena-index --generate-config
# 首先生成 .serena/project.yml 配置文件
# 然后执行项目索引
```
### 指定项目路径
```
/serena-index /path/to/project
# 为指定路径的项目执行索引
```
### 重新索引
```
/serena-index --reindex
# 强制重新索引,清除旧索引数据
# 适用于代码库发生重大变更的情况
```
### 配置自动索引 Hook
```
/serena-index --setup-hooks
# 交互流程:
# ? 选择配置范围:
# > 全局配置(所有项目): ~/.claude/settings.json
# 项目配置(仅当前项目): .claude/settings.json
# ? 选择触发时机:
# > SessionStart会话开始时
# PreToolUse使用 Serena MCP 工具前)
# 仅手动触发
# ? 选择索引策略:
# 总是索引
# > 智能判断(推荐)
# 仅手动触发
# ✅ Hook 配置已创建: .claude/settings.json
# ✅ Hook 脚本已创建: .claude/hooks/serena-auto-index.sh
#
# 下次会话开始或使用 Serena MCP 工具时hook 将自动检查并更新索引
```
### 查询索引状态
```
/serena-index --status
# 输出:
# 📊 Serena 索引状态
#
# 项目: /path/to/your/project
# 上次索引: 2小时前 (2025-10-15 17:30:45)
# 索引文件: 94 个 Go 文件
# 提取符号: 1,248 个(函数: 453, 类: 127, 变量: 668
# 索引大小: 12.3 MB
# 健康度: ✅ 良好(索引新鲜,数据完整)
#
# 建议: 无需重新索引
```
### 智能索引
```
/serena-index --smart
# 智能判断是否需要重新索引
# 如果索引新鲜且文件变更少,则跳过索引
# 输出:
# 🔍 检查索引状态...
# ✅ 索引仍然新鲜2小时前跳过索引
# 或
# 🔄 检测到 15 个文件变更,正在更新索引...
```
### 验证索引完整性
```
/serena-index --verify
# 验证索引数据是否完整和可访问
# 输出:
# 🔍 正在验证索引完整性...
# ✅ 索引数据完整,所有符号可访问
# 或
# ❌ 检测到索引损坏,建议重新索引
```
### 清理旧索引
```
/serena-index --cleanup
# 清理过期或损坏的索引数据
# 输出:
# 🗑️ 清理旧索引数据...
# ✅ 已清理 45.2 MB 过期索引
```
## 索引输出
- **索引位置**: `.serena/` 目录
- **日志文件**: `.claude/doc/serena_index_log.md`
- **统计信息**: 文件数量、符号数量、执行时长
- **错误报告**: 详细的错误堆栈和解决建议
## Boundaries
**Will:**
- 自动检测 Serena MCP 配置状态和 Git 仓库
- 异步执行索引命令,不阻塞主工作流
- 可选生成项目配置文件 `.serena/project.yml`
- 生成自动索引 hook 脚本(--setup-hooks
- 查询索引状态和健康度(--status
- 智能决策是否需要重新索引(--smart
- 验证索引完整性(--verify
- 清理过期索引数据(--cleanup
- 提供清晰的进度和状态反馈
- 验证索引完成和项目可用性
- 处理索引失败并提供解决方案
- 询问用户偏好hook 范围、触发时机、索引策略)
**Will Not:**
- 在未配置 Serena MCP 时强制执行索引
- 在非 Git 仓库中执行索引
- 在索引过程中占用主对话流程
- 覆盖用户的 MCP 配置设置
- 修改项目源代码文件
- 在用户未确认的情况下安装 hook
- 强制使用特定的索引策略