بنقرة واحدة
architecture-patterns
架构模式 - 后端架构模式,用于构建可维护、可测试的系统:整洁架构、六边形架构和领域驱动设计。适用于设计新后端系统、重构单体、建立架构标准、创建可测试代码库或规划微服务分解。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
架构模式 - 后端架构模式,用于构建可维护、可测试的系统:整洁架构、六边形架构和领域驱动设计。适用于设计新后端系统、重构单体、建立架构标准、创建可测试代码库或规划微服务分解。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
设置并使用 1Password CLI (op)。在安装 CLI、启用桌面应用集成、登录(单个或多个帐户)或通过 op 读取/注入/运行密钥时使用。
停止等待提示词,让工作继续进行。
Agent 体验守护系统。解决AI助手常见体验问题 :长时间无响应、任务卡死、中英文混用、状态不透明。包含看门狗监控、智能状态汇报、即时状态查询、语言一致性过滤、消息队列追踪。适用于所有渠道 ( QQ微信//Telegram飞书//Discord等 )。当用户抱怨等太久没回复、 “回复中英文混着”、 “不知道在干什么”时使用此技能。
针对 AI 代理 (Agent) 失败的结构化自调试工作流,包括捕捉、诊断、受控恢复和内省报告。
AI 代理的记忆管理工具 - 列表显示、搜索查找、摘要生成及记忆文件维护。包含 AI 驱动的摘要功能。
Optimize multi-agent systems with coordinated profiling, workload distribution, and cost-aware orchestration. Use when improving agent performance, throughput, or reliability.
| name | architecture-patterns |
| model | reasoning |
| description | 架构模式 - 后端架构模式,用于构建可维护、可测试的系统:整洁架构、六边形架构和领域驱动设计。适用于设计新后端系统、重构单体、建立架构标准、创建可测试代码库或规划微服务分解。 |
用于构建可维护、可测试系统的后端架构模式:整洁架构(Clean Architecture)、六边形架构(Hexagonal Architecture)和领域驱动设计(Domain-Driven Design)。
clean architecture, hexagonal, ports and adapters, DDD, domain-driven design, layers, entities, use cases, repositories, aggregates, bounded contexts
| 场景 | 推荐模式 |
|---|---|
| 简单的 CRUD 应用 | 不需要(过度设计) |
| 中等复杂度,团队标准化 | 整洁架构 |
| 多个频繁变化的外部集成 | 六边形架构(端口与适配器) |
| 具有大量业务规则的复杂业务领域 | 领域驱动设计 |
| 多团队的大型系统 | DDD + 限界上下文 |
┌──────────────────────────────────────┐
│ 框架与驱动层(UI、DB) │ ← 最外层:可以变更
├──────────────────────────────────────┤
│ 接口适配器层 │ ← 控制器、网关
├──────────────────────────────────────┤
│ 用例层 │ ← 应用逻辑
├──────────────────────────────────────┤
│ 实体层 │ ← 核心业务规则
└──────────────────────────────────────┘
依赖规则:依赖只能指向内层。内层永远不能导入外层。
┌─────────────┐
┌────│ 适配器 │────┐ (REST API)
▼ ▼
┌──────┐ ┌──────────┐
│ 端口 │◄────────────►│ 领域 │
└──────┘ └──────────┘
▲ ▲
│ ┌─────────────┐ │
└────│ 适配器 │────┘ (数据库)
└─────────────┘
端口:定义领域需要的接口 适配器:具体实现(可替换以进行测试)
app/
├── domain/ # 实体与业务规则(最内层)
│ ├── entities/
│ │ └── user.py
│ ├── value_objects/
│ │ └── email.py
│ └── interfaces/ # 端口
│ └── user_repository.py
├── use_cases/ # 应用业务规则
│ └── create_user.py
├── adapters/ # 接口实现
│ ├── repositories/
│ │ └── postgres_user_repository.py
│ └── controllers/
│ └── user_controller.py
└── infrastructure/ # 框架与外部关注点
├── database.py
└── config.py
from dataclasses import dataclass
from datetime import datetime
@dataclass
class User:
"""核心实体 - 无框架依赖。"""
id: str
email: str
name: str
created_at: datetime
is_active: bool = True
def deactivate(self):
"""实体中的业务规则。"""
self.is_active = False
def can_place_order(self) -> bool:
return self.is_active
from abc import ABC, abstractmethod
from typing import Optional
class IUserRepository(ABC):
"""端口:定义契约,无具体实现。"""
@abstractmethod
async def find_by_id(self, user_id: str) -> Optional[User]:
pass
@abstractmethod
async def save(self, user: User) -> User:
pass
@dataclass
class CreateUserRequest:
email: str
name: str
@dataclass
class CreateUserResponse:
user: Optional[User]
success: bool
error: Optional[str] = None
class CreateUserUseCase:
"""用例:编排业务逻辑。"""
def __init__(self, user_repository: IUserRepository):
self.user_repository = user_repository # 注入的依赖
async def execute(self, request: CreateUserRequest) -> CreateUserResponse:
# 业务验证
existing = await self.user_repository.find_by_email(request.email)
if existing:
return CreateUserResponse(user=None, success=False, error="Email exists")
# 创建实体
user = User(
id=str(uuid.uuid4()),
email=request.email,
name=request.name,
created_at=datetime.now()
)
saved = await self.user_repository.save(user)
return CreateUserResponse(user=saved, success=True)
class PostgresUserRepository(IUserRepository):
"""适配器:PostgreSQL 实现。"""
def __init__(self, pool: asyncpg.Pool):
self.pool = pool
async def find_by_id(self, user_id: str) -> Optional[User]:
async with self.pool.acquire() as conn:
row = await conn.fetchrow(
"SELECT * FROM users WHERE id = $1", user_id
)
return self._to_entity(row) if row else None
async def save(self, user: User) -> User:
async with self.pool.acquire() as conn:
await conn.execute(
"""INSERT INTO users (id, email, name, created_at, is_active)
VALUES ($1, $2, $3, $4, $5)
ON CONFLICT (id) DO UPDATE SET email=$2, name=$3, is_active=$5""",
user.id, user.email, user.name, user.created_at, user.is_active
)
return user
适用于有多个可能变化的外部集成。
# 领域服务(核心)
class OrderService:
def __init__(
self,
order_repo: OrderRepositoryPort, # 端口
payment: PaymentGatewayPort, # 端口
notifications: NotificationPort # 端口
):
self.orders = order_repo
self.payments = payment
self.notifications = notifications
async def place_order(self, order: Order) -> OrderResult:
# 纯业务逻辑 - 无基础设施细节
if not order.is_valid():
return OrderResult(success=False, error="Invalid order")
payment = await self.payments.charge(order.total, order.customer_id)
if not payment.success:
return OrderResult(success=False, error="Payment failed")
order.mark_as_paid()
saved = await self.orders.save(order)
await self.notifications.send(order.customer_email, "Order confirmed")
return OrderResult(success=True, order=saved)
# 适配器(可替换以进行测试或更换提供商)
class StripePaymentAdapter(PaymentGatewayPort):
async def charge(self, amount: Money, customer: str) -> PaymentResult:
# 真实的 Stripe 实现
...
class MockPaymentAdapter(PaymentGatewayPort):
async def charge(self, amount: Money, customer: str) -> PaymentResult:
return PaymentResult(success=True, transaction_id="mock-123")
适用于具有大量业务规则的复杂业务领域。
@dataclass(frozen=True)
class Email:
"""值对象:经过验证的、不可变的。"""
value: str
def __post_init__(self):
if "@" not in self.value:
raise ValueError("Invalid email")
@dataclass(frozen=True)
class Money:
amount: int # 分
currency: str
def add(self, other: "Money") -> "Money":
if self.currency != other.currency:
raise ValueError("Currency mismatch")
return Money(self.amount + other.amount, self.currency)
class Order:
"""聚合根:强制不变量。"""
def __init__(self, id: str, customer: Customer):
self.id = id
self.customer = customer
self.items: List[OrderItem] = []
self.status = OrderStatus.PENDING
self._events: List[DomainEvent] = []
def add_item(self, product: Product, quantity: int):
"""聚合中的业务逻辑。"""
if quantity > product.max_quantity:
raise ValueError(f"Max {product.max_quantity} allowed")
item = OrderItem(product, quantity)
self.items.append(item)
self._events.append(ItemAddedEvent(self.id, item))
def submit(self):
"""状态转换与不变量检查。"""
if not self.items:
raise ValueError("Cannot submit empty order")
if self.status != OrderStatus.PENDING:
raise ValueError("Order already submitted")
self.status = OrderStatus.SUBMITTED
self._events.append(OrderSubmittedEvent(self.id))
class OrderRepository:
"""持久化/检索聚合,发布领域事件。"""
async def save(self, order: Order):
await self._persist(order)
await self._publish_events(order._events)
order._events.clear()
所有模式都支持相同的测试方法:
# 使用模拟适配器进行测试
async def test_create_user():
mock_repo = MockUserRepository()
use_case = CreateUserUseCase(user_repository=mock_repo)
result = await use_case.execute(CreateUserRequest(
email="test@example.com",
name="Test User"
))
assert result.success
assert result.user.email == "test@example.com"