附录 D:命令速查与源码路径

个人公众号

Claude Code CLI 命令、REPL 内命令、环境变量、核心函数索引与源码路径速查。


D.1 CLI 命令

命令说明
claude启动交互式 REPL
claude --cwd <path>指定工作目录
claude --verbose详细日志输出
claude --config <path>指定配置文件
claude -t <Tool> -- <args>直接调用单个工具
claude --list-tools列出所有可用工具
claude --allow-tool <Tool>允许指定工具执行
claude --mcp启动内置 MCP 服务器
claude --mcp-config <path>指定 MCP 配置文件
claude --list-mcp-servers列出已连接的 MCP 服务器
claude --dangerously-skip-permissions跳过权限检查(危险)
claude --permission-mode <mode>设置权限模式:prompt / bypass / fail / approve
claude --export-permissions <path>导出权限配置
claude --log-file <path>日志输出到文件
claude --profile启用性能分析
claude --heap-snapshot启动时生成堆快照
claude --memory-monitor监控内存使用

D.2 REPL 内命令

命令说明
/exit/quit退出 REPL
/help查看帮助信息
/theme dark切换深色主题
/theme light切换浅色主题
/clear清除当前对话历史
/compact压缩上下文以释放 token 空间
/skills列出所有已注册的 Skill
/review调用代码审查 Skill
/docs调用文档生成 Skill
/refactor调用重构 Skill
/test调用测试生成 Skill

自定义 Skill 以 / 前缀调用,如 /my-skill arg1 arg2


D.3 环境变量速查

变量说明取值示例
ANTHROPIC_API_KEYAnthropic API 密钥sk-ant-xxx...
CLAUDE_CODE_CONFIG自定义配置文件路径/etc/claude/config.json
CLAUDE_CODE_DATA_DIR数据存储目录~/.claude
LOG_LEVEL日志级别debug / info / warn / error
DEBUG调试模式开关true / false
NODE_ENV运行环境标识development / production
ENABLE_PROFILING性能分析开关true / false
HTTP_PROXYHTTP 代理地址http://proxy:8080
HTTPS_PROXYHTTPS 代理地址http://proxy:8080

D.4 权限模式速查

模式行为
prompt每次敏感操作询问用户(默认)
bypass完全跳过权限检查
fail无权限时直接失败,不提示
approve自动批准所有请求

D.5 核心函数索引

按功能模块分组,列出 Claude Code 源码中最关键的函数及其职责。

入口与初始化(第 3 章)

函数文件一句话描述
main()cli.tsxCLI 入口调度员,快速路径路由
main()main.tsx完整 CLI 初始化(认证、Bootstrap、工具组装)
init()init.ts一次性初始化(memoized)

消息处理(第 4 章)

函数文件一句话描述
handlePromptSubmit()handlePromptSubmit.ts处理用户提交
processUserInput()processUserInput.ts输入模式路由
processTextPrompt()processTextPrompt.ts文本输入处理
createUserMessage()messages.ts创建消息对象

查询引擎(第 5-7 章)

函数文件一句话描述
getSystemPrompt()prompts.ts组装 system prompt(静态区 + 动态区)
getSystemContext()context.ts获取 Git 状态(memoized)
getUserContext()context.ts加载 CLAUDE.md(memoized)
getMemoryFiles()claudemd.ts遍历加载 CLAUDE.md 文件
getTools()tools.ts组装工具列表
assembleToolPool()tools.ts合并内置工具 + MCP 工具
buildTool()Tool.ts工厂函数,从定义创建可执行工具对象
query()query.tsAsyncGenerator 入口,启动查询流
queryLoop()query.tswhile(true) 九步循环——核心心脏
productionDeps()deps.ts依赖注入,绑定真实 API 调用
queryModelWithStreaming()claude.ts流式 API 调用,返回 AsyncGenerator

权限系统(第 22 章)

函数文件一句话描述
hasPermissionsToUseTool()permissions.ts权限检查主入口
hasPermissionsToUseToolInner()permissions.ts分层检查实现(白名单 → 规则 → 用户确认)
bashToolHasPermission()bashPermissions.tsBash 命令安全分析
COMMAND_ALLOWLISTreadOnlyValidation.ts只读命令白名单常量
initialPermissionModeFromCLI()permissionSetup.ts根据 CLI 参数确定初始权限模式

