Code Reader
首页
帮助
设计文档
首页
帮助
设计文档
  • Claude Code 领域模型分析

Claude Code 领域模型分析

1. 核心领域概念

1.1 主要实体一览

实体核心文件说明
Toolsrc/Tool.tsAI 可调用的工具,统一接口定义
Commandsrc/types/command.ts用户斜杠命令,三种子类型
Querysrc/query.ts一次 agentic 循环执行
QueryEnginesrc/QueryEngine.ts会话级对话管理器
Messagesrc/query.ts对话中的消息单元
AppStatesrc/state/AppStateStore.ts全局应用状态(~90 个字段)
Storesrc/state/store.ts轻量级响应式状态容器
Permissionsrc/types/permissions.ts权限决策结果
MCPConnectionsrc/services/mcp/types.tsMCP 服务器连接
BridgeWorkersrc/bridge/types.ts远程控制 Worker
Agentsrc/tools/AgentTool/子 Agent 定义与调度
Sessionsrc/bootstrap/state.ts会话生命周期

2. 核心实体关系图


3. Tool 系统领域模型

3.1 Tool 类型层次

3.2 Tool 执行生命周期

3.3 工具池组装

getAllBaseTools()              -- 43 个工具全量列表
    ↓ filterToolsByDenyRules()   -- 按权限策略过滤
    ↓ REPL 模式过滤              -- 隐藏 REPL 内部工具
    ↓ isEnabled() 过滤           -- 功能开关过滤
    ↓ + MCP 工具                 -- 合并外部工具
    ↓ uniqBy('name')             -- 去重(内置优先)
    = 最终工具池

3.4 关键工具一览

工具文件数行数核心特性
BashTool18~7000+7 层安全分析、AST 解析、sed 拦截
FileReadTool51183文件去重、PDF 支持、token 预算
AgentTool151398子 Agent 调度、后台执行、worktree 隔离
MCPTool477原型模式、运行时动态克隆
GrepTool1577ripgrep 封装、结果按 mtime 排序
WebFetchTool1318域名级权限规则、预批准主机

4. Command 系统领域模型

4.1 Command 类型层次

4.2 命令发现与优先级

4.3 命令分派流程


5. Query / 对话领域模型

5.1 Message 类型层次

5.2 Agentic 循环状态机

5.3 继续原因 (Transition Reasons)

原因说明
next_turn正常工具调用后的下一轮
reactive_compact_retry413 后响应式压缩重试
collapse_drain_retry上下文折叠排水重试
max_output_tokens_recovery输出 token 截断恢复
max_output_tokens_escalate输出 token 升级到 64k
stop_hook_blockingstop hook 产生 blocking error
token_budget_continuationtoken 预算未耗尽,自动继续

5.4 错误恢复策略


6. 状态管理模型

6.1 Store 架构

6.2 数据流

6.3 Context Provider 层级

App.tsx
  ├── FpsMetricsProvider        (FPS 指标)
  ├── StatsProvider             (统计数据)
  └── AppStateProvider          (核心应用状态)
        ├── MailboxProvider      (消息邮箱)
        ├── VoiceProvider        (语音, feature-gated)
        ├── MCPConnectionManager (MCP 连接)
        └── [子组件树]

6.4 Bootstrap State 的"上帝模块"

src/bootstrap/state.ts(1758 行)是一个全局可变状态模块,包含:

  • 会话 ID、CWD、模型设置、计费统计
  • OpenTelemetry meter/counter 引用
  • Hook 注册表(createSignal() 创建的响应式信号)
  • 会话切换函数 switchSession()

文件顶部警告:// DO NOT ADD MORE STATE HERE - BE JUDICIOUS WITH GLOBAL STATE。这反映了工程团队对全局状态膨胀的警觉。


7. 权限领域模型

7.1 权限决策类型

7.2 BashTool 权限决策(最复杂)


8. MCP 集成领域模型

8.1 MCP 服务器生命周期

8.2 配置作用域

enterprise (企业级) > local (本地) > project (项目) > user (用户) > plugin (插件)

策略过滤:黑名单绝对优先 → 白名单检查 → 默认允许。


9. 会话领域模型

9.1 会话生命周期

9.2 会话持久化

  • 会话消息持久化到 ~/.claude/projects/ 目录
  • 成本状态跨会话持久化(cost-tracker.ts)
  • 支持 --continue(最近会话)、--resume <id>(指定会话)、--fork-session(分叉)
  • Teleport 功能:跨机器会话迁移