Claude Code 技术详解 — 第一部分:架构与会话系统
第 1 章:Claude Code 概述
1.1 项目定位
Claude Code 是 Anthropic 官方发布的命令行 AI 编程助手(CLI),版本 2.1.73。它基于 Anthropic Messages API,以 Claude 模型为核心驱动,在本地终端环境中为开发者提供代码生成、文件操作、Shell 执行、多 Agent 协作等能力。
与其他 AI 编码工具不同,Claude Code 是一个 agentic 工具:模型可以连续多轮自主调用工具(读写文件、执行命令、搜索代码、调用 Web 等),直至完成复杂任务,无需人工介入每一步。
1.2 核心能力
| 能力类别 | 具体功能 |
|---|---|
| 文件操作 | 读文件、写文件、精确编辑(Edit)、Glob 搜索、正则搜索(Grep) |
| 代码执行 | Bash 命令执行(默认超时 120s,最大 600s) |
| 智能工具 | LSP 语言服务器协议、Jupyter Notebook 编辑 |
| 网络访问 | WebFetch(页面抓取)、WebSearch(联网搜索) |
| 多 Agent | Agent 子代理、Team 模式多实例协作 |
| 任务管理 | Task(创建/更新/查询/停止/输出)、Cron 定时任务 |
| 会话管理 | 持久化 JSONL、Resume 恢复、上下文压缩 |
| 技能系统 | Skill(斜杠命令)加载与执行 |
| Worktree | Git Worktree 隔离工作区管理 |
1.3 运行模式
Claude Code 支持三种主要运行模式:
交互式 REPL 模式(默认)
claude
启动后进入 readline REPL,支持斜杠命令(/help、/clear 等)。无轮次上限,持续对话直到用户主动退出。
批处理模式(--print / -p)
claude -p "请帮我重构 src/app.ts"
claude -p --output-format json "..."
claude -p --output-format stream-json "..."
单次请求、非交互执行。--max-turns 参数仅在此模式生效,默认内部上限为 25 轮(MAX_TURNS = 25)。支持三种输出格式:text(默认)、json、stream-json。
Team 模式
多个 Claude Code 实例通过共享邮箱(mailbox)文件协同工作。一个实例充当 Team Lead,其余实例作为 Teammate。通过 TeamCreate、TeamDelete、SendMessage 工具进行编排。
1.4 关键常量
| 常量名 | 值 | 说明 |
|---|---|---|
DEFAULT_MODEL |
"claude-opus-4-6" |
默认模型,200k 上下文窗口 |
SMALL_FAST_MODEL |
"claude-haiku-4-5" |
轻量快速模型(内部任务用) |
MAX_TURNS |
25 |
--print 模式内部轮次上限 |
| Bash timeout(默认) | 120_000 ms |
Bash 工具默认执行超时 |
| Bash timeout(最大) | 600_000 ms |
Bash 工具最大允许超时 |
| OAuth CLIENT_ID | "9d1c250a-e61b-44d9-88ed-5944d1962f5e" |
Anthropic OAuth 应用 ID |
| API timeout | 600_000 ms |
HTTP 请求超时(AnthropicClient) |
MCP_LATEST_PROTOCOL_VERSION |
"2025-06-18" |
MCP 协议版本 |
源码定位:
-
DEFAULT_MODEL/SMALL_FAST_MODEL:src/api/models.ts:178-181 - Bash timeout:
src/tools/bash.ts - OAuth CLIENT_ID:
src/api/oauth.ts
第 2 章:核心架构
2.1 整体架构图
用户输入(stdin / CLI 参数)
│
▼
┌──────────────────────────────────┐
│ src/entrypoints/cli.ts │ CLI 入口
│ Commander.js:56 个选项,9 个子命令│
└────────────────┬─────────────────┘
│ 构造 ExecutorConfig
▼
┌──────────────────────────────────┐
│ src/session/executor.ts │ 主事件循环
│ ConversationExecutor.chat() │
│ · 构建系统提示 │
│ · 调用 API(SSE 流式) │
│ · 并行执行工具调用 │
│ · 写入 JSONL │
└────────┬──────────┬──────────────┘
│ │
▼ ▼
┌──────────────┐ ┌────────────────────────────────┐
│ src/api/ │ │ src/tools/index.ts │
│ client.ts │ │ 26 种内置工具 + Team 工具 + ToolSearch│
│ AnthropicClient│ │ getTools() → Tool[] │
│ SSE 流式解析 │ └────────────────────────────────┘
└──────────────┘
│
▼
┌──────────────────────────────────┐
│ src/session/history.ts │ 会话持久化
│ ConversationHistory │
│ · appendEntry() 写 JSONL │
│ · readEntries() 恢复会话 │
│ · listSessions() 列出历史 │
└──────────────────────────────────┘
│
▼
~/.claude/projects/<slug>/<sessionId>.jsonl
2.2 主要模块清单
| 模块路径 | 职责 | 关键类/函数 |
|---|---|---|
src/entrypoints/cli.ts |
CLI 入口,Commander.js 注册 |
main(), dH$(原始名) |
src/session/executor.ts |
主工具循环,agentic 驱动 |
ConversationExecutor, chat()
|
src/session/types.ts |
核心数据类型 |
ConversationSession, ExecutorConfig, ExecutorCallbacks
|
src/api/client.ts |
HTTP 客户端,SSE 解析 |
AnthropicClient, streamMessage()
|
src/api/models.ts |
模型目录,自动压缩阈值 |
MODELS, getAutoCompactThreshold()
|
src/tools/index.ts |
工具注册表 |
ALL_TOOLS, getTools(), TOOL_MAP
|
src/session/history.ts |
JSONL 读写管理 |
ConversationHistory, conversationHistory(单例) |
src/session/logger.ts |
异步批量写入器 |
SessionLogger(原始名:E39) |
src/session/paths.ts |
文件路径编码 |
pw(), getSessionFilePath(), getSubagentFilePath()
|
src/session/compaction.ts |
上下文压缩 |
compactConversation(), SUMMARIZATION_PROMPT
|
src/session/system-prompt.ts |
系统提示构建 |
buildSystemPromptSections()(原始名:U2()) |
src/config/settings.ts |
配置文件加载合并 |
SettingsManager, getSettingsManager()
|
src/teams/ |
Team 模式多 Agent |
mailbox.ts, spawn.ts, context.ts
|
src/mcp/ |
MCP 协议集成 |
MCPManager, MCPClient
|
src/skills/ |
斜杠命令技能 |
SkillRegistry, SkillLoader
|
2.3 CLI 选项与子命令
入口文件 src/entrypoints/cli.ts 通过 Commander.js 注册了完整的 CLI 接口(原始函数 dH$)。
主要选项分类(共 56 个):
输出/模式控制:
-p, --print 非交互批处理模式
--output-format <fmt> text | json | stream-json
--input-format <fmt> text | stream-json
--include-partial-messages 流式 JSON 包含中间块
模型与行为:
--model <model> 指定模型(默认 claude-opus-4-6)
--max-turns <n> 最大轮次(仅 --print 模式)
--permission-mode <mode> acceptEdits | bypassPermissions | default | dontAsk | plan | auto
--effort <level> low | medium | high | max
会话管理:
--resume [sessionId] 恢复指定或最新会话
--continue 同 --resume(无参数)
系统提示:
--system-prompt <text> 覆盖默认系统提示
--append-system-prompt <text> 追加到系统提示
工具控制:
--allowed-tools <tools> 工具白名单
--disallowed-tools <tools> 工具黑名单
MCP 集成:
--mcp-config <path> MCP 服务配置文件
输出控制:
--json-schema <path> 验证最终输出的 JSON Schema
--file <filespec> Files API 文件预加载
--verbose 详细调试输出
9 个子命令:
claude agents # 管理 Agent 实例
claude auth # OAuth 认证(login/logout/status)
claude auto-mode # 自动模式配置
claude doctor # 环境诊断
claude install # 安装/集成配置
claude mcp # MCP 服务管理
claude plugin|plugins # 插件管理
claude setup-token # API Token 设置
claude update|upgrade # 版本更新
第 3 章:会话系统
3.1 三层存储架构
Claude Code 的会话数据使用三层异步写入架构,在性能和持久性之间取得平衡:
┌─────────────────────────────────────────────────────────────────┐
│ 第一层:实时内存层 │
│ ConversationSession.turns[] (ConversationTurn[]) │
│ · executor 每轮直接追加 │
│ · _buildMessages() 仅从此处构建 API 请求 │
└──────────────────────────┬──────────────────────────────────────┘
│ append() 立即入队(非阻塞)
▼
┌─────────────────────────────────────────────────────────────────┐
│ 第二层:缓冲队列层 │
│ SessionLogger._queue (Array<{entry, resolve}>) │
│ · append() 入队后立即返回 Promise │
│ · 每 100ms 调度一次 _drain() │
│ · 按 uuid 去重,同一 uuid 不重复写 │
└──────────────────────────┬──────────────────────────────────────┘
│ _drain() → fs.appendFile()
▼
┌─────────────────────────────────────────────────────────────────┐
│ 第三层:持久文件层 │
│ JSONL 文件 (每行一个 JSON 对象) │
│ · 文件权限:0o600(仅拥有者可读写) │
│ · 目录权限:0o700 │
│ · 块大小上限:100 MB(MAX_CHUNK_BYTES = 104_857_600) │
│ · 进程退出时 flushAll() 保证不丢数据 │
└─────────────────────────────────────────────────────────────────┘
关键源码:
- 内存层:
src/session/types.ts(ConversationSession、ConversationTurn) - 队列层:
src/session/logger.ts(SessionLogger,原始名E39,cli.renamed.js:423364) - 文件层:
src/session/history.ts(ConversationHistory)
3.2 文件路径格式
路径编码函数 pw()
pw() 函数(原始名 pw(),cli.renamed.js:34565)将任意文件系统路径编码为目录安全的 slug:
规则:
1. 非字母数字字符 → "-"
2. 若 slug 超过 200 字符 → 截断到 200 字符 + "-" + djb2 哈希(base-36)
示例:
/Users/eric/Downloads/claude → Users-eric-Downloads-claude
源码位置:src/session/paths.ts:27-32
主会话路径
~/.claude/projects/<pw(cwd)>/<sessionId>.jsonl
对应函数:getSessionFilePath(cwd, sessionId)(原始名 ZA(),cli.renamed.js:423269)
完整示例:
工作目录:/Users/eric/Downloads/claude
SessionId:550e8400-e29b-41d4-a716-446655440000
路径:~/.claude/projects/Users-eric-Downloads-claude/550e8400-e29b-41d4-a716-446655440000.jsonl
Subagent 路径
~/.claude/projects/<pw(cwd)>/<parentSessionId>/subagents/agent-<agentId>.jsonl
对应函数:getSubagentFilePath(cwd, parentSessionId, agentId)(原始名 c2(),cli.renamed.js:423280)
配置目录
# 默认
~/.claude/
# 环境变量覆盖
CLAUDE_CONFIG_DIR=/custom/path claude
对应函数:getClaudeConfigDir()(原始名 rq(),cli.renamed.js:3803)
3.3 JSONL 条目格式
每个会话条目是独立的 JSON 对象,写入文件时以换行符分隔。
主会话条目:
{
"type": "user",
"uuid": "turn_01AbCdEf1234",
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"parentUuid": null,
"isSidechain": false,
"timestamp": "2026-03-27T10:30:00.000Z",
"cwd": "/Users/eric/Downloads/claude",
"version": "2.1.73",
"message": {
"role": "user",
"content": [{ "type": "text", "text": "帮我重构这个函数" }]
}
}
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
type |
"user" | "assistant" | "tool_result" |
条目类型 |
uuid |
string |
唯一 Turn ID(格式:turn_ + 12 位十六进制) |
sessionId |
string |
会话 UUID |
parentUuid |
string | null |
父 Turn 的 uuid(第一条为 null) |
isSidechain |
boolean |
Subagent 条目为 true,主会话为 false
|
timestamp |
string |
ISO 8601 时间戳 |
cwd |
string |
工作目录(NFC 规范化) |
version |
string |
Claude Code 版本号("2.1.73") |
message |
object |
Anthropic Messages API 格式的消息体 |
Subagent 条目额外字段:
{
"isSidechain": true,
"agentId": "a3f8c2d1",
"teamName": "dev-team",
"agentName": "backend-agent"
}
3.4 SessionLogger 非阻塞写入机制
SessionLogger(原始类名 E39,cli.renamed.js:423364)是写入层的核心。其设计目标是让 append() 调用的调用方感受不到 I/O 延迟。
工作流程:
append(entry)
│
├─ uuid 去重检查:若 _writtenUuids.has(uuid) → 直接返回
│
├─ push 到 _queue
│
├─ _scheduleDrain():若无定时器 → setTimeout(100ms)
│
└─ 返回 Promise(由 resolve 函数挂在队列项上)
100ms 后:
_drain()
├─ 从 _queue 取出所有项(splice(0))
├─ 序列化为 JSON Lines 字符串
├─ 若块超过 100MB → 分批写入
├─ fs.appendFile(filePath, chunk, { mode: 0o600 })
│ └─ 若失败(目录不存在)→ mkdir(0o700) → 重试
└─ 调用所有 resolve(),通知等待方
关键设计点:
-
FLUSH_INTERVAL_MS = 100(批量间隔) -
MAX_CHUNK_BYTES = 104_857_600(单次写入上限 100MB) - 文件权限
0o600,目录权限0o700 - 错误静默吞噬(never throws)
-
flush()方法:清除定时器 → 等待_activeDrain→ 执行_drain()→ 等待所有 pending 完成 - 进程退出时:
conversationHistory.flushAll()并行 flush 所有 logger
源码:src/session/logger.ts
3.5 Resume 机制
Claude Code 支持恢复历史会话,有三种触发方式:
claude --resume <sessionId> # 恢复指定 session
claude --resume # 恢复最新 session(按 mtime 排序)
claude --continue # 同上
恢复流程:
1. listSessions(cwd)
└─ 读取 ~/.claude/projects/<slug>/ 目录
└─ 过滤 *.jsonl 文件,按 mtime 降序排列
2. 若无 sessionId 参数 → 取第一个(最新)
3. readEntries(cwd, sessionId)
└─ 读取 JSONL 文件,逐行 JSON.parse()
└─ 跳过解析失败的行
4. 过滤出 type 为 "user" 或 "assistant" 的条目
5. 重建 session.turns[]
└─ 每个条目 → ConversationTurn
└─ 恢复 totalInputTokens、totalOutputTokens 等累计值
6. 以恢复后的 session 启动 executor
源码:src/session/history.ts(ConversationHistory.readEntries()、listSessions())
3.6 会话压缩(Compaction)
当输入 token 数接近模型上下文窗口上限时,Claude Code 自动触发会话压缩,用结构化摘要替换历史消息以释放上下文空间。
自动触发阈值
触发阈值由 getAutoCompactThreshold(model) 计算(原始名 jd_(),cli.renamed.js:215313):
阈值 = contextWindow - min(maxOutput, 20000) - 13000
以 claude-opus-4-6 为例:
200000 - min(32000, 20000) - 13000 = 167000 tokens
上下文窗口警告(提前 20000 token 发出):
警告阈值 = 压缩阈值 - 20000 = 147000 tokens(CONTEXT_WARNING_BUFFER)
源码:src/api/models.ts:202-209,src/session/executor.ts:101
9 部分结构化提示
压缩时使用固定的 9 节总结提示(原始常量 RbR,cli.renamed.js:177450):
| 节次 | 标题 | 内容 |
|---|---|---|
| 1 | Primary Request and Intent | 用户的全部明确请求和意图 |
| 2 | Key Technical Concepts | 重要技术概念、框架、技术栈 |
| 3 | Files and Code Sections | 操作过的文件和代码片段 |
| 4 | Errors and Fixes | 遇到的错误及修复方案 |
| 5 | Problem Solving | 已解决的问题和正在进行的调试 |
| 6 | All User Messages | 所有非工具结果的用户消息 |
| 7 | Pending Tasks | 尚未完成的待办任务 |
| 8 | Current Work | 压缩前正在进行的具体工作 |
| 9 | Optional Next Step | 与最近工作直接相关的下一步(直接引用原文) |
模型先在 <analysis> 标签内完成分析,再输出 <summary>...</summary> 正文。
增量压缩
重复压缩时,getMessagesSinceLastCompact(messages) 函数(原始名 RL(),cli.renamed.js:422791)检测上次压缩的边界标记,只对边界之后的新消息再次汇总,避免重复压缩已压缩内容。
边界标记(COMPACT_SESSION_PREFIX):
"This session is being continued from a previous conversation that ran out of context."
压缩结果格式
压缩后,原始历史消息被替换为一条 user 角色消息:
This session is being continued from a previous conversation that ran out of context.
The summary below covers the earlier portion of the conversation.
<summary 内容>
[可选] If you need specific details from before compaction (like exact code snippets,
error messages, or content you generated), read the full transcript at: <path>
源码:src/session/compaction.ts(compactConversation(),原始名 _W_(),cli.renamed.js:213964)
压缩使用的模型
压缩使用会话当前模型(mainLoopModel),而非 SMALL_FAST_MODEL。max_tokens = 8192。
第 4 章:配置系统
4.1 settings.json 加载优先级
Claude Code 采用多层配置合并策略,后加载的配置覆盖先加载的配置(array 类型字段如 permissions.allow 则合并去重,mcpServers 字段跨所有来源合并)。
加载顺序(优先级由低到高):
1. 内置默认值(代码中硬编码)
2. Policy 设置(MDM / 企业远程下发)
3. ~/.claude/settings.json ← 用户级,影响所有项目
4. .claude/settings.json ← 项目级,可纳入 git 追踪
5. .claude/settings.local.json ← 本地覆盖,应加入 .gitignore
6. CLAUDE_SETTINGS_PATH 或 --settings 指定的文件 ← 最高优先级
源码:src/config/settings.ts(SettingsManager,加载顺序注释)
环境变量覆盖:
CLAUDE_CONFIG_DIR=/custom/path # 覆盖 ~/.claude 根目录
CLAUDE_SETTINGS_PATH=/path/to/settings.json # 覆盖设置文件路径
ANTHROPIC_API_KEY=sk-ant-... # API Key(优先于 apiKeyHelper 命令)
settings.json 关键字段示例:
{
"model": "claude-opus-4-6",
"permissions": {
"allow": ["Bash(npm run *)", "Read(**/*.ts)"],
"deny": ["Bash(rm -rf *)"]
},
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
}
},
"hooks": {
"PreToolUse": [{ "matcher": "Bash", "command": "echo 'about to run bash'" }]
},
"apiKeyHelper": "op read op://vault/anthropic/api-key"
}
4.2 CLAUDE.md 记忆文件
CLAUDE.md 文件在每次 API 调用时自动注入到系统提示中,作为持久化上下文记忆。
加载优先级(从低到高):
1. ~/.claude/CLAUDE.md ← 用户级全局记忆
2. ./CLAUDE.md ← 项目根,可纳入 git 追踪(团队共享记忆)
3. .claude/CLAUDE.md ← 项目级
4. ~/.claude/projects/<slug>/MEMORY.md ← 自动记忆(AutoMemory)
自动记忆目录路径:autoMemoryDir(cwd) 返回 ~/.claude/projects/<pw(cwd)>/MEMORY.md。
控制环境变量:
CLAUDE_CODE_DISABLE_CLAUDE_MDS=1 # 禁用所有 CLAUDE.md 加载
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 # 禁用自动记忆(AutoMemory)
加载逻辑:src/memory/manager.ts(MemoryManager.loadAll()),内容构建:buildClaudeMdContent()。
4.3 系统提示结构
系统提示由 buildSystemPromptSections()(原始名 U2(),cli.renamed.js:410926)异步构建,分为多个具名节(SystemSection[]):
| 节名称 | 原始函数 | 内容 |
|---|---|---|
| 安全策略 | Z19 |
安全测试授权政策 |
| 语言设置 | DnK() |
响应语言配置 |
| 输出风格 | wnK() |
响应格式偏好 |
| System | JnK() |
核心工作规范 |
| 任务处理 | WnK() |
任务执行策略 |
| 执行操作 | XnK() |
操作执行准则 |
| 工具使用 | knK() |
工具调用规范 |
| 语气风格 | hnK() |
响应语气要求 |
| 环境信息 | y19() |
OS、Shell、工作目录 |
| Agent 工具 | MnK() |
Agent 子调用说明 |
| MCP 指令 | ZnK() |
MCP 服务器使用规范 |
| 记忆指令 | 内存模块 | AutoMemory 使用说明 |
节内容通过 Anthropic prompt caching 机制(cache_control: { type: "ephemeral" })进行缓存,降低重复调用的 token 消耗。缓存策略在 src/api/cache.ts 中实现(buildSystemBlocks()、shouldEnablePromptCaching())。
4.4 MCP 协议集成
MCP(Model Context Protocol)允许 Claude Code 连接外部工具服务器,动态扩展可用工具集。
关键常量:
MCP_LATEST_PROTOCOL_VERSION = "2025-06-18"
工作机制:
- 从
settings.json的mcpServers字段读取服务配置 -
MCPManager(src/mcp/manager.ts)启动并维护连接 -
executor构造时接收mcpManager,在每次 API 调用时将 MCP 工具合并到工具列表 - MCP 工具命名格式:
mcp__<serverName>__<toolName> - MCP 工具调用通过
MCPManager路由回对应服务器执行
配置示例:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"],
"env": { "NODE_ENV": "production" }
}
}
}
子命令管理:claude mcp list、claude mcp add、claude mcp remove
附录 A:工具完整列表
Claude Code v2.1.73 共注册 26 种内置工具(Team 模式额外 3 种),加上 ToolSearch 元工具共 27 种(Team 模式共 30 种)。
| 分组 | 工具名 | 原始变量名 | 功能 |
|---|---|---|---|
| 文件 I/O | Bash |
F6 |
Shell 命令执行 |
| 文件 I/O | Glob |
pO |
文件模式匹配 |
| 文件 I/O | Grep |
c$ |
内容正则搜索 |
| 文件 I/O | Read |
J7 |
文件读取 |
| 文件 I/O | Write |
a4 |
文件写入 |
| 文件 I/O | Edit |
a7 |
精确字符串替换 |
| 代码智能 | LSP |
Vl_ |
语言服务协议 |
| 代码智能 | NotebookEdit |
cD |
Jupyter 编辑 |
| Web | WebFetch |
ij |
网页抓取 |
| Web | WebSearch |
oG |
联网搜索 |
| Agent | Agent |
U7 |
子代理调用 |
| 任务管理 | TaskCreate |
SV |
创建任务 |
| 任务管理 | TaskUpdate |
vN |
更新任务 |
| 任务管理 | TaskList |
Wt |
列出任务 |
| 任务管理 | TaskGet |
Jt |
查询任务 |
| 任务管理 | TaskStop |
vS |
停止任务 |
| 任务管理 | TaskOutput |
VS |
获取任务输出 |
| 定时任务 | CronCreate |
OL |
创建定时任务 |
| 定时任务 | CronDelete |
WF |
删除定时任务 |
| 定时任务 | CronList |
YW_ |
列出定时任务 |
| 计划模式 | EnterPlanMode |
Yt |
进入计划模式 |
| 计划模式 | ExitPlanMode |
NN |
退出计划模式 |
| 交互 | AskUserQuestion |
N5 |
向用户提问 |
| Worktree | EnterWorktree |
skT |
进入 Git Worktree |
| Worktree | ExitWorktree |
tkT |
退出 Git Worktree |
| 技能 | Skill |
qf |
执行斜杠命令技能 |
| 元工具 | ToolSearch |
— | 工具发现与过滤 |
| Team(可选) | TeamCreate |
— | 创建 Team |
| Team(可选) | TeamDelete |
— | 删除 Team |
| Team(可选) | SendMessage |
— | 发送 Team 消息 |
源码:src/tools/index.ts(ALL_TOOLS,getTools())
附录 B:关键源码文件索引
| 文件路径 | 说明 |
|---|---|
src/entrypoints/cli.ts |
CLI 入口,56 个选项,9 个子命令 |
src/session/executor.ts |
ConversationExecutor,主 agentic 循环 |
src/session/types.ts |
ConversationSession、ExecutorConfig 等核心类型 |
src/session/history.ts |
ConversationHistory,JSONL 读写管理器 |
src/session/logger.ts |
SessionLogger,异步批量写入(原始 E39) |
src/session/paths.ts |
pw()、getSessionFilePath() 等路径函数 |
src/session/compaction.ts |
compactConversation(),上下文压缩 |
src/session/system-prompt.ts |
buildSystemPromptSections(),系统提示构建 |
src/api/client.ts |
AnthropicClient,HTTP + SSE 客户端 |
src/api/models.ts |
模型目录,getAutoCompactThreshold()
|
src/tools/index.ts |
ALL_TOOLS、getTools()、TOOL_MAP
|
src/config/settings.ts |
SettingsManager,多层配置合并 |
src/memory/manager.ts |
MemoryManager,CLAUDE.md 加载 |
src/teams/ |
Team 模式(mailbox、spawn、context 等) |
src/mcp/manager.ts |
MCPManager,MCP 服务器连接管理 |