Clhoria:面向 AI 时代的企业级开发模板

11 阅读6分钟

前言

在开发领域,我们长期面临一个两难困境:要么选择成熟但笨重的传统框架,忍受大量样板代码和缓慢的开发反馈;要么选择轻量级框架,却需要从零搭建基础设施。

Clhoria 是我在实践中沉淀的一套解决方案——基于 Hono 框架构建,专为 AI 驱动开发模式设计的企业级模板。它不是又一个"全家桶",而是一套经过生产验证的架构实践,让你在享受现代化开发体验的同时,拥有企业级项目所需的完整能力。

为什么是 Hono

选择 Hono 作为核心框架,基于以下考量:

性能与轻量的平衡:在 Node.js 22 环境下,Hono 的性能已经接近 Fastify(129,234 req/s vs 142,695 req/s),差距不到 10%。但 Hono 的代码体积更小,API 设计更优雅,且原生支持多运行时(Bun、Deno、Cloudflare Workers)。

类型推导的极致:Hono 的路由定义、中间件、Context 都有完整的类型推导。配合 @hono/zod-openapi,可以实现从请求校验到响应类型的全链路类型安全,这对 AI 辅助开发至关重要。

OpenAPI 原生支持:通过 @hono/zod-openapi,路由定义即 OpenAPI 规范,代码即文档。不再需要手动维护 Swagger 文档,也不会出现文档与实现不一致的问题。

核心设计理念

规范驱动开发(Spec-Driven Development)

Clhoria 采用 SDD 方法论,颠覆传统的开发层级关系——让规范成为主导,代码成为规范的实现。

标准开发流程分为 6 个阶段:Spec(需求+架构+测试规划)→ 生成接口代码 → 生成测试用例 → 循环优化 → 模块文档

配合 Claude Code,精确的规范可以直接生成符合项目规范的代码。每个功能模块完成后,会产出 spec.md(需求与架构设计)和 module.md(模块文档),为后续 AI 维护提供上下文。

代码即权限、代码即菜单、代码即字典

传统后台管理系统需要维护大量的元数据表:权限表、菜单表、字典表(这里特指系统字典部分并非业务字典),以及它们之间的关联关系。这些数据分散在数据库、后端代码、前端代码之间,极易出现不一致。

Clhoria 采用完全不同的思路:

权限系统:基于 RESTful API 路径 + Casbin KeyMatch3。API 路由本身就是权限标识,无需在数据库中存储权限定义。Casbin 策略直接匹配 GET /api/admin/users 这样的路径模式。

菜单系统:基于 Refine Resource 的编译时路由。菜单结构在前端代码中定义,编译时生成路由树,运行时零开销。

字典系统:TypeScript 枚举 → PostgreSQL Enum → OpenAPI 自动生成。单一数据源,编译时类型检查,4 字节 Enum 存储。

这套方案的核心优势是:改一处,全链路自动同步。TypeScript 编译器会在你忘记更新任何相关代码时报错。

开发体验的极致追求

毫秒级热重载

Clhoria 基于 Vite 构建开发环境,代码变更后毫秒级生效。但后端 HMR 和前端不同,面临两个核心挑战:

资源泄漏问题:每次热更新,旧模块被卸载,但如果持有数据库连接、Redis 连接、定时器等资源,这些资源不会自动释放。多次热更新后,连接池耗尽。

Clhoria 通过两层机制解决:

  1. 单例管理系统:PostgreSQL、Redis、Casbin 等长连接资源统一管理,模块卸载时自动清理
  2. 资源监控插件:基于 process.getActiveResourcesInfo() 监控 HMR 前后的系统资源变化,使用滑动窗口检测连续增长趋势,累计增长达到阈值才报警,避免误报

状态反馈问题:前端 HMR 有清晰的视觉反馈(Vite 的 overlay),但后端 HMR 默认是静默的。Clhoria 提供了 HMR 通知插件,在终端和日志中提供类似前端的状态提示。

Zod Schema 性能优化

在使用 @hono/zod-openapi 时,一个常见的性能陷阱是在函数内部定义 Zod Schema。每次请求都会重新创建 Schema 对象,造成不必要的性能开销。

Clhoria 提供了一个 Vite 插件,在编译时自动将函数内部的 Zod Schema 定义提升到文件顶部,Schema 只创建一次。这个优化对高频接口的性能提升显著。

自动路由加载

基于 import.meta.glob 自动扫描注册路由模块。新增功能模块只需创建目录,无需手动注册路由。Vite 会自动发现新文件,配合 HMR 立即生效。

企业级能力

完整的 RBAC 权限体系

  • JWT 双密钥机制:Admin 和 Client 使用不同密钥,互相隔离
  • Casbin RBAC:支持角色继承、资源通配符、动态策略更新
  • 权限缓存:Redis 缓存权限策略,避免每次请求查询数据库

分布式任务调度

基于 pg-boss 实现:

  • 后台任务队列:支持延迟执行、重试策略、优先级
  • 定时任务调度:分布式安全,多节点只执行一次
  • Saga 协调器:支持多步骤事务、自动补偿回滚、超时处理

可观测性

  • 日志处理:支持多种存储方案(阿里云 SLS、PostgreSQL TimescaleDB、Loki)
  • Sentry 集成:错误追踪和性能监控
  • OpenAPI 文档:Scalar UI,支持在线调试

与传统方案的对比

维度Clhoria传统代码生成器
开发效率Claude Code 智能理解需求,秒级生成符合规范的代码手动配置模板,生成僵化代码,需大量修改
接口管理OpenAPI + Zod 自动同步,类型安全,文档永不过期手工维护接口文档,容易不同步
代码质量TypeScript 全链路类型检查,编译时发现问题生成代码缺乏类型约束,运行时错误频发
开发反馈毫秒级热重载,修改立即生效重启服务器,等待数秒
维护成本代码规范统一,AI 理解项目架构代码量大,风格不统一,难以维护

快速开始

项目仓库地址:github.com/zhe-qi/clho…

克隆项目后,安装依赖,复制环境变量配置文件,启动开发服务器,即可访问 http://localhost:9999 查看 API 文档。

项目配套的后台管理前端基于 Refine + Shadcn 开发:github.com/zhe-qi/refi…

技术栈信息

  • 运行时:Node.js 24+
  • 框架:Hono + @hono/zod-openapi
  • 构建:Vite(基于 Rolldown)
  • ORM:Drizzle ORM
  • 数据库:PostgreSQL 18+
  • 缓存:Redis 7+
  • 权限:Casbin
  • 任务队列:pg-boss
  • 类型检查:支持实验性 ts-go

写在最后

Clhoria 不是一个试图解决所有问题的"银弹",而是在特定场景下(企业级后端 + AI 辅助开发)的最佳实践沉淀。

如果你正在寻找一个现代化的后端起点,或者想体验 AI 驱动开发的效率提升,欢迎尝试 Clhoria。

项目地址:github.com/zhe-qi/clho…

QQ 交流群:1076889416


如果这个项目对你有帮助,欢迎 Star 支持。