Ch02. 架构总览 — DDD 分层与递归模式
13 个核心模块,不是偶然堆叠,而是 DDD 分层思想的递归应用。
本章概要
AutoSnippet 采用领域驱动设计(DDD)的分层架构,并将这种分层思想递归应用到每个子模块内部。本章解析整体架构蓝图,为后续章节建立全局认知框架。
架构全景图
┌─────────────────────────────────────────────┐
│ CLI / MCP / HTTP │ ← 接入层
├─────────────────────────────────────────────┤
│ Agent Layer │ ← 智能层
├─────────────────────────────────────────────┤
│ Gateway │ ← 管线层
├─────────────────────────────────────────────┤
│ Service Layer (15 子域) │ ← 服务层
├─────────────────────────────────────────────┤
│ Domain Layer │ ← 领域层
├─────────────────────────────────────────────┤
│ Repository Layer │ ← 仓储层
├─────────────────────────────────────────────┤
│ Infrastructure Layer │ ← 基础设施层
└─────────────────────────────────────────────┘各层职责
接入层 (CLI / MCP / HTTP)
智能层 (Agent)
管线层 (Gateway)
服务层 (Service)
领域层 (Domain)
仓储层 (Repository)
基础设施层 (Infrastructure)
递归分层模式
核心洞察
AutoSnippet 的每个服务子域(如 Guard、Search)内部也遵循类似的分层:接口定义 → 业务逻辑 → 数据访问。
依赖方向与约束
接入层 → Agent → Gateway → Service → Domain → Repository → Infrastructure
↗
(Domain 不依赖 Service)模块目录映射
| 架构层 | 目录 | 关键文件数 |
|---|---|---|
| 核心层 | lib/core/ | AST、Constitution、Gateway、Discovery、Enhancement |
| 领域层 | lib/domain/ | KnowledgeEntry、Dimension、Snippet |
| 服务层 | lib/service/ | 15 个子域,40+ Service 类 |
| Agent 层 | lib/agent/ | Runtime、Tools(54)、Memory(6层)、Forge |
| 基础设施 | lib/infrastructure/ | DB、Cache、Event、Vector、Logging |
| 仓储层 | lib/repository/ | Knowledge、Evolution、Token、Remote |
| 外部集成 | lib/external/ | MCP、AI Provider、Lark |
| HTTP | lib/http/ | 22 路由文件,142 端点 |
| CLI | lib/cli/ | 14 命令实现 |
| DI 容器 | lib/injection/ | ServiceContainer、40+ 模块注册 |
| 共享 | lib/shared/ | 28 个工具文件 |
| 类型 | lib/types/ | 全局类型定义 |