aceboot:基于仓颉(Cangjie)的服务端框架项目

aceboot 是用**纯仓颉(Cangjie)**编写的服务端应用框架,角色对标 Java 的 Spring Boot / Node.js 的 MidwayJS,技术路线对标 Micronaut / Quarkus —— 以编译期宏取代运行时反射,实现「声明式开发体验」与「零反射、可静态审计」的兼得。 ACE 提供从 HTTP 内核到声明式宏层、再到 ORM 的完整自底向上分层,开箱即用。 零运行时反射、性能与可审计性兼优:@Controller/@Service/@Inject/@Get 等注解在编译期展开为等价的显式注册代码(可用 --debug-macro 审计),无反射、无运行时枚举扫描,启动快、契合 AOT 原生编译与轻量部署。 高内聚、可单独引入的模块化设计:洋葱中间件内核(ace-web)、路由(ace-router)、请求解析(ace-bodyparser)等核心层不依赖 stdx、可独立单测,仅 HTTP 适配层接触 stdx,依赖边界清晰。 对标 TypeORM 的零反射 ORM:内置 ace-orm,支持多方言(SQLite/PostgreSQL/MySQL)、实体宏(@Entity/@Column/@ManyToOne/@OneToMany/@ManyToMany)、关系对象导航、QueryBuilder、连接池、事务、迁移、软删除、乐观锁、值转换器、嵌入实体等,全部经编译期宏生成、真连数据库验证。 质量保障:全量单元测试 + 真连数据库的集成测试(当前 232 条用例全绿),关键能力均有回归覆盖。 面向未来的智能体运行时:在 Web 框架之上规划智能体(Agent)运行时层,使「单体 Web 服务」与「智能体应用」共用同一套声明式基建。

分支1Tags0
文件最后提交记录最后更新时间
20 天前
2 个月前
22 天前
22 天前
22 天前
20 天前
22 天前
20 天前
20 天前
22 天前
20 天前
22 天前
20 天前
22 天前
22 天前
22 天前
22 天前
20 天前
20 天前
22 天前
20 天前
20 天前
2 个月前
22 天前
22 天前
2 个月前
22 天前
22 天前
22 天前
2 个月前
22 天前
2 个月前
22 天前

ACE

Agent for Cangjie to Engine —— 用仓颉(Cangjie)编写的服务端框架。

角色对标 Spring Boot / MidwayJS,技术路线对标 Micronaut / Quarkus:编译期宏而非运行时反射。底层是 Koa 式洋葱中间件内核,向上提供声明式开发范式(IoC、路由、校验、序列化、AOP、调度、安全),并内置智能体运行时(既用于框架自调度,也供开发者构建智能体服务)。

设计理念

  • 零运行时反射:依赖装配、路由注册、参数绑定、AOP 织入全部由编译期宏生成等价的显式代码(可 --debug-macro 审计),运行时无反射开销,AOT 友好。
  • 小而组合:每个能力是一个可单独引入的 module,能力皆中间件;纯内核(ace-web/ace-router/ace-bodyparser)不依赖 stdx、可独立单测,声明层(ace-framework-runtime 起,JSON 基于 stdx.encoding.json)与 HTTP 适配/安全/智能体层依赖 stdx。
  • 单体到微服务统一:业务面向接口,改装配即可从单体演进到微服务(ace-rpc 进程内透明切换已验证)。

能力一览

声明式核心(ace-framework,编译期宏)

  • IoC 容器:@Service/@Prototype(单例/原型作用域)、构造器注入与字段 @Inject、Bean 生命周期 @PostConstruct/@PreDestroy(优雅停机)。
  • 声明式路由:@Controller/@Get/@Post/@Put/@Delete/@Patch;路径参数 :id、查询参数(按约定推断)、String/Int64/Float64/Bool 类型化绑定。
  • 请求体与序列化:@Dto(@Body 自动 JSON→DTO,返回 DTO 自动 DTO→JSON;零反射 JSON 解析器/序列化器)。
  • 参数校验:@NotEmpty/@Email/@Size/@Min/@Max,失败自动 400 {"error":...}
  • AOP:@Timed(及复用同一织入内核的)@Cacheable(记忆化)、@Async(Future<T>)、@Scheduled(周期任务)。

中间件 / 运行时

  • 洋葱内核 App/Context/compose;官方中间件 cors/requestLog/health/错误→JSON/rateLimit
  • 安全(ace-security):JWT(HS256,基于 stdx.crypto)、jwtAuth/requireRoles/authenticated 授权 guard。

智能体 / 微服务 / 控制面

  • ace-agent:LLM 工具调用循环 + agent-as-a-service;ace-agent-claude:Claude Messages API 报文构造。
  • ace-rpc:本地实现/远程代理透明切换。
  • ace-autopilot:分级护栏控制面;ace-observability:请求/错误率/延迟指标。

模块

