docs(article): 添加 Claude Code 源码分析文章及相关架构图

- 新增 008 号文章《51 万行源码意外曝光!我扒完了 Claude Code 的全部家底》
- 添加 8 个 Mermaid 架构图文件,涵盖整体架构、启动流程、查询循环等
- 新增项目配置文件 CLAUDE.md,定义自媒体写作规范
- 创建详细的架构分析文档 claude-arch-by-claude.md
- 包含权限系统、工具调度、多智能体等核心技术解析
- 记录反蒸馏机制、KAIROS 守护进程等隐藏功能发现
- 提供完整的工具清单及安全防护措施说明
This commit is contained in:
2026-04-01 10:38:57 +08:00
parent 450056ee4a
commit 0686f1969c
21 changed files with 1839 additions and 0 deletions
+37
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

+22
View File
@@ -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: 光标闪烁,等你说话
Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

+19
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

+8
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

+14
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

+18
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

+10
View File
@@ -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["注入当前对话"]
Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

+18
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB