跳到主要内容

命令系统

源码: cli/commands/ | constants/commands.ts

1. 命令分类

Claude Code 支持三类命令:

类型前缀示例
Slash 命令//help, /clear, /stats
快捷键Ctrl+Ctrl+C, Ctrl+D
自然语言直接对话

2. 内置命令

// constants/commands.ts
const BUILTIN_COMMANDS = {
help: {
name: '/help',
description: '显示帮助信息',
handler: () => showHelp()
},
clear: {
name: '/clear',
description: '清空对话历史',
handler: () => clearHistory()
},
stats: {
name: '/stats',
description: '显示 Token 使用统计',
handler: () => showStats()
},
models: {
name: '/models',
description: '列出可用模型',
handler: () => listModels()
},
compact: {
name: '/compact',
description: '压缩对话上下文',
handler: () => compactContext()
},
// ... 更多命令
}

3. 命令解析

function parseCommand(input: string): Command | null {
if (!input.startsWith('/')) return null

const [name, ...args] = input.slice(1).split(/\s+/)
const command = findCommand(name)

if (!command) {
// 尝试匹配技能
const skill = findSkill(name)
if (skill) return buildSkillCommand(skill, args)

return null
}

return { command, args }
}

4. 命令执行流程

用户输入 "/stats"


parseCommand() 解析


查找内置命令 → 找到 stats


执行 handler


显示 Token 使用统计


结果输出到终端

5. 快捷键处理

// 快捷键处理
function handleKeyPress(key: string) {
switch (key) {
case 'ctrl+c':
interruptCurrentRequest()
break
case 'ctrl+d':
exitApp()
break
case 'ctrl+l':
clearScreen()
break
case 'tab':
autoComplete()
break
}
}

6. 命令扩展

Plugin 系统允许注册自定义命令:

// 插件注册命令
ctx.registerCommand({
name: 'deploy',
description: '部署到生产环境',
handler: async (args) => {
await deployToProduction(args)
}
})

7. 完整命令列表

命令功能是否需要网络
/help帮助
/clear清空历史
/statsToken 统计
/models列出模型
/compact压缩上下文
/cost费用估算
/permissions权限设置
/quit退出

上一节:Plugins 系统 | 下一节:10 安全系统