Skip to content

10 — 命令系统 — Commands

概述

命令系统处理用户在 REPL 中输入的 斜杠命令/command)。它与 Tool 系统的区别是:

  • Tool 是模型调用的——模型决定什么时候用什么工具
  • Command 是用户调用的——用户通过 /xxx 直接触发

但两者有交集:某些命令(如 /compact)实际上调用了底层的服务(Compact Service),某些工具(如 SkillTool)实际上执行的是命令/Skill。

命令注册与路由

Command 接口

typescript
interface Command {
  name: string                    // 命令名 (如 "compact")
  description: string             // 描述
  aliases?: string[]              // 别名 (如 compact 的别名 "c")
  isEnabled?: (state) => boolean  // 运行时条件启用
  isHidden?: boolean              // 是否在帮助中隐藏
  
  // 两种执行方式 (通常二选一):
  call?(args, context): Promise<CommandResult>   // 后台执行,返回结果
  userFacingComponent?(props): ReactNode          // 交互式 UI 组件
}

两种执行方式的区别

  • call() 适用于简单命令——执行后返回结果文本,不需要用户交互
  • userFacingComponent() 适用于复杂命令——渲染一个 React 组件,支持用户交互(如选择、确认)

模糊匹配

用户不需要输入完整命令名。/com 可以匹配到 /compact/con 可以匹配到 /config/context。如果有多个匹配,会提示歧义让用户选择。

命令分类

📝 会话管理

命令说明实现方式
/clear清除对话历史重置 messages 数组
/compact压缩上下文调用 Compact Service
/resume恢复历史会话读取会话存储,渲染选择器
/session会话管理 (列表/切换)UI 组件
/export导出对话为文件序列化 messages
/share分享对话上传到 API + 生成链接
/rename重命名会话修改会话元数据
/copy复制到剪贴板序列化最后回复
/summary生成摘要调用模型
/rewind回退到之前的消息截断 messages

⚙️ 模型与配置

命令说明实现方式
/model切换模型修改 AppState.mainLoopModel
/config查看/修改配置读写 settings.json
/theme主题切换修改颜色方案
/fast切换 Fast 模式切换模型输出速度
/effort设置推理努力级别修改 effort 参数
/output-style输出风格修改输出格式
/permissions权限管理查看/修改权限规则
/sandbox-toggle沙箱开关切换沙箱状态

🔌 工具与扩展

命令说明实现方式
/mcpMCP 服务器管理列出/连接/断开 MCP 服务器
/plugin插件管理安装/卸载/启用/禁用插件
/skills技能管理列出可用 Skills
/hooks用户钩子管理查看已配置的 Hooks
/ideIDE 集成设置配置 VS Code/JetBrains 集成
/terminalSetup终端设置配置终端快捷键/集成

🔐 账户与认证

命令说明
/login登录 Anthropic 账户
/logout登出
/install-github-app安装 GitHub App
/install-slack-app安装 Slack App

📊 信息查看

命令说明
/help帮助信息
/status系统状态
/stats会话统计
/cost费用查看
/usageToken 用量
/doctor诊断(检查环境是否正确配置)
/context上下文信息(剩余 token、压缩状态等)
/files会话中涉及的文件列表

🧪 功能模式

命令说明
/vim切换 Vim 编辑模式
/voice语音模式
/plan规划模式(限制写操作)
/tasks查看后台任务
/review代码审查模式
/memory查看/管理记忆
/keybindings快捷键设置

🔧 Git 相关

命令说明
/diff查看文件 diff
/branch分支管理

其他

命令说明
/feedback提交反馈
/good-claude正面反馈(对模型好的回复点赞)
/upgrade升级 Claude Code
/teleportTeleport(跨设备迁移会话)
/desktopDesktop App 提示
/mobileMobile App 提示
/bughunterBug 猎手模式
/add-dir添加额外工作目录
/stickers贴纸(彩蛋)

Feature-gated 命令

某些命令只在特定构建版本中可用:

typescript
const bridge = feature('BRIDGE_MODE')
  ? require('./commands/bridge/index.js').default : null

const voiceCommand = feature('VOICE_MODE')
  ? require('./commands/voice/index.js').default : null

这些命令在不支持的构建中不会出现在帮助列表中。

命令与 Query 循环的交互

某些命令会产生消息注入到对话中,触发 Query 循环。例如:

这种模式让命令可以复用模型的能力,而不需要自己实现逻辑。