Aifei 是世界首个 AI Coding 框架。
Aifei 不是在传统框架之上增加 AI 用法,而是从框架结构本身出发,围绕大模型理解、生成和维护代码的方式,重新设计 Java 服务端开发。
过去三年,AI 写代码的能力快速跃升。代码生成正在从“辅助”走向“主导”,开发者的角色也会越来越多地转向需求判断、架构决策、代码审查与质量控制。
围绕 AI Coding 的模型、IDE 与各类工具快速发展,但从框架层面为 AI Coding 而设计的服务端框架仍然缺位。
传统框架面向人类手写代码时代。Aifei 面向 AI Coding 时代。
在 AI Coding 场景下,框架需要优先满足大模型对代码结构的需求:
- 更少的 Token 消耗
- 更短的上下文路径
- 更高的 Attention 浓度
- 更低的上下文噪音
- 更高的上下文信噪比
- 更稳定的生成模式
- 更直接的业务表达方式
框架不再只是人类组织代码的工具,也会成为大模型理解、生成和维护代码的上下文结构。Aifei 正是为此而生。
Just Service
Aifei 开创 Just Service 开发范式。
前后端分离架构在近十年间逐步成为主流。Web 应用中的页面路由、交互编排与渲染职责大量转移到了前端,react-router、vue-router 这样的前端路由库已经接管了过去由服务端 Controller 承担的职责。
当服务端越来越专注于 API、业务规则、数据访问与系统集成时,继续为每个业务功能保留 Controller、Repository、Mapper、Render 等多层非业务结构,已经不再必要。
对于人类来说,这是熟悉的分层方式;但对于 AI Coding 来说,这些结构会持续占据上下文预算,稀释模型对业务目标的注意力。
Aifei 顺应这一变化,将服务端代码收敛到单一 Service 层。框架搭好之后,AI 只需要围绕 Service 生成业务代码:
@Path("/vip")
public class VipService {
// 查询、排序、分页
public Page<Vip> index(Map<?, ?> filter, int pageNum, int pageSize) {
String sql = "select * from vip #where(name, '=', name) #and(status, '=', status) #orderBy(created, id)";
return Vip.sql(sql, filter).paginate(pageNum, pageSize);
}
// 插入
public Out insert(Vip vip) {
vip.insert();
return Out.ok("插入成功");
}
// 修改
public Vip edit(int id) {
return Vip.findById(id);
}
// 更新
public Out update(Vip vip) {
vip.update();
return Out.ok("更新成功");
}
// 删除
public Out delete(int id) {
Vip.deleteById(id);
return Out.ok("删除成功");
}
}
在 Just Service 之下,AI 无需在 Controller、Dao、Repository、Mapper、Render 等多层非业务结构之间映射、拆分与补全,只需围绕业务方法、SQL 与数据对象生成代码。
这一设计并非只是更少代码,而是直接作用于大模型的工作机制:从结构层面减少 Token 消耗,降低上下文噪音,让模型把注意力集中在业务语义本身。
在传统框架中,AI 往往需要同时理解 Controller 如何接参、Service 如何转调、Mapper 如何落库、Render 如何输出,以及这些结构之间的命名、映射和约定。Aifei 将这些上下文尽可能从业务生成过程中移除,让模型面对的是更短、更直接、更稳定的生成路径。
Just Service. Only Aifei can do.
极简内核
Aifei 采用极简设计。内核仅 3333 行代码,内核核心仅 260 行代码,且无第三方依赖。
JFinal 面向人类开发者的极速开发体验;Aifei 面向 AI Coding,将极简推至全新高度。
从 JFinal 到 Aifei,专注极简设计 15 年。Aifei 用更少的概念、更少的代码,换取更低的理解成本、更高的上下文信噪比与更稳定的工程结构。
Aifei 当前包含模块:
aifei:内核
aifei-db:数据库访问
aifei-enjoy:模板引擎
aifei-json:JSON 支持
aifei-log:日志支持
aifei-proxy:代理支持
aifei-undertow:Undertow 集成
aifei-all:all-in-one 分发包
HIO
Aifei 采用 HIO 自主架构,即 Handler、Input、Output 组成的处理模型,让用户自主掌控处理流程与数据结构。
Handler 用于掌控处理流程,Input、Output 用于掌控输入输出数据结构。
三者均由用户自主定义,不依赖 Servlet,可按需切换底层 IO 实现。
HIO 将请求处理流程收敛为明确、稳定且可预测的结构,有助于 AI 在生成代码时形成一致模式,减少理解成本与结构歧义。
传统框架为了扩展性往往需要引入大量概念、接口和代码,例如独立的 Render 体系;在 Aifei 中,业务层返回值如何处理、输入输出如何组织、请求链路如何编排,都可以在用户自己的 Handler 中直接掌控。
例如,新增一种业务层返回值类型处理,只需在 IoHandler 中添加对应逻辑,而不必扩展一整套框架内置组件。这让扩展性更强,也让框架保持更小的概念面与更低的上下文噪音。
集中配置与启动
Aifei 配置集中在 AifeiConfig 中。
AifeiConfig 将上游 Server、中游 Dispatcher、下游 Handler、路由、插件集中管理,避免分散约定、隐式行为与多入口配置带来的上下文噪音,使 AI 在生成、理解与修改项目结构时更稳定、更直接、更可预测。
public class AppConfig implements AifeiConfig<In, Out> {
public void config(Settings<In, Out> settings) {
settings.setServer(new UndertowServer(), new IoDispatcher());
settings.addHandler(new IoHandler());
}
public void config(Routes routes) {
routes.scan("cn.aifei.vip", new AuthInterceptor());
}
public void config(Plugins plugins) {}
}
main 方法中调用 Aifei.start(...) 即可启动:
public class AifeiVip {
public static void main(String[] args) {
Aifei.start(new AppConfig(), args);
}
}
一个 Service、一个配置中心、一个启动入口,Aifei 将应用骨架压缩到足够直接的结构中,让 AI 更容易理解项目,也更容易稳定生成业务代码。
数据库访问
Aifei 的数据库模块继承了 JFinal 数据库模块的大部分核心 API 与使用体验,但底层采用全新架构,代码量缩减近 50%。
从 API 使用层面看,Aifei 相比 JFinal 的主要变化在于:查询统一为 sql(...) + 链式调用。
这一设计并非只是 API 风格变化,而是将数据库访问收敛为统一、稳定、可预测的生成模式:
- SQL 始终通过单一入口表达
- 参数传递方式始终保持一致
- 调用结构不再分散
String sql = "select * from user #where(name, '=', name) #orderBy(created, id)";
return User.sql(sql, filter).find();
SQL 负责表达查询语义,链式 API 负责控制执行方式:
Db.sql(sql, filter).find();
Db.sql(sql, filter).paginate(1, 30);
Db.sql(sql, filter).findFirst();
Db.sql(sql, filter).findOne();
这使大模型无需在多种查询写法之间选择,也无需推断隐式行为,生成模式更加统一。
Aifei db 采用 Db + Row 模式。Db 为数据库操作入口,Row 为操作对象和操作结果。Model 也是一种 Row,而非新的抽象体系:
Row.of("user").set("name", "james").insert();
new User().name("James").insert();
User.deleteById(123);
User.of(123).name("james").update();
User.sql("select * from user where status = ?", 1).find();
User.sql("select * from user").paginate(1, 30);
这一模式将数据访问收敛为单一抽象,避免 DAO、Mapper、Entity 等多套体系并存带来的结构分裂问题。
动态 SQL 方面,Aifei 提供 #where、#and、#orderBy 等指令:
select * from user #where(name, '=', name) #and(age, '>', age)
#where 与 #and 将动态 SQL 从模板拼接转化为结构化表达。对于大模型来说,这意味着更少分支、更少模板语法维护、更低出错概率。
#orderBy 通过白名单约束排序字段,避免拼接字符串带来的 SQL 注入风险:
String sql = "select * from user #where(name, '=', name) #orderBy(created, id)";
return User.sql(sql, filter).find();
排序字段受限于白名单,无 SQL 注入风险。
更多数据库用法见官方文档: https://gitee.com/jfinal/aifei-eco/blob/main/aifei-doc/README.md
上下文腐化
上下文腐化(Context Rot)是 AI Coding 的隐性瓶颈。大模型虽然拥有越来越长的上下文窗口,但可容纳并不等于可稳定使用。
上下文可以很长,但并不代表模型能稳定、均匀、无损地使用其中所有信息。Controller、Dao、Repository、Mapper、Render、样板代码、重复配置、历史上下文和无关文件,都会稀释模型对当前业务目标的注意力。
Aifei 要优化的不是名义上下文窗口,而是有效上下文窗口。
Just Service、HIO、集中配置、统一数据库访问、极简内核,都是为了提高上下文信噪比,让模型在更短、更清晰、更稳定的结构中完成业务生成。
开源地址
官网:
https://aifei.cn
项目地址:
https://gitee.com/jfinal/aifei
Demo 地址:
https://gitee.com/jfinal/aifei-eco/tree/main/aifei-demo
生态地址:
https://gitee.com/jfinal/aifei-eco
文档地址:
https://gitee.com/jfinal/aifei-eco/tree/main/aifei-doc
One More Thing
与 Aifei 在 2026-6-6 6:6:6 这一刻同时发布的,还有官方 VIP 会员订阅服务。
获取企业级最佳实现项目源码、VIP 专属群、AI Coding 实战等资源,可订阅 Aifei VIP。