OpenCode(Claude Code)核心架构分析 — 源码文件树、核心循环、设计亮点
OpenCode(Claude Code)核心架构分析
源码路径:
~/code/opencode/claudecode/
语言:TypeScript + React(Ink 终端 UI)
运行时:Bun(不是 npm/yarn/pnpm)
分析深度:基于源码结构 + 关键文件行数统计
一、整体架构
┌─────────────────────────────────────────────────────────────────────────────┐
│ 入口层(entrypoints) │
│ │
│ cli.tsx (302 LOC) │
│ ├── --version → 零模块加载,直接返回版本号 │
│ ├── --dump-system-prompt → 输出系统提示词后退出(Ant-only) │
│ ├── --claude-in-chrome-mcp → MCP 服务器模式 │
│ ├── --daemon-worker=<kind> → 后台工作进程(Lean 模式) │
│ ├── remote-control/rc/bridge/sync → 桥接模式(feature BRIDGE_MODE) │
│ ├── daemon [subcommand] → 常驻守护进程 │
│ ├── ps|logs|attach|kill|--bg → 会话管理(~/.claude/sessions/) │
│ ├── new|list|reply → 模板作业(feature TEMPLATES) │
│ └── [default] → 加载 main.tsx(完整 CLI) │
└──────────────────────────────────┬──────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ main.tsx (4,683 LOC) │
│ │
│ 启动阶段(三并行预处理): │
│ ├── profileCheckpoint — 性能埋点(入口时刻) │
│ ├── startMdmRawRead — MDM 子进程并行读取(macOS 配置) │
│ └── startKeychainPrefetch — Keychain 并行预读(OAuth + API Key) │
│ │
│ 条件导入(Dead Code Elimination): │
│ ├── feature('COORDINATOR_MODE') → ./coordinator/coordinatorMode.js │
│ └── feature('KAIROS') → ./assistant/index.js(Agent 模式) │
│ │
│ 初始化阶段: │
│ ├── init() — 遥测、配置加载 │
│ ├── fetchBootstrapData() — 引导数据获取 │
│ ├── loadPolicyLimits() — 组织策略限制加载 │
│ ├── initializeGrowthBook() — Feature Flag 服务 │
│ └── renderAndRun() — Ink UI 渲染 │
└──────────────────────────────────┬──────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Ink UI 层(React Terminal) │
│ │
│ screens/ — 独立功能界面:REPL、ResumeConversation、Doctor │
│ components/ — 100+ Ink React 组件 │
│ ink.ts — Ink Root 定义 │
│ │
│ buddy/ — 伴侣精灵(Companion Sprite)动画与通知 │
│ keybindings/ — 快捷键解析、绑定管理(11 个文件) │
│ outputStyles/ — 输出样式加载 │
└──────────────────────────────────┬──────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 核心状态与消息循环 │
│ │
│ bootstrap/state.ts (1,758 LOC) — 全局 AppState(56KB 压缩后) │
│ query.ts (1,729 LOC) — 对话循环核心 │
│ context.ts — 系统上下文 / 用户上下文 │
│ history.ts — 会话历史 │
│ tasks.ts — 任务状态管理 │
│ dialogLaunchers.tsx — 对话框启动器 │
└──────────────────────────────────┬──────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 工具系统(Tools) │
│ │
│ tools.ts (389 LOC) — 工具注册中心(40+ 工具) │
│ Tool.ts (792 LOC) — Tool 接口定义 │
│ tools/ — 44 个工具子目录 │
│ BashTool, AgentTool, FileReadTool, FileEditTool, FileWriteTool │
│ WebSearchTool, WebFetchTool, GrepTool, GlobTool, Task*, Skill* │
│ NotebookEditTool, REPLTool, LSPTool, ExitPlanModeTool │
│ TeamCreateTool, TeamDeleteTool, SendMessageTool │
│ SleepTool, CtxInspectTool, WebBrowserTool, WorkflowTool ... │
│ │
│ services/tools/ — 工具编排层(toolOrchestration) │
│ services/mcp/ — MCP 客户端 + 服务器(client.ts 3,348 LOC) │
└──────────────────────────────────┬──────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 命令系统(Commands) │
│ │
│ commands.ts (754 LOC) — 命令定义(/slash 命令) │
│ commands/ — 86 个命令子目录 │
│ login, logout, model, config, context, compact, diff, review │
│ mcp, skills, tasks, session, plan, resume, share, theme │
│ install-github-app, install-slack-app, doctor, feedback ... │
│ │
│ cli/ — CLI 处理器与传输层 │
│ handlers/ — 命令处理程序 │
│ transports/ — 7 种传输方式:local/remote/stdio/… │
│ bg.js — 后台会话管理 │
└──────────────────────────────────┬──────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 支撑服务层(Services) │
│ │
│ api/claude.ts (3,419 LOC) — Anthropic API 调用(含重试逻辑) │
│ api/filesApi.ts — 文件下载(parseFileSpecs) │
│ compact/ — 上下文压缩(autoCompact + reactiveCompact)│
│ analytics/ — GrowthBook + Telemetry │
│ lsp/ — LSP 集成 │
│ plugins/ — 插件系统(pluginLoader.ts 3,302 LOC) │
│ mcp/ — Model Context Protocol 客户端/服务端 │
│ oauth/ — OAuth 认证 │
│ policyLimits/ — 组织策略限制 │
└──────────────────────────────────┬──────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 存储与会话层 │
│ │
│ utils/sessionStorage.ts (5,105 LOC) — SQLite 会话存储 │
│ utils/attachments.ts (3,997 LOC) — 附件处理(图片/文件) │
│ utils/messages.ts (5,512 LOC) — 消息规范化与工具结果 │
│ memdir/ — 记忆目录(memory snapshot) │
│ state/AppState.ts — React 状态管理 │
└─────────────────────────────────────────────────────────────────────────────┘
二、源码文件树(精简版)
仅列出有注释说明的模块/文件,
__init__.py类文件和 node_modules 已省略。
claudecode/src/
│
├── main.tsx # 完整 CLI 入口(4,683 LOC)
├── entrypoints/
│ ├── cli.tsx # CLI 快速路径(302 LOC,零导入版本检测)
│ ├── init.ts # 初始化(遥测、配置、策略)
│ └── agentSdkTypes.ts # SDK 类型定义
│
├── bootstrap/
│ └── state.ts # 全局 AppState(1,758 LOC)
│
├── query.ts # 核心对话循环(1,729 LOC)
├── context.ts # 系统/用户上下文
├── history.ts # 会话历史
├── tasks.ts # 任务状态管理
├── Task.ts # Task 接口(7 种任务类型)
├── Tool.ts # Tool 接口定义(792 LOC)
├── tools.ts # 工具注册中心(389 LOC)
│
├── commands.ts # 命令定义(754 LOC)
├── commands/ # 86 个命令子目录
│ ├── login/, logout/ # 认证
│ ├── model/, config/ # 模型与配置
│ ├── context/, compact/ # 上下文管理
│ ├── diff/, review/ # 代码审查
│ ├── mcp/, skills/ # 扩展
│ ├── tasks/, session/ # 任务与会话
│ ├── plan/, resume/ # 计划模式
│ ├── doctor/, feedback/ # 健康检查与反馈
│ ├── install-github-app/, # GitHub App 安装
│ └── install-slack-app/, # Slack App 安装
│
├── tools/ # 44 个工具实现
│ ├── BashTool/ # Shell 命令执行
│ ├── AgentTool/ # 子 Agent 委托
│ ├── FileReadTool/ # 文件读取(含图片处理)
│ ├── FileEditTool/ # 文件编辑(diff 解析)
│ ├── FileWriteTool/ # 文件写入
│ ├── GlobTool/ GrepTool/ # 文件搜索
│ ├── WebSearchTool/ # 网页搜索
│ ├── WebFetchTool/ # 网页抓取
│ ├── TaskCreateTool/, TaskGetTool/, TaskUpdateTool/, TaskListTool/ # 任务管理
│ ├── SkillTool/ # Skill 加载
│ ├── REPLTool/ # REPL 虚拟机
│ ├── NotebookEditTool/ # Jupyter 笔记本
│ ├── LSPTool/ # 语言服务器协议
│ ├── ExitPlanModeTool/ # 退出计划模式
│ ├── TeamCreateTool/, TeamDeleteTool/ # 团队(多 Agent)
│ ├── SendMessageTool/ # 发送消息
│ ├── SleepTool/ # 延迟(主动模式)
│ ├── CtxInspectTool/ # 上下文检查(CONTEXT_COLLAPSE)
│ ├── WebBrowserTool/ # 浏览器自动化(WEB_BROWSER_TOOL)
│ ├── WorkflowTool/ # 工作流脚本
│ ├── CronCreateTool/, CronDeleteTool/, CronListTool/ # 定时任务
│ ├── MonitorTool/ # 监控(MONITOR_TOOL)
│ └── environments/ # 终端执行环境(local, ssh, docker…)
│
├── services/
│ ├── api/
│ │ ├── claude.ts # Anthropic API 调用(3,419 LOC)
│ │ ├── filesApi.ts # 文件解析下载
│ │ ├── bootstrap.ts # 引导数据
│ │ └── errors.ts # 错误定义
│ ├── compact/ # 上下文压缩(autoCompact)
│ │ ├── autoCompact.ts # 自动压缩阈值检测
│ │ └── compact.ts # 压缩执行
│ ├── mcp/
│ │ ├── client.ts # MCP 客户端(3,348 LOC)
│ │ ├── auth.ts # MCP 认证(2,465 LOC)
│ │ └── officialRegistry.ts # 官方 MCP 注册表
│ ├── analytics/ # GrowthBook + 遥测
│ ├── plugins/
│ │ ├── pluginLoader.ts # 插件加载器(3,302 LOC)
│ │ └── marketplaceManager.ts # 插件市场管理
│ ├── lsp/ # 语言服务器协议
│ ├── oauth/ # OAuth
│ └── tools/
│ └── StreamingToolExecutor.ts # 流式工具执行
│
├── utils/
│ ├── messages.ts # 消息规范化(5,512 LOC)
│ ├── sessionStorage.ts # SQLite 会话存储(5,105 LOC)
│ ├── hooks.ts # 钩子系统(5,022 LOC)
│ ├── bash/
│ │ ├── bashParser.ts # Shell 解析(4,436 LOC)
│ │ └── ast.ts # Bash AST(2,679 LOC)
│ ├── attachments.ts # 附件处理(3,997 LOC)
│ ├── config.ts # 配置管理
│ ├── auth.ts # 认证
│ ├── permissions/ # 权限系统
│ ├── plugins/ # 插件工具
│ ├── model/ # 模型选择
│ ├── settings/ # 设置管理(含 MDM)
│ └── secureStorage/ # 安全存储
│
├── state/
│ └── AppState.tsx # React 状态
│
├── components/ # 100+ Ink React 组件
│ ├── Spinner.tsx # 旋转动画
│ ├── ConfirmDialog.tsx # 确认对话框
│ ├── Text.tsx, Box.tsx … # Ink 基础组件
│ └── screens/ # 全屏界面
│ ├── REPL.tsx # REPL 界面
│ ├── ResumeConversation.tsx # 恢复对话
│ └── Doctor.tsx # 诊断界面
│
├── hooks/ # React Hooks
│ ├── useCanUseTool.ts # 工具权限检查
│ └── useMergedTools.ts # 工具合并
│
├── bridge/ # 桥接模式(BRIDGE_MODE)
│ ├── bridgeMain.ts # 桥接主逻辑(2,999 LOC)
│ └── replBridge.ts # REPL 桥接
│
├── coordinator/ # 协调者模式(COORDINATOR_MODE)
│ └── coordinatorMode.ts # 多 Agent 协调
│
├── assistant/ # Agent 模式(KAIROS)
│ └── sessionHistory.ts # Agent 会话历史
│
├── memdir/ # 记忆目录
│ ├── memoryScan.ts # 记忆扫描
│ ├── findRelevantMemories.ts # 相关记忆查找
│ └── memoryAge.ts # 记忆生命周期
│
├── cli/
│ ├── bg.js # 后台会话管理
│ ├── handlers/ # 命令处理器
│ │ ├── templateJobs.ts # 模板作业
│ │ └── ...
│ └── transports/ # 传输层(7 种)
│ ├── local.ts, remote.ts, stdio.ts …
│
├── server/ # API 服务器
├── ink.ts # Ink Root
├── replLauncher.tsx # REPL 启动器
│
├── native-ts/
│ └── yoga-layout/ # Yoga 布局引擎(C++ → TS)
│
├── daemon/ # 守护进程
│ ├── main.ts # Daemon 主入口
│ └── workerRegistry.ts # Worker 注册表
│
├── plugins/context_engine/ # 上下文引擎插件
├── plugins/memory/ # 记忆提供方插件
│
├── skills/ # 内置 Skill
│ └── ...
│
├── migrations/ # 数据库迁移
│
├── types/
│ ├── message.ts # 消息类型
│ ├── permissions.ts # 权限类型
│ ├── tools.ts # 工具进度类型
│ ├── ids.ts # SessionId、AgentId
│ └── hooks.ts # 钩子类型
│
├── constants/
│ ├── prompts.ts # 系统提示词
│ ├── oauth.ts # OAuth 配置
│ └── tools.ts # 工具常量
│
├── schemas/ # JSON Schema 定义
│
├── keybindings/ # 快捷键系统(11 个文件)
│ ├── parser.ts, resolver.ts # 解析与绑定
│ ├── defaultBindings.ts # 默认快捷键
│ └── loadUserBindings.ts # 用户绑定加载
│
├── outputStyles/ # 输出样式系统
├── voice/ # 语音模式
├── vim/ # Vim 集成
├── more right/ # 权限扩展
│
└── vendor/ # 外部源码
├── audio-capture/ # 音频捕获
├── image-processor/ # 图片处理
├── modifiers-napi/ # NAPI 修饰器
└── url-handler/ # URL 处理
三、核心循环(query.ts,~1,729 LOC)
3.1 对话循环生命周期
用户输入
│
▼
query.ts → runQuery()
│
├── 1. 解析命令(isSlashCommand / getCommandsByMaxPriority)
│ → 若是 / 命令,路由到 commands/ 对应处理器
│
├── 2. 构建消息
│ → createUserMessage() / createSystemMessage()
│ → prependUserContext()(用户上下文)
│ → appendSystemContext()(系统上下文)
│ → createAttachmentMessage()(附件处理)
│
├── 3. 上下文压缩检查
│ → isAutoCompactEnabled()
│ → calculateTokenWarningState()
│ → 若超阈值 → buildPostCompactMessages()
│
├── 4. 权限检查(PreToolUse Hooks)
│ → canUseTool() 对每个工具调用检查权限
│
├── 5. API 调用(normalizeMessagesForAPI → api/claude.ts)
│ → streaming 或 blocking
│ → 若超 token 限制 → ESCALATED_MAX_TOKENS
│
├── 6. 处理流式响应
│ → StreamingToolExecutor 执行工具调用
│ → runTools() 编排工具执行
│
├── 7a. 若有 tool_calls → 追加 tool result,循环回步骤 1
│ → recordContentReplacement() 工具结果预算
│
└── 7b. 若为最终响应 → 保存会话历史
→ extractMemories() 记忆提取
→ executePostSamplingHooks()
3.2 消息规范化
所有消息在 utils/messages.ts(5,512 LOC)中统一规范化:
normalizeMessagesForAPI(messages: Message[])
// 转换为 Anthropic API 格式
// 处理 tool_calls / tool_result 配对
// 剥离签名块 stripSignatureBlocks()
// 生成工具摘要 createToolUseSummaryMessage()
3.3 上下文压缩
双重压缩机制(与 Hermes 类似但更早介入):
| 阶段 | 触发条件 | 执行位置 |
|---|---|---|
| 自动压缩(autoCompact) | 上下文 >85% | services/compact/autoCompact.ts |
| 响应后压缩(postCompact) | API 响应后检查 | services/compact/compact.ts |
| 反应式压缩(reactiveCompact) | feature('REACTIVE_COMPACT') |
services/compact/reactiveCompact.ts |
| 上下文折叠(contextCollapse) | feature('CONTEXT_COLLAPSE') |
services/contextCollapse/ |
四、工具系统(Tool System)
4.1 Tool 接口设计
每个工具实现 Tool 接口,核心方法:
interface Tool<Input, Output, P extends ToolProgressData> {
name: string // 唯一标识
aliases?: string[] // 向后兼容别名
inputSchema: Input // Zod 输入 schema
outputSchema?: z.ZodType // Zod 输出 schema
// 核心方法
call(args, context, canUseTool, parentMessage, onProgress?): Promise<ToolResult<Output>>
description(args, options): Promise<string>
// 权限与状态
isEnabled(): boolean
isConcurrencySafe(input): boolean
isReadOnly(input): boolean
isDestructive?(input): boolean
// UI 行为
interruptBehavior?(): 'cancel' | 'block'
isSearchOrReadCommand?(input): { isSearch, isRead, isList }
requiresUserInteraction?(): boolean
// MCP
isMcp?: boolean
mcpInfo?: { serverName: string; toolName: string }
// 延迟加载
shouldDefer?: boolean // 需 ToolSearch 先决条件
alwaysLoad?: boolean // 初始提示词必定包含
}
4.2 工具注册与条件加载
tools.ts 是唯一的工具注册中心:
export function getAllBaseTools(): Tools {
return [
AgentTool,
TaskOutputTool,
BashTool,
...(hasEmbeddedSearchTools() ? [] : [GlobTool, GrepTool]),
ExitPlanModeV2Tool,
FileReadTool,
FileEditTool,
// ... 40+ 工具
]
}
条件加载示例:
// ANT-ONLY 工具
...(process.env.USER_TYPE === 'ant' ? [ConfigTool, TungstenTool] : [])
// Feature Flag 工具
...(WebBrowserTool ? [WebBrowserTool] : []) // feature('WEB_BROWSER_TOOL')
...(isTodoV2Enabled() ? [TaskCreateTool, ...] : [])
// 协作(Swarm)模式
...(isAgentSwarmsEnabled() ? [getTeamCreateTool(), getTeamDeleteTool()] : [])
4.3 权限系统
三层权限模式(types/permissions.ts):
| 模式 | 行为 |
|---|---|
default |
首次调用询问,之后记住决策 |
accept |
自动允许所有工具 |
deny |
拒绝所有工具 |
权限规则支持来源过滤(tool_permission_rules_by_source),可按 MCP 服务器前缀 blanket-deny。
4.4 任务系统(Task.ts)
支持 7 种任务类型:
| 类型 | 前缀 | 说明 |
|---|---|---|
local_bash |
b |
本地 Shell 执行 |
local_agent |
a |
本地子 Agent |
remote_agent |
r |
远程 Agent |
in_process_teammate |
t |
进程内队友 |
local_workflow |
w |
本地工作流 |
monitor_mcp |
m |
MCP 监控 |
dream |
d |
梦境模式 |
Task ID 使用 randomBytes(8) 生成,36 进制(数字 + 小写字母),前缀 8 位组合约 2.8 万亿种。
五、命令系统(86 个命令)
commands.ts 统一注册所有 / 命令:
// 每个命令的结构
{
name: string
description: string
handler: (args, appState) => Promise<void>
aliases?: string[]
}
典型命令目录结构(以 commands/config/ 为例):
index.ts— 命令处理器get.ts—config get子命令set.ts—config set子命令list.ts—config list子命令
六、插件与 MCP 系统
6.1 插件系统(pluginLoader.ts,3,302 LOC)
发现 → 加载 → 挂钩注册
│
├── 本地插件:~/.claude/plugins/
├── 市场插件:Claude Code Marketplace
└── 内置插件:plugins/context_engine/, plugins/memory/
6.2 MCP 客户端(client.ts,3,348 LOC)
支持动态连接多个 MCP 服务器,工具自动暴露给模型。认证模块(auth.ts,2,465 LOC)处理 OAuth 与 API Key。
七、存储与会话
7.1 会话存储(sessionStorage.ts,5,105 LOC)
- 位置:
~/.claude/sessions/ - 格式:每个 session 一个目录(包含
metadata.jsonl、messages.jsonl) - 工具结果持久化:超过
maxResultSizeChars的结果写入磁盘
7.2 记忆目录(memdir/)
~/.claude/
├── memories/
│ ├── MEMORY.md # 持久记忆快照
│ └── USER.md # 用户配置快照
└── sessions/ # 会话历史
八、特性开关系统(Feature Flags)
代码核心设计:Dead Code Elimination(构建时消除)
import { feature } from 'bun:bundle'
// 条件编译 — 外部构建时完全移除
if (feature('COORDINATOR_MODE')) {
const coordinator = require('./coordinator/coordinatorMode.js')
}
// ANT-ONLY(公司内部构建标志)
if (process.env.USER_TYPE === 'ant') {
// ANT 专有代码
}
// 环境变量开关(运行时)
if (process.env.CLAUDE_CODE_SIMPLE === '1') {
// Simple 模式:Bash/Read/Edit 三件套
}
重要 Feature 标志:
| 标志 | 说明 |
|---|---|
KAIROS |
Agent 模式(助手模式) |
COORDINATOR_MODE |
协调者模式(多 Agent) |
BRIDGE_MODE |
桥接模式(远程控制) |
DAEMON |
常驻守护进程 |
BG_SESSIONS |
后台会话管理 |
PROACTIVE |
主动模式 |
VOICE_MODE |
语音模式 |
WEB_BROWSER_TOOL |
浏览器自动化工具 |
CONTEXT_COLLAPSE |
上下文折叠 |
REACTIVE_COMPACT |
反应式压缩 |
AGENT_TRIGGERS |
定时任务(cron) |
TEMPLATES |
模板作业 |
九、传输层(CLI Transports)
cli/transports/ 支持 7 种运行方式:
| 传输方式 | 说明 |
|---|---|
local |
本地 TTY |
remote |
远程(WebSocket) |
stdio |
标准 I/O(供 IPC) |
agent |
SDK 代理模式 |
browser |
浏览器内 |
mobile |
移动端 |
desktop |
桌面端(IDE 集成) |
十、源码规模统计
| 指标 | 数值 |
|---|---|
| TypeScript 文件(.ts) | 1,332 |
| React 文件(.tsx) | 552 |
| 源码总行数 | ~380,000 LOC |
| 最大单文件 | cli/print.ts(5,594 LOC) |
| 次大单文件 | utils/messages.ts(5,512 LOC) |
| 第三大单文件 | utils/sessionStorage.ts(5,105 LOC) |
| 命令子目录 | 86 |
| Ink 组件 | 144+ |
| 工具实现 | 44 |
十一、架构设计亮点
11.1 三并行预加载
main.tsx 顶部在 import 其他模块之前,启动三个独立的并行预处理:
- MDM 读取(macOS Managed Settings)—
startMdmRawRead() - Keychain 预读(OAuth + API Key)—
startKeychainPrefetch() - 性能埋点—
profileCheckpoint('main_tsx_entry')
注释说明这三个操作并行运行,与剩余 ~135ms 的模块导入并行执行,节省启动时间。
11.2 零开销版本检测
cli.tsx 的 --version 路径:零 import,直接读取编译时内联的 MACRO.VERSION 立即返回,不触发任何模块加载。
11.3 工具结果预算(Content Replacement)
utils/toolResultStorage.ts 实现了工具结果的预算系统:当工具输出超过阈值时,写入磁盘并只将路径返回给模型,避免上下文污染。
11.4 双向引用完整性
Tool.ts 中的 ensureToolResultPairing(strict=true) 保证每条 tool_call 必有对应的 tool_result,防止模型产生幻觉的工具调用。
11.5 进程隔离的任务 ID
任务 ID 使用 randomBytes(8) 生成 64 位随机数,前缀标识任务类型,防止恶意 symlink 攻击(36^8 ≈ 2.8 万亿组合空间)。
十二、关键文件速查
| 文件 | LOC | 职责 |
|---|---|---|
main.tsx |
4,683 | 完整 CLI 入口,三并行预加载 |
cli/print.ts |
5,594 | CLI 输出渲染(最大文件) |
utils/messages.ts |
5,512 | 消息规范化与工具结果 |
utils/sessionStorage.ts |
5,105 | SQLite 会话存储 |
utils/hooks.ts |
5,022 | 钩子系统(Pre/Post Tool/Hook) |
services/api/claude.ts |
3,419 | Anthropic API 调用与重试 |
services/mcp/client.ts |
3,348 | MCP 客户端 |
utils/plugins/pluginLoader.ts |
3,302 | 插件加载 |
services/mcp/auth.ts |
2,465 | MCP 认证 |
bootstrap/state.ts |
1,758 | 全局 AppState(56KB) |
query.ts |
1,729 | 核心对话循环 |
commands.ts |
754 | 命令注册中心 |
tools.ts |
389 | 工具注册中心 |
Tool.ts |
792 | Tool 接口定义 |
Task.ts |
125 | Task 接口(7 种任务类型) |
entrypoints/cli.tsx |
302 | CLI 快速路径(零导入) |

浙公网安备 33010602011771号