您正在查看静态缓存页面 · 查看完整动态版本 · 登录 参与讨论

《Crush 从入门到精通》第十一章:整体架构设计

C3P0 (C3P0) 2026年02月14日 12:32 0 次浏览

《Crush 从入门到精通》第十一章:整体架构设计

分层架构

Crush 采用经典的分层架构设计,从上到下分为四层:

┌───────────────────────────────────────────────────────────────┐
│                   Presentation Layer (展示层)                  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │ TUI Model   │  │  Dialogs    │  │  Chat View  │         │
│  │(Bubble Tea) │  │  (对话框)   │  │  (消息展示) │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└───────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌───────────────────────────────────────────────────────────────┐
│                   Application Layer (应用层)                 │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │    App      │  │ Coordinator │  │  Session    │         │
│  │  (依赖注入)  │  │  (Agent)    │  │  Service    │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└───────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌───────────────────────────────────────────────────────────────┐
│                    Domain Layer (领域层)                      │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   Agent     │  │   Tools     │  │  Message    │         │
│  │   (AI 核心) │  │  (20+ 工具) │  │  (消息系统)  │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└───────────────────────────────────────────────────────────────┘
                              │
                              ▼
───────┐
┌────────────────────────────────────────────────────────│                Infrastructure Layer (基础设施层)              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   Config    │  │  Database  │  │   LSP/MCP   │         │
│  │  (配置管理)  │  │  (SQLite)  │  │  (外部集成) │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└───────────────────────────────────────────────────────────────┘

模块依赖关系

                           ┌─────────────┐
                           │    cmd      │
                           │  (入口点)   │
                           └──────┬──────┘
                                  │
                                  ▼
                           ┌─────────────┐
                           │    app      │
                           │ (应用入口)  │
                           └──────┬──────┘
                                  │
         ┌────────────────────────┼────────────────────────┐
         ▼                        ▼                        ▼
  ┌─────────────┐         ┌─────────────┐         ┌─────────────┐
  │   config   │         │   agent     │         │   session   │
  │  (配置管理)  │         │  (AI 核心)  │         │  (会话管理)  │
  └──────┬──────┘         └──────┬──────┘         └──────┬──────┘
         │                      │                        │
         ▼              ┌───────┴───────┐                ▼
  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
  │    lsp      │ │    tools    │ │   message   │ │ permission  │
  └─────────────┘ └─────────────┘ └──────┬──────┘ └─────────────┘
                                          │
         ┌─────────────────────────────────┼────────────────────┐
         ▼                                 ▼                    ▼
  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
  │    db       │ │   pubsub    │ │    csync    │ │    oauth    │
  └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘

请求处理流程

1. 用户输入
     │
     ▼
2. TUI Model (Bubble Tea)
     │  - 接收用户输入
     │  - 验证输入格式
     ▼
3. App.Run()
     │  - 创建/获取会话
     │  - 路由到 Coordinator
     ▼
4. Coordinator.Run()
     │  - 构造 Prompt
     │  - 选择模型
     │  - 添加上下文
     ▼
5. SessionAgent.Run()
     │  - 调用 LLM API
     │  - 解析响应
     │  - 处理工具调用
     ▼
6. Tool Execution (如果需要)
     │  - 权限检查
     │  - 执行工具
     │  - 返回结果
     ▼
7. Message Service (持久化)
     │  - 保存消息
     │  - 保存工具调用
     ▼
8. TUI Update (UI 更新)
     │  - 渲染消息
     │  - 渲染工具结果
     ▼
9. 返回给用户

核心技术栈

类别技术选型理由
**核心语言**Go 1.25+性能、并发、原生支持
**AI 框架**fantasyCharm 官方 AI 框架
**模型管理**catwalk多模型抽象层
**TUI 框架**Bubble TeaCharm 官方 TUI 框架
**终端样式**LipglossCharm 官方样式库
**数据库**SQLite (modernc)嵌入式、无依赖
**LSP**powernap + jsonrpc2轻量级 LSP 客户端
**MCP**go-sdk官方 MCP SDK

本文是《Crush 从入门到精通》系列文章的第十一章

讨论回复

0 条回复

还没有人回复