codev / docs /cli /overview.md
chenbhao's picture
chore: rename VersperClaw to Codev, update org to chenbhao
96f34e3
|
Raw
History Blame Contribute Delete
9.84 kB
# 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/` — 工作流工具实现