工具执行(第 21 章)

函数文件一句话描述
addTool()StreamingToolExecutor.ts添加工具到并发执行队列
canExecuteTool()StreamingToolExecutor.ts判断工具是否满足并发安全条件
checkPermissionsAndCallTool()toolExecution.ts权限检查 + 执行的 5 步链

状态管理(第 17 章)

函数/概念文件一句话描述
State(type)query.ts循环可变状态的类型定义
三阶段恢复query.tsCollapse drain → Reactive Compact → Max Token 升级
handleStopHooks()query.ts会话结束时的 Stop hook 处理

渲染系统(第 19 章)

函数文件一句话描述
render()ink.tsxReact 树挂载到终端
onRender()ink.tsx帧渲染管线,计算布局并输出
handleMessageFromStream()messages.ts流式事件分发到状态更新
MessageImpl()Message.tsx消息类型分发渲染组件

D.6 核心源码路径

工具系统

功能源码路径
工具泛型接口src/Tool.ts
工具注册表src/tools.ts
工具执行引擎src/services/tools/toolExecution.ts

权限系统

功能源码路径
权限模式与规则引擎src/utils/permissions/permissions.ts
Bash 命令安全分析src/utils/permissions/bashPermissions.ts
只读命令白名单src/utils/permissions/readOnlyValidation.ts
拒绝追踪器src/utils/permissions/denialTracking.ts

上下文与会话

功能源码路径
消息状态管理src/state/messages.ts
上下文压缩策略src/services/compact/strategies.ts
会话创建与恢复src/state/sessions.ts

API 通信

功能源码路径
消息流(Streaming)src/services/api/claude.ts
重试逻辑src/services/api/withRetry.ts
OAuth PKCE 认证src/services/oauth/client.ts

MCP 协议

功能源码路径
MCP 连接管理src/services/mcp/connection.ts

Agent 系统

功能源码路径
Agent 任务类型定义src/services/agents/types.ts

Skills 与 Plugin

功能源码路径
Skill 目录加载src/skills/loadSkillsDir.ts
内置 Skill 注册src/skills/bundledSkills.ts
Plugin 生命周期操作src/services/plugins/pluginOperations.ts
Plugin Hook 加载src/utils/plugins/loadPluginHooks.ts

渲染与 TUI

功能源码路径
Ink 入口src/ink.tsx
消息组件src/Message.tsx
布局引擎(Yoga)Ink 内部依赖

D.7 核心数据结构速查

ContentBlock

AI 回复中每个内容块的联合类型:

1
2
3
4
type ContentBlock =
| { type: 'text'; text: string }
| { type: 'tool_use'; id: string; name: string; input: Record<string, unknown> }
| { type: 'tool_result'; tool_use_id: string; content: string }

ToolCall

一次工具调用的完整描述:

1
2
3
4
5
6
interface ToolCall {
id: string;
type: 'tool_use';
name: string;
input: Record<string, unknown>;
}

Usage

单次 API 调用的 token 用量统计:

1
2
3
4
5
interface Usage {
inputTokens: number;
outputTokens: number;
totalTokens: number;
}

PermissionMode

权限检查的行为模式枚举:

1
2
3
4
5
6
enum PermissionMode {
BYPASS = 'bypass', // 完全跳过
FAIL = 'fail', // 无权限直接失败
PROMPT = 'prompt', // 询问用户
APPROVE = 'approve', // 自动批准
}

CompactionStrategyType

上下文压缩策略选项:

1
2
3
4
5
enum CompactionStrategyType {
FULL = 'full',
MICRO = 'micro',
SESSION_MEMORY = 'session_memory',
}

CLI 参数覆盖环境变量,环境变量覆盖配置文件。当调试异常行为时,优先检查这三层优先级是否冲突。

源码路径随版本迭代可能变动。当路径失效时,以模块名(如 toolExecutiondenialTracking)为关键词全局搜索即可定位。