01
项目总览面板
ZhikunCode · Web IDE · 浏览器 + 后端服务 + 分析服务
Java 后端主源码
65,654 行 / 433 文件
Java 测试代码
18,236 行 / 58 文件
React 前端
19,543 行 / 137 文件
Python 服务
7,213 行 / 32 文件
技术概览
| 项目名称 | ZhikunCode |
| 产品形态 | AI-Powered Web IDE |
| 总代码量 | 110,646 行 / 660 文件 |
| 后端框架 | Spring Boot 3.4 + Java 21 |
| 前端框架 | React 18.3 + Vite 5.4 + Zustand 4.5 |
| 分析服务 | FastAPI + uvicorn + tree-sitter |
| UI 工具链 | Tailwind 3.4 + Monaco 0.52 + xterm.js 5.5 |
| 可视化 | Mermaid 11.14 + 14个自定义图表组件 |
代码量分布
Java 主源码65,654
Java 测试18,236
React 前端19,543
Python 服务7,213
02
三端分离架构总览
核心通信链路
▸ 三端分离架构全景插画
▶ 5条通信链路详情
| # | 链路 | 协议 | 关键文件 |
| 1 | 前端 → Java 后端 | REST API + WebSocket/STOMP | dispatch.ts (437行) + stompClient.ts (358行) |
| 2 | 前端 → Python 服务 | Vite Proxy 转发 | /api/git, /api/files, /api/code-quality, /api/analysis → :8000 |
| 3 | Java → LLM | HTTP/SSE Stream | LlmProviderRegistry → Anthropic / OpenAiCompatible |
| 4 | Java → MCP Server | 5种传输 | McpClientManager — STDIO/SSE/HTTP/WS/ServerStdio |
| 5 | Java → Docker | Docker API | SandboxManager — 容器隔离执行 |
WebSocket/STOMP 实时通信时序 — 前端↔后端双向通信全景 · 基于源码实证
03
Agent Loop — 8步循环引擎
engine/ 5,942行 · QueryEngine.java 1,038行
压缩级联 ContextCascade
AutoCompact 状态回写 · 上下文窗口管理 · 触发条件: token数 > 阈值
创建流式执行会话 StreamingToolExecutor.newSession
初始化工具执行上下文 · 并行通道就绪
API 调用 + 模型降级 LlmProvider.streamChat
流式工具执行(立即启动) · 413二阶段恢复 · 模型降级链
收集 API 响应 StreamCollector.buildAssistantMessage
流式chunk聚合 · 工具调用提取 · thinking块处理
消费工具结果 并行执行,异步等待
工具权限检查 → 并行执行 → 结果收集 · 事务边界隔离
继续/终止判定
end_turn 信号检测 · max_tokens 恢复机制 · StopHook 自定义拦截
工具摘要注入 ToolResultSummarizer
长结果截断摘要 · LLM辅助压缩 · 上下文预算控制
状态更新 → 回到 Step 1 LOOP
消息历史追加 · 统计更新 · 压缩指标评估 · 循环继续
▸ Agent Loop 8步循环引擎
▶ 引擎关键特性
流式工具执行Step 3 中工具调用流到即执行,不等完整响应
413二阶段恢复首次截断context → 二次仍失败则模型降级
04
18步权限管线
permission/ 11文件 2,672行 · PermissionPipeline.java 752行
▶ STAGE 1: 拒绝 / 询问规则 11 步
deny 规则检查
显式拒绝列表匹配 → 直接 DENY
ask 规则检查
需询问用户列表匹配 → 进入 ASK 流程
工具自身权限检查
tool.checkPermissions() → 工具内置安全约束
requiresUserInteraction
标记需要用户交互 → ASK
内容级 ask 规则 优先于 bypass
内容模式匹配 → 强制 ASK,无法被 bypass 跳过
系统级命令黑名单 bypass 免疫
CommandBlacklistService 检查 → 高危命令永久拦截
写路径危险文件检查
检测写入 .env / 配置 / 密钥文件 → ASK
Bash 危险删除 + 环境变量
rm -rf / export 等危险模式 → ASK
安全检查 bypass 免疫
.git/ .zhikun/ 等敏感目录保护 → 永久拦截
敏感系统文件访问检查
/etc/passwd, ~/.ssh/ 等系统级保护
▶ STAGE 2: 允许规则 5 步
Hook 权限规则注入
StopHook / 外部插件注入的动态权限规则
Classifier 权限规则注入 auto 模式
AutoModeClassifier (591行) 智能分类 → 自动授权
Sandbox 权限规则覆盖
Docker 沙箱环境下 → 放宽权限约束
bypassPermissions 模式
全局绕过开关 → 跳过非免疫检查
alwaysAllow 规则
持久化允许列表匹配 → 直接 ALLOW
▶ STAGE 3: 模式转换 1 步 → 7 模式
passthrough → ask,进入模式分支
DEFAULT PLAN ACCEPT_EDITS DONT_ASK BYPASS AUTO BUBBLE
辅助组件: AutoModeClassifier (591行) · PermissionRuleRepository (271行) · PermissionRuleMatcher (253行) · PermissionModeManager (155行)
▸ 18步权限管线全景流程
05
Bash 安全模块 — 5层 AST 解析
tool/bash/ 13文件 5,091行
AST 解析架构 (递归下降)
parseProgram()
└─ parseStatements(terminator)
└─ parseAndOr()
└─ parsePipeline()
└─ parseCommand()
├─ parseSimpleCommand()
├─ parseIf / While / For
├─ parseFunction
└─ subshell / compound
核心组件
BashParserCore1,117 行 — 递归下降解析器
BashCommandClassifier1,105 行 — 命令分类引擎
BashLexer824 行 — 词法分析器
BashSecurityAnalyzer772 行 — AST 安全扫描
PathValidator341 行 — 路径安全校验
SedValidator204 行 — sed 命令校验
HeredocExtractor196 行 — heredoc 提取
安全分析结果模式:
Simple(commands)
TooComplex(reason)
ParseUnavailable
Bash 安全模块 AST 解析流水线 — 6层纵深防御 · 13文件 5,091行
06
LLM 多提供商架构
llm/ 22文件 2,911行
▶ Provider 抽象层
LlmProviderRegistry (237行) — 提供商注册中心
├── AnthropicProvider (463行) → Claude 系列
└── OpenAiCompatibleProvider (932行)
├── OpenAI GPT
├── 通义千问 (Qwen)
├── DeepSeek
├── Moonshot / Kimi
├── 智谱 GLM-4
└── Ollama 本地部署
模型别名:
light → qwen-plus
standard → qwen3.6-plus
premium → qwen3.6-max-preview
▶ 辅助组件
ModelRegistry
127行 · 模型配置注册
MessageParamConverter
391行 · 消息参数转换
ThinkingBudgetCalculator
104行 · thinking预算
LlmErrorClassifier
154行 · 错误分类
RetryPolicy
97行 · 重试策略
ApiKeyRotationManager
密钥轮换管理
07
MCP 双向协议架构
mcp/ 30文件 5,219行(main/源码,含测试则34文件/6,325行)
Client 端
McpClientManager586 行 — 生命周期管理
McpServerConnection512 行 — 连接路由
McpToolAdapter252 行 — 工具适配
McpPromptAdapter193 行 — Prompt 适配
TokenEncryptionService245 行 — AES-GCM 加密
SseHealthChecker健康检查
McpApprovalService审批服务
Server 端 + 传输层
Server 端 (mcp/server/):
McpServerEntrypoint (186行) · McpServerToolHandler (152行)
5种传输协议:
STDIO (193行)
SSE (378行)
HTTP (374行)
WebSocket (269行)
ServerStdio (241行)
08
多Agent协调系统
coordinator/ 17文件 3,777行 + agent/ 10文件 2,047行 = 29个类
Implementation
实施阶段
代码编写与修改
▶ 核心组件详情
CoordinatorWorkflowEngine436行 — 四阶段编排
SubAgentExecutor918行 — 子代理执行(权限冒泡)
SwarmService463行 — 多Agent任务分发
SwarmWorkerRunner332行 — Worker执行引擎
CoordinatorPromptBuilder484行 — Prompt生成
TeamManager137行 — 团队管理
TeamMailbox109行 — 团队邮箱
LeaderPermissionBridge162行 — 权限冒泡机制
▸ 多Agent协调系统架构全景
09
工具系统
tool/ 144文件 16,815行 · tool/impl/ — 47个工具
▶ 工具分类树
文件操作
ReadFile
WriteFile
EditFile
ListDir
SearchFiles
执行 & 终端
BashTool → Sec §5
TaskTool
NotebookTool
搜索 & 分析
GrepTool
GlobTool
CodeSearchTool
Agent & 协作
SubAgentTool
MemoryTool → §11
McpTool → §7
Web & Git
WebFetchTool
WebSearchTool
GitTool
共 47 个工具实现 · 每个工具继承 AbstractTool 基类 · 支持权限声明 + Schema 定义 + 流式结果
▸ 工具分类与执行管道全景
10
上下文管理 — 5层压缩策略
L2 MicroCompact
MicroCompactService
183行 · 轻量压缩
L3 AutoCompact
CompactService
1,058行 · LLM摘要压缩
L4 CollapseDrain
ContextCollapseService
283行 · 折叠排水
L5 ReactiveCompact
413恢复触发
紧急压缩
▶ 核心组件
CompactService1,058 行 — 主压缩引擎,LLM 辅助摘要
ContextCascade340 行 — 级联决策,选择压缩层级
ContextCollapseService283 行 — 折叠排水,保留关键信息
MicroCompactService183 行 — 微压缩,无 LLM 调用
10b
Token 预算与模型策略
▶ IncrementalCollapseManager 增量折叠 · 175行
注解@Service @ConditionalOnProperty(name="context.cascade.incremental-collapse.enabled")
shouldCollapse()累计 turnCount,每10轮触发折叠
recordCollapse()记录折叠段元数据
状态管理会话级 ConcurrentHashMap · 30分钟超时自动清理
▶ ModelTierService 模型降级 · 156行
注解@Service
resolveModel()选择最佳可用层级
triggerCooldown()API容量错误 → 冷却管理
reportSuccess()健康探测恢复(3次成功阈值)
冷却策略30分钟默认 · retry-after感知 · 短期重试豁免
11
辅助系统
▶ 记忆系统 memdir/ 5文件 1,089行
MemdirService598行 — 核心记忆服务
MemorySearchEngine197行 — BM25 + LLM 重排
MemoryRerankService128行 — 重排序
MemoryTool118行 — 工具接口
▶ Skill 系统 skill/ 7文件 1,169行
SkillRegistry468行 — 6级加载源
FrontmatterParserSkill 元数据解析
▶ 安全模块 security/ 5文件 1,248行
CommandBlacklistService377行 — 命令黑名单
PathSecurityService433行 — 路径安全
SensitivePathRegistry300行 — 敏感路径注册
SensitiveDataFilter68行 — 数据过滤
SecurityAuditLogger70行 — 审计日志
▶ Docker 沙箱 sandbox/ 2文件 316行
记忆系统架构 — BM25检索 · LLM重排序 · 会话历史
Hook + Plugin 协作扩展机制 — hook/ 5文件 895行 + plugin/ 15文件 1,468行
Skill 系统任务分解架构 — skill/ 7文件 1,169行 · DAG执行
12
React 前端架构
137文件 19,543行
▶ 组件层 86文件 13,502行 22子目录
visualization ×14
message ×19
status ×9
layout ×7
input ×6
common ×5
settings ×4
dialog ×4
theme ×3
permission ×2
git ×2
▶ 14个可视化组件
CodeComplexityTreemap663行
CodePathTracer621行
ChangeImpactGraph570行
APIContractViewer527行
CodeDiagramGenerator407行
AgentDAGChart383行
GitTimeline369行
APISequenceDiagram255行
SchemaViewer235行
MermaidBlock204行
BlameView186行
AgentDAGNode103行
ToolProgressBar99行
MiniLogViewer67行
▶ 状态管理 — 32 个 Zustand Store 约2,846~3,278行(仅业务Store)
coordinatorStoremcpStoreconfigStoreswarmStoremessageStoreplanStoretaskStoresessionStoretoolStorepermissionStore
+ 22 more stores
▸ 32个 Zustand Store 分类与依赖关系
▶ API 通信层
dispatch.ts 437行
REST API 统一调度层 · 请求/响应拦截 · 错误重试
stompClient.ts 358行
WebSocket/STOMP 实时通信 · 消息订阅 · 重连机制
技术栈
React 18.3Vite 5.4Zustand 4.5Monaco Editor 0.52xterm.js 5.5Tailwind 3.4Mermaid 11.14
13
Python 分析服务架构
32文件 7,213行
▶ 分析引擎 analyzers/ 2,872行
flow_chart_generator.py657 行
code_path_tracer.py622 行
call_graph_builder.py582 行
sequence_diagram_generator.py527 行
change_impact_analyzer.py416 行
▶ 业务服务 services/ 1,725行
browser_service.py658 行
complexity_analyzer.py515 行
tree_sitter_service.py237 行
▶ API 路由 routers/ 1,526行
/api/analysis434行
/api/browser285行
/api/files276行
/api/code-intel213行
/api/git125行
/api/v1/tokens97行
/api/code-quality95行
6个能力域 支持优雅降级
CODE_INTELFILE_PROCESSINGCODE_QUALITYANALYSISGIT_ENHANCEDBROWSER_AUTOMATION
▸ Python 代码分析引擎架构
14
部署架构
Docker 多阶段构建
# docker-compose.yml 编排
java-backend: Spring Boot 3.4
port: 8080
react-frontend: Vite dev / Nginx prod
port: 5173 (dev) / 80 (prod)
python-service: FastAPI + uvicorn
port: 8000
启停管理
Dockerfile多阶段构建
docker-compose.yml服务编排
docker-entrypoint.sh入口脚本
start.sh一键启动
stop.sh优雅停止
15
全局数据流与模块依赖全景图
ZhikunCode Architecture Reference · Open Source · MIT License · github.com/zhikunqingtao/zhikuncode