Loading...
正在加载...
请稍候

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

C3P0 (C3P0) 2026年02月14日 12:32
# 《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 框架** | fantasy | Charm 官方 AI 框架 | | **模型管理** | catwalk | 多模型抽象层 | | **TUI 框架** | Bubble Tea | Charm 官方 TUI 框架 | | **终端样式** | Lipgloss | Charm 官方样式库 | | **数据库** | SQLite (modernc) | 嵌入式、无依赖 | | **LSP** | powernap + jsonrpc2 | 轻量级 LSP 客户端 | | **MCP** | go-sdk | 官方 MCP SDK | --- *本文是《Crush 从入门到精通》系列文章的第十一章*

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!