docs(article): 添加 Claude Code 源码分析文章及相关架构图
- 新增 008 号文章《51 万行源码意外曝光!我扒完了 Claude Code 的全部家底》 - 添加 8 个 Mermaid 架构图文件,涵盖整体架构、启动流程、查询循环等 - 新增项目配置文件 CLAUDE.md,定义自媒体写作规范 - 创建详细的架构分析文档 claude-arch-by-claude.md - 包含权限系统、工具调度、多智能体等核心技术解析 - 记录反蒸馏机制、KAIROS 守护进程等隐藏功能发现 - 提供完整的工具清单及安全防护措施说明
@@ -0,0 +1,37 @@
|
||||
graph TB
|
||||
subgraph Layer1["第一层:入口"]
|
||||
CLI["cli.tsx — CLI 入口 (302行)"]
|
||||
MCP_E["mcp.ts — MCP Server"]
|
||||
SDK_E["agentSdkTypes.ts — SDK"]
|
||||
end
|
||||
|
||||
subgraph Layer2["第二层:核心引擎"]
|
||||
MAIN["main.tsx (4,683行)<br/>REPL 编排器"]
|
||||
QE["QueryEngine.ts (1,295行)<br/>会话管理"]
|
||||
QUERY["query.ts (1,729行)<br/>流式查询循环"]
|
||||
end
|
||||
|
||||
subgraph Layer3["第三层:工具执行"]
|
||||
TOOLS["40+ 工具<br/>文件/Shell/网络/智能体"]
|
||||
ORCH["并发调度器<br/>读写分离"]
|
||||
PERM["权限系统<br/>24 个文件"]
|
||||
end
|
||||
|
||||
subgraph Layer4["第四层:智能体协调"]
|
||||
COORD["协调器模式"]
|
||||
AGENT["子智能体启动器"]
|
||||
TASK["7 种任务类型"]
|
||||
end
|
||||
|
||||
subgraph Layer5["第五层:基础设施"]
|
||||
API_C["Anthropic API 客户端"]
|
||||
MCP_C["MCP 客户端 (3,348行)"]
|
||||
BRIDGE["IDE 桥接 (27个文件)"]
|
||||
MEM["记忆系统"]
|
||||
INK["终端渲染引擎"]
|
||||
end
|
||||
|
||||
Layer1 --> Layer2
|
||||
Layer2 --> Layer3
|
||||
Layer3 --> Layer4
|
||||
Layer4 --> Layer5
|
||||
|
After Width: | Height: | Size: 354 KiB |
@@ -0,0 +1,22 @@
|
||||
sequenceDiagram
|
||||
participant U as 你的终端
|
||||
participant CLI as cli.tsx (302行)
|
||||
participant Main as main.tsx (4,683行)
|
||||
participant GB as GrowthBook 特性开关
|
||||
participant MCP as MCP 服务器
|
||||
participant REPL as REPL 交互循环
|
||||
|
||||
U->>CLI: $ claude
|
||||
CLI->>CLI: 快速路径检查<br/>(--version? --help?)
|
||||
CLI->>Main: 动态 import()
|
||||
|
||||
par 并行初始化(不阻塞)
|
||||
Main->>GB: 加载 44 个特性开关
|
||||
Main->>Main: 读取配置 / 密钥链
|
||||
Main->>MCP: 连接所有 MCP 服务器
|
||||
Main->>Main: 注册 40+ 工具
|
||||
end
|
||||
|
||||
Main->>Main: 组装系统提示词
|
||||
Main->>REPL: launchRepl()
|
||||
REPL->>U: 光标闪烁,等你说话
|
||||
|
After Width: | Height: | Size: 221 KiB |
@@ -0,0 +1,19 @@
|
||||
flowchart TD
|
||||
START["你的消息"] --> BUILD["组装查询配置"]
|
||||
BUILD --> CALL["调用 Anthropic API<br/>(SSE 流式传输)"]
|
||||
CALL --> STREAM["实时接收 token"]
|
||||
STREAM --> CHECK{模型要调用工具?}
|
||||
|
||||
CHECK -->|是| TOOLS["执行工具<br/>(读文件/改代码/跑命令...)"]
|
||||
TOOLS --> BUDGET["结果预算控制<br/>(太大就存磁盘)"]
|
||||
BUDGET --> COMPACT{"快爆上下文窗口了?"}
|
||||
COMPACT -->|是| COMPRESS["自动压缩对话历史"]
|
||||
COMPRESS --> CALL
|
||||
COMPACT -->|否| CALL
|
||||
|
||||
CHECK -->|否| DONE{"输出被截断?"}
|
||||
DONE -->|是,≤3次| CALL
|
||||
DONE -->|否| END["完成"]
|
||||
|
||||
style TOOLS fill:#e1f5fe
|
||||
style COMPRESS fill:#fff3e0
|
||||
|
After Width: | Height: | Size: 304 KiB |
@@ -0,0 +1,8 @@
|
||||
flowchart LR
|
||||
INPUT["模型一次返回 5 个工具调用"] --> SPLIT{"只读?"}
|
||||
|
||||
SPLIT -->|"Glob ✓<br/>Grep ✓<br/>FileRead ✓"| PAR["并发执行<br/>(最多 10 个)"]
|
||||
SPLIT -->|"FileEdit ✗<br/>Bash ✗"| SEQ["串行执行<br/>(一个一个来)"]
|
||||
|
||||
PAR --> MERGE["合并结果,返回模型"]
|
||||
SEQ --> MERGE
|
||||
|
After Width: | Height: | Size: 101 KiB |
@@ -0,0 +1,14 @@
|
||||
flowchart TD
|
||||
REQ["工具调用请求"] --> DENY{"在黑名单?"}
|
||||
DENY -->|是| NO["拒绝"]
|
||||
DENY -->|否| ALLOW{"在白名单?"}
|
||||
ALLOW -->|是| YES["放行"]
|
||||
ALLOW -->|否| TOOL{"工具自检<br/>checkPermissions()"}
|
||||
TOOL -->|危险| CLASS{"AI 分类器<br/>(仅 auto 模式)"}
|
||||
CLASS -->|安全| YES
|
||||
CLASS -->|危险| ASK{"能弹窗吗?"}
|
||||
ASK -->|能| USER["问用户"]
|
||||
ASK -->|不能| NO
|
||||
|
||||
style NO fill:#ffcdd2
|
||||
style YES fill:#c8e6c9
|
||||
|
After Width: | Height: | Size: 245 KiB |
@@ -0,0 +1,18 @@
|
||||
graph TB
|
||||
subgraph Boss["协调器"]
|
||||
C["全局视角<br/>任务分配<br/>质量把关"]
|
||||
end
|
||||
|
||||
subgraph Team["工作团队"]
|
||||
W1["Worker 1<br/>探索代码结构"]
|
||||
W2["Worker 2<br/>修改文件"]
|
||||
W3["Worker 3<br/>运行测试"]
|
||||
end
|
||||
|
||||
C -->|"生成"| W1
|
||||
C -->|"生成"| W2
|
||||
C -->|"追加指令"| W1
|
||||
W1 -.->|"回报结果"| C
|
||||
W2 -.->|"回报结果"| C
|
||||
C -->|"验收后生成"| W3
|
||||
W3 -.->|"回报结果"| C
|
||||
|
After Width: | Height: | Size: 178 KiB |
@@ -0,0 +1,10 @@
|
||||
graph LR
|
||||
INDEX["MEMORY.md<br/>记忆索引<br/>(≤200行)"] --> M1["user_role.md<br/>用户信息"]
|
||||
INDEX --> M2["feedback_testing.md<br/>纠正记录"]
|
||||
INDEX --> M3["project_context.md<br/>项目背景"]
|
||||
|
||||
PROMPT["系统提示词"] -->|注入| INDEX
|
||||
M1 --> SEARCH["语义搜索"]
|
||||
M2 --> SEARCH
|
||||
M3 --> SEARCH
|
||||
SEARCH --> INJECT["注入当前对话"]
|
||||
|
After Width: | Height: | Size: 116 KiB |
@@ -0,0 +1,18 @@
|
||||
graph TB
|
||||
subgraph Cache["可缓存(跨会话复用)"]
|
||||
A["智能体身份 + 安全指令"]
|
||||
B["工具使用规范"]
|
||||
C["软件工程行为准则"]
|
||||
D["操作可逆性策略"]
|
||||
end
|
||||
|
||||
WALL["══ CACHE BOUNDARY ══"]
|
||||
|
||||
subgraph Fresh["每次重建"]
|
||||
E["用户钩子"]
|
||||
F["记忆内容"]
|
||||
G["Git 状态 / CLAUDE.md"]
|
||||
H["MCP 指令"]
|
||||
end
|
||||
|
||||
Cache --> WALL --> Fresh
|
||||
|
After Width: | Height: | Size: 138 KiB |