模块 职责 stdx
ace-web 洋葱内核(App/Context/compose)+ JSON 解析/序列化、查询解析、校验纯函数
ace-router 路由中间件,完整 path-to-regexp 规则
ace-bodyparser 请求解析(urlencoded、multipart/form-data)
ace-http 接入 stdx.net.http 的服务端适配器
ace-framework/* 声明式宏层:macros / runtime / facade / boot 四 module runtime(JSON) + boot
ace-security JWT 认证 + 授权 guard 中间件
ace-client / ace-websocket HTTP 客户端 / WebSocket(独立组件,JSR356 式注解)
ace-agent / ace-agent-claude 智能体运行时 / Claude 报文 claude 层
ace-rpc / ace-autopilot / ace-observability 微服务统一 / 控制面 / 可观测

文档

完整开发者文档见 docs/框架介绍 · 快速开始 · 核心内核 · IoC 与配置 · 控制器与路由 · 请求与响应 · AOP · 安全 · ORM · 组件扩展与封装 · 智能体运行时 · 测试与部署 · CRUD 教程 · 中间件与 HTTP 客户端 · WebSocket

内部设计规格与路线图见 doc/

快速开始

source scripts/env.sh   # 每个 shell 必做(本机构建环境,见 CLAUDE.md)
cjpm build
cjpm test               # 全 workspace 单测

声明式控制器(examples/web-serverexamples/di-demo):

@Service
public class Greeter {
    public func hi(name: String): String { "Hello, ${name}!" }
}

@Controller["/api"]
public class HelloController {
    @Inject var greeter: Greeter

    @Get["/hello/:name"]
    public func hello(name: String): String { greeter.hi(name) }

    @Post["/users"]
    public func create(body: CreateUser): UserView {   // @Body 自动反序列化 + 校验;返回自动 JSON
        let v = UserView(); v.id = 1; v.label = body.name; v
    }
}

main() { AceApplication.run("0.0.0.0", 8080) }   // IoC 自装配 + 路由 + 中间件,一行启动

声明式标注速查

标注 作用
@Service / @Prototype / @Inject 注册 Bean(单例/原型)/ 注入依赖(构造器或字段)
@PostConstruct / @PreDestroy Bean 构造后 / 优雅停机时回调
@Controller / @Get@Patch 控制器 / 五种 HTTP 动词路由
@Dto 请求体反序列化 + 响应自动序列化
@NotEmpty/@Email/@Size/@Min/@Max 字段约束(失败 400)
@Timed/@Cacheable/@Async/@Scheduled AOP:打点 / 记忆化 / 异步 / 定时

示例

  • examples/hello-api — 最小探活
  • examples/di-demo — IoC + 全套声明式特性(生命周期/校验/序列化/AOP/缓存/异步/调度)的集成验证
  • examples/web-server — 真实 HTTP 控制器 + 内置智能体 /chat
  • examples/auth-demo — JWT 认证 + 角色授权端到端

版本与 API 稳定性

遵循语义化版本。当前 0.x:API 尚未稳定,次版本可能含破坏性变更。

稳定性分级(进入 1.0 前逐步标注):

  • Stable — 已冻结,破坏性变更走主版本。
  • Experimental — 智能体运行时、ace-rpc 跨进程、ace-autopilot 等,可能调整。

1.0 目标:声明式核心(IoC/路由/校验/序列化/AOP/安全)API 冻结。

贡献

CONTRIBUTING.md。要点:每个能力做成可单独引入的 module;改代码后 cjpm test 保持全绿;声明式能力优先用宏生成、保留 --debug-macro 可审计;全局编码规范(不可变、小文件、错误处理)见 ~/.claude/rules/

状态

声明式核心(IoC + 生命周期 + 路由 + 校验 + 序列化 + AOP)、中间件、安全(JWT + 安全头/CSRF/限流)、ORM(@Entity/@Transactional/关系/迁移,SQLite/PostgreSQL/MySQL)、HTTPS/TLS、流式响应(SSE/二进制/Range)、请求上下文持有者、智能体骨架、单体/微服务透明切换、控制面与可观测均已实现并通过测试。规划中(Experimental):真实 LLM HTTP 传输、ace-rpc 跨进程 HTTP。

需求与计划见 doc/roadmap-m12-plus.mddoc/blog-ace-technical-deep-dive.md;本机构建环境配置见 CLAUDE.md

项目介绍

aceboot 是用**纯仓颉(Cangjie)**编写的服务端应用框架,角色对标 Java 的 Spring Boot / Node.js 的 MidwayJS,技术路线对标 Micronaut / Quarkus —— 以编译期宏取代运行时反射,实现「声明式开发体验」与「零反射、可静态审计」的兼得。 ACE 提供从 HTTP 内核到声明式宏层、再到 ORM 的完整自底向上分层,开箱即用。 零运行时反射、性能与可审计性兼优:@Controller/@Service/@Inject/@Get 等注解在编译期展开为等价的显式注册代码(可用 --debug-macro 审计),无反射、无运行时枚举扫描,启动快、契合 AOT 原生编译与轻量部署。 高内聚、可单独引入的模块化设计:洋葱中间件内核(ace-web)、路由(ace-router)、请求解析(ace-bodyparser)等核心层不依赖 stdx、可独立单测,仅 HTTP 适配层接触 stdx,依赖边界清晰。 对标 TypeORM 的零反射 ORM:内置 ace-orm,支持多方言(SQLite/PostgreSQL/MySQL)、实体宏(@Entity/@Column/@ManyToOne/@OneToMany/@ManyToMany)、关系对象导航、QueryBuilder、连接池、事务、迁移、软删除、乐观锁、值转换器、嵌入实体等,全部经编译期宏生成、真连数据库验证。 质量保障:全量单元测试 + 真连数据库的集成测试(当前 232 条用例全绿),关键能力均有回归覆盖。 面向未来的智能体运行时:在 Web 框架之上规划智能体(Agent)运行时层,使「单体 Web 服务」与「智能体应用」共用同一套声明式基建。

定制我的领域