| # CLI 命令系统 |
|
|
| ## 架构概述 |
|
|
| ### 入口 |
|
|
| CLI 入口由 **Commander.js** 解析命令行参数,随后启动 **REPL**(交互式循环)。REPL 负责接收用户输入、解析斜杠命令、调用对应的处理函数。 |
|
|
| ### 命令注册 |
|
|
| 命令通过 **6 种来源** 注册到系统: |
|
|
| | 来源 | 说明 | 注册位置 | |
| |------|------|----------| |
| | **内置命令** | `COMMANDS()` 函数返回的核心命令列表 | `src/commands.ts:261-354` | |
| | **内置技能** | 随 CLI 打包的 Markdown 技能文件 | `getBundledSkills()` | |
| | **内置插件** | 内置插件导出的技能命令 | `getBuiltinPluginSkillCommands()` | |
| | **用户技能目录** | 用户自定义的 Markdown 技能文件 | `getSkillDirCommands()` | |
| | **工作流** | 多步骤脚本工作流 | `getWorkflowCommands()` | |
| | **市场插件** | 从插件市场安装的外部插件 | `getPluginCommands()`, `getPluginSkills()` | |
|
|
| ### 命令过滤 |
|
|
| `getCommands()` 是命令的最终汇聚函数,执行以下过滤: |
|
|
| 1. **availability 检查**:`meetsAvailabilityRequirement()` — 验证当前用户是否有权限(如 claude.ai 订阅者、Console API 用户) |
| 2. **isEnabled 检查**:`isCommandEnabled()` — feature flag 控制是否启用 |
| 3. **去重**:内置命令与动态技能(`getDynamicSkills()`)间去重,内置命令优先 |
| 4. **动态技能插入**:在插件命令之后、内置命令之前插入 |
|
|
| ### 远程模式过滤 |
|
|
| `REMOTE_SAFE_COMMANDS` 集合定义了可在 `--remote` 模式下安全使用的命令(仅影响本地 TUI 状态)。 |
|
|
| `BRIDGE_SAFE_COMMANDS` 和 `isBridgeSafeCommand()` 定义了可通过 Remote Control bridge(移动端/web 客户端)执行的命令。 |
|
|
| --- |
|
|
| ## 内置命令详表 |
|
|
| 以下为 `COMMANDS()` 中注册的所有内置命令,按功能分组: |
|
|
| ### 导航与信息 |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/help` | - | 显示帮助信息,列出所有可用命令 | |
| | `/clear` | - | 清屏,重置终端显示 | |
| | `/exit` | - | 退出 CLI | |
| | `/init` | - | 在项目中初始化 Claude Code 配置文件 | |
| | `/resume` | - | 恢复之前的会话 | |
| | `/status` | - | 显示当前会话状态 | |
| | `/stats` | - | 统计信息和指标 | |
|
|
| ### 配置管理 |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/config` | - | 系统设置管理(theme, model, permissions 等) | |
| | `/model` | - | 切换 AI 模型 | |
| | `/theme` | - | 切换终端主题 | |
| | `/color` | - | 更改 AI 回复颜色 | |
| | `/permissions` | - | 权限模式管理 | |
| | `/privacySettings` | - | 隐私设置 | |
| | `/outputStyle` | - | 输出风格切换 | |
| | `/statusline` | - | 状态行开关 | |
| | `/effort` | - | 设置思考/推理投入度 | |
| | `/fast` | - | 快速模式切换 | |
| | `/env` | ant 内部 | 环境变量管理 | |
| | `/remoteEnv` | - | 远程环境变量管理 | |
| | `/passes` | - | 管理预设的 always-allow/always-deny 规则 | |
|
|
| ### 会话管理 |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/session` | - | 会话管理(分享、导出、查看记录) | |
| | `/cost` | - | 显示当前会话费用 | |
| | `/usage` | - | 显示 API 用量 | |
| | `/compact` | - | 压缩上下文,减少 token 消耗 | |
| | `/copy` | - | 复制最后一条消息 | |
| | `/rename` | - | 重命名当前会话 | |
| | `/tag` | - | 为会话添加标签 | |
| | `/btw` | - | 快速记笔记,补充上下文 | |
| | `/rewind` | - | 回滚到之前的对话状态 | |
|
|
| ### 工具与技能 |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/skills` | - | 管理技能(列出、启用、禁用) | |
| | `/mcp` | - | MCP 服务器管理(添加、连接、查看) | |
| | `/plugin` | - | 插件管理 | |
| | `/reloadPlugins` | - | 重新加载所有插件 | |
| | `/hooks` | - | 钩子系统管理 | |
| | `/keys` / `/keybindings` | - | 快捷键管理 | |
| | `/add-dir` | - | 添加技能目录 | |
| | `/terminalSetup` | - | 终端设置工具 | |
|
|
| ### 语音与 Friend |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/voice` | feature 控制 | 语音听写模式 | |
| | `/friend` | - | Friend 虚拟宠物管理 | |
| | `/thinkback` | - | Thinkback 回放 | |
| | `/thinkbackPlay` | - | Thinkback 播放控制 | |
|
|
| ### Goal 与规划 |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/goal` / `/goals` | - | 目标管理(创建、查看、更新) | |
| | `/plan` | - | 规划模式切换 | |
| | `/ultraplan` | feature 控制 | 高级规划模式 | |
| | `/agent` / `/agents` | - | 代理管理(列出、配置) | |
| | `/tasks` | - | 后台任务管理 | |
|
|
| ### Git 与文件 |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/diff` | - | 显示 Git diff | |
| | `/branch` | - | 分支管理 | |
| | `/files` | - | 显示会话中跟踪的文件 | |
| | `/commit` | ant 内部 | 创建 Git 提交 | |
| | `/commit-push-pr` | ant 内部 | 提交、推送、创建 PR | |
| | `/fork` | feature 控制 | Fork 子代理 | |
| | `/buddy` | feature 控制 | 协作编程伙伴 | |
|
|
| ### 集成与外部服务 |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/login` | - | 登录(非 3P 用户) | |
| | `/logout` | - | 登出 | |
| | `/feishu` | - | 飞书集成 | |
| | `/telegram` | - | Telegram 集成 | |
| | `/desktop` | - | 桌面应用模式 | |
| | `/mobile` | - | 移动端二维码 | |
| | `/install-github-app` | - | 安装 GitHub App | |
| | `/install-slack-app` | - | 安装 Slack App | |
| | `/bridge` | feature 控制 | 桥接模式 | |
| | `/peers` | feature 控制 | UDS 对等节点管理 | |
| | `/subscribe-pr` | feature 控制 | 订阅 PR 通知 | |
|
|
| ### 诊断与开发 |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/doctor` | - | 系统诊断,检查配置和依赖 | |
| | `/upgrade` | - | 升级 CLI 版本 | |
| | `/version` | ant 内部 | 显示版本信息 | |
| | `/heapdump` | - | 堆转储(调试用) | |
| | `/sandbox-toggle` | - | 沙箱模式开关 | |
| | `/debug-tool-call` | ant 内部 | 调试工具调用 | |
| | `/perf-issue` | ant 内部 | 性能问题报告 | |
| | `/ant-trace` | ant 内部 | Ant 追踪 | |
| | `/oauth-refresh` | ant 内部 | OAuth token 刷新 | |
| | `/color` | - | 更改 AI 颜色 | |
| | `/stickers` | - | 贴纸管理 | |
|
|
| ### 反馈与分析 |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/feedback` | - | 发送反馈 | |
| | `/review` | - | 代码审查 | |
| | `/ultrareview` | - | 深度代码审查 | |
| | `/security-review` | - | 安全审查 | |
| | `/insights` | - | 会话分析报告 | |
| | `/extra-usage` | - | 额外用量显示 | |
| | `/rate-limit-options` | - | 速率限制选项 | |
| | `/summary` | ant 内部 | 会话摘要生成 | |
| | `/share` | ant 内部 | 分享会话 | |
| | `/release-notes` | - | 版本发布说明 | |
| | `/cost` | - | 会话费用 | |
| | `/usage` | - | 使用情况 | |
|
|
| ### 实验性 & Feature-gated |
|
|
| | 命令 | 别名 | 描述 | |
| |------|------|------| |
| | `/proactive` | feature 控制 | 主动模式 | |
| | `/brief` | feature 控制 | 简报模式 | |
| | `/assistant` | feature 控制 | 助手模式 | |
| | `/torch` | feature 控制 | Torch 调试工具 | |
| | `/web` / `/remote-setup` | feature 控制 | 远程设置 | |
| | `/workflows` | feature 控制 | 工作流管理 | |
| | `/force-snip` | feature 控制 | 强制截断上下文 | |
| | `/remoteControlServer` | feature 控制 | 远程控制服务器 | |
| | `/buddy` | feature 控制 | 编程伙伴 | |
| | `/agents-platform` | ant 内部 | 代理平台管理 | |
| | `/bughunter` | ant 内部 | Bug 猎人工具 | |
| | `/autofix-pr` | ant 内部 | 自动修复 PR | |
| | `/backfill-sessions` | ant 内部 | 回填会话数据 | |
| | `/issue` | ant 内部 | 问题管理 | |
| | `/onboarding` | ant 内部 | 引导流程 | |
| | `/teleport` | ant 内部 | 远程会话跳转 | |
| | `/good-claude` | ant 内部 | 内部工具 | |
| | `/ctx_viz` | ant 内部 | 上下文可视化 | |
| | `/mock-limits` | ant 内部 | Mock 限制测试 | |
| | `/bridge-kick` | ant 内部 | 桥接踢出 | |
| | `/reset-limits` | ant 内部 | 重置限制 | |
|
|
| --- |
|
|
| ## Skill 系统 |
|
|
| 技能(Skills)是以 Markdown 文件形式定义的提示词模板,可被 LLM 或用户调用。技能系统分为: |
|
|
| - **打包技能(Bundled Skills)**:随 CLI 发布的内置 `.md` 文件 |
| - **用户技能目录(Skill Dir Commands)**:用户在工作区 `./claude/skills/` 或全局 `~/.claude/skills/` 中定义的技能 |
| - **插件技能(Plugin Skills)**:从插件加载的技能 |
| - **MCP 技能**:通过 MCP 协议提供的技能(`getMcpSkillCommands()`) |
|
|
| 技能文件的 YAML frontmatter 定义 `name`、`description`、`model` 等属性,正文为发送给 LLM 的提示词。 |
|
|
| ### 技能相关工具 |
|
|
| - `SkillTool`:AI 可调用的技能执行工具 |
| - `getSkillToolCommands()`:获取所有可被模型调用的 prompt 类型命令 |
| - `getSlashCommandToolSkills()`:获取斜杠命令可用的技能列表 |
|
|
| --- |
|
|
| ## 工作流系统 |
|
|
| 工作流(Workflows)是通过 `WorkflowTool` 实现的多步骤脚本,支持: |
|
|
| - 顺序执行多个步骤 |
| - 条件分支 |
| - 变量传递 |
| - 用户确认点 |
|
|
| 当 `WORKFLOW_SCRIPTS` feature flag 启用时,工作流命令通过 `createWorkflowCommand()` 注册。 |
|
|
| --- |
|
|
| ## 命令类型 |
|
|
| `Command` 类型包括三种变体: |
|
|
| | 类型 | 说明 | |
| |------|------| |
| | `prompt` | 扩展为提示词发送给模型(技能、工作流) | |
| | `local` | 本地执行,输出纯文本 | |
| | `local-jsx` | 本地执行,渲染 Ink UI 组件 | |
|
|
| --- |
|
|
| ## 配置管理 |
|
|
| `/config` 命令管理系统设置。配置值存储在: |
|
|
| - **用户设置**:`~/.claude/settings.json` |
| - **项目设置**:`.claude/settings.json`(项目级覆盖) |
| - **会话设置**:仅当前会话有效 |
|
|
| 支持的配置项包括 theme、model、permissions(权限模式)、音效、通知等。 |
|
|
| 相关文件: |
| - `/home/yuki/Code/Agent/Codev/src/commands.ts` — 命令注册与过滤核心 |
| - `/home/yuki/Code/Agent/Codev/src/types/command.ts` — Command 类型定义 |
| - `/home/yuki/Code/Agent/Codev/src/skills/loadSkillsDir.ts` — 技能目录加载 |
| - `/home/yuki/Code/Agent/Codev/src/tools/WorkflowTool/` — 工作流工具实现 |
|
|