# 代码审查与分析指令

本节介绍代码审查、Diff 查看、项目初始化、提示词生成、角色定义以及代码库索引相关的指令。

返回：[指令面板说明](./09.0.指令面板说明.md)

---

## `/review`

代码审查。

- **作用**: 打开交互式代码审查面板，选择要审查的内容
- **功能**:
  - 自动检测 Git 仓库
  - 显示已暂存更改（Staged）及文件数量
  - 显示未暂存更改（Unstaged）及文件数量
  - 分页加载历史提交记录（每页 30 条）
  - 支持多选：可同时选择多个审查目标
  - 支持添加审查备注
  - AI 分析代码质量、潜在 bug、安全问题
  - 提供优化建议
- **面板操作**:
  - `Up/Down` - 上下移动选择
  - `Space` - 勾选/取消勾选当前项
  - `Enter` - 确认选择并开始审查
  - `ESC` - 关闭面板
- **可选择的审查目标**:
  - **Staged**: 已暂存的更改
  - **Unstaged**: 未暂存的更改
  - **历史提交**: 显示 commit SHA、提交信息、作者、日期
- **示例**:
  - `/review` - 打开审查面板
  - 在面板中用空格键选择要审查的内容，按回车确认

## `/diff`

查看对话修改 Diff。

- **作用**: 打开 Diff Review 面板，按对话中的用户消息查看关联的文件变更，并在 IDE 中打开差异视图
- **功能**:
  - 根据会话快照列出可回看的对话节点
  - 支持先预览单个文件差异，再一次性打开全部文件 Diff
  - 适合回顾 AI 在当前会话中修改过的代码
- **面板操作**:
  - `↑/↓` - 选择消息或文件
  - `Tab` - 在消息列表与文件列表之间切换
  - `Enter` - 打开选中消息对应的全部文件 Diff
  - `ESC` - 关闭面板
- **前提**: 建议先连接 VSCode/IDE 插件，否则无法在 IDE 中展示 Diff
- **示例**: 输入 `/diff` 打开对话变更对比面板

## `/init`

初始化项目文档。

- **作用**: AI 分析当前项目并生成/更新 AGENTS.md 文档
- **功能**:
  - 自动探索项目结构
  - 读取配置文件和代码
  - 生成项目概述、技术栈、架构说明
- **生成内容**: 项目名称、概览、技术栈、目录结构、功能特性、使用说明等
- **示例**: 在项目根目录输入 `/init`

## `/new-prompt`

生成精炼提示词。

- **作用**: 打开 Prompt Generator 面板，根据你的需求描述生成一段可直接继续编辑或发送的提示词
- **功能**:
  - 输入自然语言需求后由 AI 生成更结构化的 prompt
  - 生成完成后可预览、重新生成或接受结果
  - 接受后会把生成结果放回输入框，不会自动发送
- **面板操作**:
  - **输入阶段**: 输入需求后按 `Enter` 开始生成
  - **预览阶段**: `↑/↓` 滚动预览，`Y` 接受，`R` 重新生成，`N/ESC` 取消
- **使用场景**: 想把模糊需求整理成更清晰、更完整的指令时
- **示例**: 输入 `/new-prompt` 打开提示词生成器

## `/role`

角色定义文件管理。

- **作用**: 管理 ROLE 文件（支持全局与项目两个作用域），用于定义 AI 的角色和行为
- **功能**:
  - **创建**: `/role` - 打开交互式面板，选择创建位置
    - 全局位置: `~/.snow/ROLE.md`
    - 项目位置: `./ROLE.md`
  - **删除**: `/role -d` 或 `/role --delete` - 打开删除面板，选择要删除的 ROLE.md
  - **列表/切换**: `/role -l` 或 `/role --list` - 打开 ROLE 管理面板，查看当前作用域下的 ROLE 列表并切换活跃项
- **使用场景**: 需要为特定项目定制 AI 的行为与输出风格，或统一配置所有项目的 AI 行为
- **面板操作**:
  - **创建面板**: `G` - 选择全局，`P` - 选择项目，`ESC` - 取消
  - **删除面板**: `G` - 删除全局，`P` - 删除项目，`Y` - 确认删除，`N/ESC` - 取消
  - **ROLE 管理面板（/role -l）**:
    - `Tab` - 切换 Global / Project
    - `Up/Down` - 移动选择
    - `Enter` - 将选中的 ROLE 设为活跃（列表中以 `[✓]` 标记）
    - `N` - 创建一个新的非活跃 ROLE（文件名形如 `ROLE-<id>.md`）
    - `D` - 删除选中的非活跃 ROLE（需要二次确认：`Y` 确认，`N/ESC` 取消）
    - `ESC` - 关闭面板
- **活跃状态持久化**:
  - 全局: `~/.snow/role.json`
  - 项目: `<项目根目录>/.snow/role.json`
  - 字段: `activeRoleId`（缺省或为 `active` 表示读取 `ROLE.md`；否则读取 `ROLE-<activeRoleId>.md`）
- **示例**:
  - `/role` - 打开创建面板，选择位置后创建 ROLE.md
  - `/role -d` - 打开删除面板，选择要删除的文件
  - `/role -l` - 打开 ROLE 管理面板

## `/reindex`

重建代码库索引。

- **作用**: 重新扫描并索引项目代码库
- **前提**: 需要先在配置中启用代码库功能
- **参数**:
  - 无参数: 增量重建，跳过未修改的文件
  - `-force`: 强制重建，删除现有数据库后完全重建索引
- **使用场景**:
  - 代码库更新后需要更新索引
  - 索引损坏时使用 `-force` 完全重建
- **示例**:
  - `/reindex` - 增量重建索引
  - `/reindex -force` - 强制完全重建索引

## `/codebase`

管理当前项目的代码库索引开关。

- **作用**: 开启、关闭或查看当前项目的 Codebase 索引状态
- **参数**:
  - 无参数: `/codebase` - 直接切换开/关状态
  - `on`: `/codebase on` - 启用代码库索引
  - `off`: `/codebase off` - 禁用代码库索引
  - `status`: `/codebase status` - 查看当前状态
- **前提**: 启用前需要先在 `/home` 中完成 embedding 相关配置
- **行为说明**:
  - 启用时会保存项目配置，并触发索引构建
  - 禁用时会停止索引与文件监听
- **示例**:
  - `/codebase status` - 查看状态
  - `/codebase on` - 启用索引
  - `/codebase off` - 禁用索引
