UI 组件与前端分析
UI 架构
Claude Code 使用 React + Ink 构建 Terminal UI,组件层次分明。
组件分类
核心布局组件
| 组件 |
文件 |
功能 |
| App |
App.tsx |
应用根组件 |
| FullscreenLayout |
FullscreenLayout.tsx |
全屏布局 |
| StatusLine |
StatusLine.tsx |
底部状态栏 |
| TextInput |
TextInput.tsx |
主输入框 |
| VimTextInput |
VimTextInput.tsx |
Vim 模式输入框 |
| PromptInput |
PromptInput/ |
提示输入组件 |
| VirtualMessageList |
VirtualMessageList.tsx |
虚拟滚动消息列表 |
消息展示组件
| 组件 |
文件 |
功能 |
| Messages |
Messages.tsx |
消息容器 |
| MessageRow |
MessageRow.tsx |
消息行 |
| Message |
Message.tsx |
单条消息 |
| MessageResponse |
MessageResponse.tsx |
响应消息 |
| MessageModel |
MessageModel.tsx |
模型信息 |
| MessageTimestamp |
MessageTimestamp.tsx |
时间戳 |
| CompactSummary |
CompactSummary.tsx |
压缩摘要 |
| Markdown |
Markdown.tsx |
Markdown 渲染 |
工具相关组件
| 组件 |
文件 |
功能 |
| ToolUseLoader |
ToolUseLoader.tsx |
工具使用加载动画 |
| BashModeProgress |
BashModeProgress.tsx |
Bash 命令进度 |
| FileEditToolDiff |
FileEditToolDiff.tsx |
文件编辑差异展示 |
| FileEditToolUpdatedMessage |
FileEditToolUpdatedMessage.tsx |
编辑更新消息 |
| StructuredDiff |
StructuredDiff.tsx |
结构化差异展示 |
| StructuredDiffList |
StructuredDiffList.tsx |
差异列表 |
对话框组件
| 组件 |
功能 |
| TrustDialog/ |
信任确认对话框 |
| MCPServerApprovalDialog |
MCP 服务器审批 |
| MCPServerMultiselectDialog |
MCP 多选对话框 |
| ExportDialog |
导出对话框 |
| AutoModeOptInDialog |
自动模式选择 |
| AutoUpdater(AutoUpdaterWrapper) |
自动更新 |
| CostThresholdDialog |
成本阈值确认 |
| BridgeDialog |
IDE 桥接对话框 |
| IdleReturnDialog |
空闲返回对话框 |
| BypassPermissionsModeDialog |
权限绕过确认 |
| WorktreeExitDialog |
Worktree 退出对话框 |
| GlobalSearchDialog |
全局搜索 |
| HistorySearchDialog |
历史搜索 |
| QuickOpenDialog |
快速打开 |
导航和信息组件
| 组件 |
功能 |
| Stats |
Stats.tsx 统计信息 |
| Spinner |
Spinner.tsx 加载动画 |
| EffortIndicator |
EffortIndicator.ts 思考力度指示 |
| ModelPicker |
ModelPicker.tsx 模型选择器 |
| ThemePicker |
ThemePicker.tsx 主题选择器 |
| LanguagePicker |
LanguagePicker.tsx 语言选择器 |
| OutputStylePicker |
OutputStylePicker.tsx 输出样式选择器 |
| ThinkingToggle |
ThinkingToggle.tsx 思考模式切换 |
| FastIcon |
FastIcon.tsx 快速模式图标 |
| ContextVisualization |
ContextVisualization.tsx 上下文可视化 |
团队和代理组件
| 组件 |
功能 |
| CoordinatorAgentStatus |
协调器代理状态 |
| AgentProgressLine |
代理进度行 |
| TeammateViewHeader |
队友视图头部 |
| TaskListV2 |
任务列表 V2 |
| PrBadge |
PR 徽章 |
IDE 集成组件
| 组件 |
功能 |
| IdeStatusIndicator |
IDE 状态指示器 |
| IdeAutoConnectDialog |
IDE 自动连接 |
| IdeOnboardingDialog |
IDE 新手引导 |
| ShowInIDEPrompt |
在 IDE 中显示提示 |
| FilePathLink |
文件路径链接 |
| LogSelector |
日志选择器 |
Vim 模式
快捷键系统
React Hooks
项目包含约 70 个自定义 React Hooks:
核心 Hooks
| Hook |
功能 |
useCanUseTool |
工具权限检查 |
useMergedTools |
合并内置和 MCP 工具 |
useMergedCommands |
合并命令列表 |
useMergedClients |
合并客户端 |
useMainLoopModel |
主循环模型管理 |
useGlobalKeybindings |
全局快捷键 |
useCommandKeybindings |
命令快捷键 |
useTextInput |
文本输入管理 |
状态 Hooks
| Hook |
功能 |
useDynamicConfig |
动态配置 |
useSettings |
设置管理 |
useSettingsChange |
设置变更监听 |
useTasksV2 |
任务管理 V2 |
useTaskListWatcher |
任务列表监听 |
useMemoryUsage |
内存使用 |
useScheduledTasks |
定时任务 |
IDE 集成 Hooks
| Hook |
功能 |
useIDEIntegration |
IDE 集成 |
useIdeSelection |
IDE 选择 |
useIdeAtMentioned |
IDE @ 提及 |
useIdeConnectionStatus |
IDE 连接状态 |
useIdeLogging |
IDE 日志 |
会话 Hooks
| Hook |
功能 |
useReplBridge |
REPL Bridge |
useRemoteSession |
远程会话 |
useSSHSession |
SSH 会话 |
useSessionBackgrounding |
会话后台化 |
useBackgroundTaskNavigation |
后台任务导航 |
代理 Hooks
| Hook |
功能 |
useSwarmInitialization |
集群初始化 |
useSwarmPermissionPoller |
集群权限轮询 |
useTeammateViewAutoExit |
队友视图自动退出 |
其他 Hooks
| Hook |
功能 |
useVoiceIntegration / useVoice |
语音集成 |
useClipboardImageHint |
剪贴板图片提示 |
usePasteHandler |
粘贴处理 |
useTypeahead |
自动补全 |
useHistorySearch |
历史搜索 |
useDiffData |
差异数据 |
useDiffInIDE |
IDE 差异显示 |
useVirtualScroll |
虚拟滚动 |
useTerminalSize |
终端尺寸 |
useCommandQueue |
命令队列 |
设计系统 (design-system/)
内置组件库提供一致的 UI 基础:
| 组件 |
功能 |
| ThemedBox / ThemedText |
主题感知的容器/文本 |
| Dialog |
对话框组件 |
| Tabs |
标签页组件 |
| Button |
按钮组件 |
| ProgressBar |
进度条 |
| FuzzyPicker |
模糊选择器 |
| CheckboxInput |
复选框输入 |
布局系统
使用 Yoga Layout(Flexbox 引擎)进行终端布局计算,支持:
- Flexbox 弹性布局
- 响应式终端尺寸适配
- 基于
useTerminalSize 的动态调整
主题系统
Buddy 伙伴精灵 (buddy/)
终端伙伴精灵系统,提供视觉陪伴和交互反馈: