# 命令系统分析 ## 架构概述 命令系统通过 `/` 前缀提供用户交互功能,共约 82 个命令目录、189 个文件。 ```mermaid classDiagram class Command { +string name +string description +boolean hidden +execute(args) void } class InteractiveCommand { +React 组件渲染 +用户交互 } class NonInteractiveCommand { +纯逻辑执行 +无 UI } Command <|-- InteractiveCommand Command <|-- NonInteractiveCommand InteractiveCommand <|-- CommitCommand InteractiveCommand <|-- DoctorCommand InteractiveCommand <|-- ReviewCommand NonInteractiveCommand <|-- ClearCommand NonInteractiveCommand <|-- CostCommand NonInteractiveCommand <|-- CompactCommand ``` ## 命令类型系统 所有命令统一使用三种基本类型: | 类型 | 说明 | 适用场景 | |------|------|----------| | `local` | 执行本地操作,返回文本结果 | 简单操作(/clear、/cost) | | `local-jsx` | 执行本地操作并渲染 React 组件 | 需要用户交互(/help、/theme) | | `prompt` | 扩展为提示文本,由模型执行 | 需要 AI 能力(/commit、/review) | ## 命令来源 ```mermaid flowchart LR A[命令来源] --> B[builtin
内置命令] A --> C[skills/
技能目录] A --> D[bundled
打包技能] A --> E[plugin
插件命令] A --> F[managed
托管命令] A --> G[mcp
MCP 技能] B --> H[commands.ts
统一注册] C --> H D --> H E --> H F --> H G --> H ``` ## 命令注册机制 命令在 `src/commands.ts` 中注册,使用 `memoize` 缓存,支持延迟加载(`load()` 按需加载实现)。使用 Fuse.js 实现模糊搜索,支持命令名称、描述和别名匹配。 ```mermaid flowchart TD A[COMMANDS memoize] --> B[核心命令注册] B --> C[loadSkillsDir
用户技能] B --> D[initBundledSkills
打包技能] B --> E[插件加载器
插件命令] F{可用性检查} --> G[meetsAvailabilityRequirement] G --> H[isCommandEnabled
功能标志/平台/环境] G --> I[availability
claude-ai/console] ``` ## 命令分类 ### 交互管理类 | 命令 | 功能 | |------|------| | `/compact` | 压缩对话上下文 | | `/clear` | 清除对话/缓存 | | `/rewind` | 回退对话状态 | | `/resume` | 恢复之前的会话 | | `/exit` | 退出程序 | | `/rename` | 重命名会话 | ### 代码工作流类 | 命令 | 功能 | |------|------| | `/commit` | 创建 Git 提交 | | `/review` | 代码审查 | | `/diff` | 查看变更 | | `/autofix-pr` | 自动修复 PR | | `/pr_comments` | 查看 PR 评论 | | `/bughunter` | Bug 搜索 | | `/plan` | 计划模式 | ### 环境和配置类 | 命令 | 功能 | |------|------| | `/config` | 设置管理 | | `/doctor` | 环境诊断 | | `/env` | 环境变量管理 | | `/permissions` | 权限管理 | | `/sandbox-toggle` | 沙盒开关 | | `/keybindings` | 快捷键配置 | | `/vim` | Vim 模式切换 | | `/theme` | 主题切换 | | `/color` | 颜色配置 | | `/output-style` | 输出样式 | | `/effort` | 思考力度设置 | | `/model` | 模型选择 | ### 认证和账户类 | 命令 | 功能 | |------|------| | `/login` | 登录 | | `/logout` | 登出 | | `/cost` | 使用成本查看 | | `/usage` | 使用量查看 | | `/extra-usage` | 额外用量 | | `/rate-limit-options` | 速率限制选项 | | `/reset-limits` | 重置限制 | | `/passes` | 使用通行证 | ### 工具集成类 | 命令 | 功能 | |------|------| | `/mcp` | MCP 服务器管理 | | `/skills` | 技能管理 | | `/plugin` | 插件管理 | | `/reload-plugins` | 重新加载插件 | | `/hooks` | 钩子管理 | | `/lsp` | LSP 管理 | ### IDE 和远程类 | 命令 | 功能 | |------|------| | `/bridge` | IDE 桥接模式 | | `/ide` | IDE 集成 | | `/desktop` | 桌面应用切换 | | `/mobile` | 移动应用切换 | | `/chrome` | Chrome 扩展集成 | | `/remote-env` | 远程环境 | | `/remote-setup` | 远程设置 | | `/teleport` | 传送(远程会话迁移) | ### 信息查看类 | 命令 | 功能 | |------|------| | `/help` | 帮助信息 | | `/context` | 上下文可视化 | | `/ctx_viz` | 上下文结构可视化 | | `/stats` | 统计信息 | | `/status` | 状态查看 | | `/cost` | 成本查看 | | `/memory` | 持久化内存管理 | | `/files` | 文件列表 | | `/session` | 会话管理 | | `/thinkback` | 回溯思考过程 | | `/thinkback-play` | 回放思考过程 | | `/summary` | 会话摘要 | | `/share` | 分享会话 | | `/export` | 导出会话 | | `/release-notes` | 更新日志 | | `/feedback` | 反馈 | ### 开发调试类 | 命令 | 功能 | |------|------| | `/debug-tool-call` | 调试工具调用 | | `/heapdump` | 堆转储 | | `/perf-issue` | 性能问题 | | `/break-cache` | 缓存清除 | | `/mock-limits` | 模拟限制 | | `/ant-trace` | 内部追踪 | | `/backfill-sessions` | 回填会话 | | `/debug` | 调试模式 | ### 特殊功能类 | 命令 | 功能 | |------|------| | `/voice` | 语音输入 | | `/add-dir` | 添加工作目录 | | `/branch` | 分支管理 | | `/tag` | 标签管理 | | `/copy` | 复制输出 | | `/onboarding` | 新手引导 | | `/upgrade` | 升级 | | `/fast` | 快速模式切换 | | `/btw` | 顺便提到 | | `/good-claude` | 正面反馈 | | `/stickers` | 贴纸 | | `/issue` | Issue 管理 | | `/install-github-app` | 安装 GitHub 应用 | | `/install-slack-app` | 安装 Slack 应用 | | `/advisor` | 顾问 | | `/agents` | 代理管理 | | `/passes` | 使用通行证 | | `/privacy-settings` | 隐私设置 | | `/terminalSetup` | 终端设置 | ## 命令执行流程 ```mermaid sequenceDiagram participant User as 用户 participant Input as TextInput participant Parser as 命令解析器 participant Registry as commands.ts participant Impl as 命令实现 participant UI as Ink 渲染 User->>Input: 输入 /commit Input->>Parser: 识别 / 前缀 Parser->>Registry: 查找命令 Registry->>Impl: 命令路由 Impl->>UI: 渲染交互界面 UI->>User: 显示结果 ``` ## 特殊命令集 | 集合 | 说明 | |------|------| | `REMOTE_SAFE_COMMANDS` | 远程模式下可安全执行的命令(不依赖本地文件系统) | | `BRIDGE_SAFE_COMMANDS` | 可通过远程控制桥接安全执行的命令 | | `immediate` 命令 | 不需要等待停止点,立即执行的命令(如 /status、/cost) |