Ohhnews

分类导航

$ cd ..
foojay原文

cbGenesis发布:面向BoxLang的AI原生ColdBox启动模板

#boxlang#coldbox#ai原生开发#启动模板#开源框架

Ortus Solutions 今日宣布 cbGenesis 1.0 正式发布。这是一款面向 BoxLang 的生产级 ColdBox HMVC 起步模板,也是首个从第一天起就为与 AI 编程代理协作而设计——而不仅仅是由 AI 代理生成——的模板。

二十年来,ColdBox 一直是 CFML 与 BoxLang 世界中最经受过实战检验的 HMVC 框架之一。cbGenesis 在这一基础之上,直接交付了每个团队都要亲手重写的那些部分:身份认证、权限管理、安全加固、管理面板、测试,以及 AI 代理正确扩展这一切所需的指导。

[LOADING...]

结合我们全新的 CommandBox BoxLang CLI(bx-cli),只需一条命令即可轻松上手:

coldbox create app name="my-app" skeleton="cbgenesis"

就这么简单。几分钟后,你就会看到一个由真实身份认证、真实基于角色的权限系统和真实管理面板支撑的登录界面。而不是一句让你自己去搭建的 TODO 注释。

重要提示: 它需要 CommandBox BoxLang 模块(bx-cli)。请参阅 cbGenesis 入门指南。

BoxLang:AI 已经懂得如何使用的生产力平台

如今每一款严肃的应用,在某个环节都会借助 AI 编程代理来构建。问题不再是你所在的团队是否使用 AI,而是哪个平台能让 AI 富有成效地工作。

这正是我们打造 BoxLang 的目标所在。BoxLang 是一门现代化的动态 JVM 语言,拥有 100% 的 Java 互操作性,围绕它构建的整个 Box 生态系统(ColdBox、CommandBox、TestBox、WireBox 以及数百个模块)都随附结构化、机器可读的知识,供代理直接消费:

  • Skills(技能),教会代理 BoxLang 以及技术栈中每个框架的实际运行方式
  • 实时 MCP 文档服务器,让代理读取最新文档,而不是依据训练截止日期去猜测
  • 约定优于配置,确保做事只有一种显而易见的方式,代理也能遵循它

结果就是:代理不再与平台对抗,而是与之协作。cbGenesis 就是这一理念迄今最清晰的证明。它不仅仅是一个起步模板,更是一个会明确告诉你的代理(以及你自己)这里的事情该如何完成的代码库。

把一个空白的应用交给代理,让它去实现身份认证、RBAC、管理面板和 CSRF 防护,这不仅会耗费你的时间,还会消耗 token,并牺牲一致性。由于没有任何可模仿的对象,它要么发明自己的一套约定,要么从零重新推导安全敏感的底层管道,且无法保证那些微妙之处都做对。cbGenesis 消除了这种猜测。

内含什么

cbGenesis 交付的是一套完整、可运行的管理应用,而不是一个需要你自己填充的骨架:

  • 身份认证: 基于会话的认证,支持邮箱验证和自助密码重置(安全指南)
  • SSO 与通行密钥(passkeys): 通过 cbSSO 实现的多提供商 OAuth 与账户关联,以及用于无密码登录的 WebAuthn 通行密钥
  • RBAC: 采用 resource:action 权限模型,通过 @secured 注解在框架层面强制执行
  • CSRF 防护: 对每个改变状态的请求默认拒绝,并在前端自动轮换令牌
  • API 访问: 经过哈希处理的个人 API 令牌以及 JWT 支持
  • 加固: 针对登录、注册和密码重置的基于 IP 的速率限制,以及安全响应头
  • 审计日志: 记录每一次登录、登出和访问失败,可搜索、可导出
  • 数据: BoxLang ORM 和 qb,配合数据迁移(数据库与 ORM 指南)
  • 前端: 在服务端渲染视图之上使用 Alpine.js 组件,Bootstrap 5、深色模式,由 Vite 编译并支持模块热重载(前端指南)
  • 存储与邮件: 通过 CBFS 实现的多提供商文件存储,以及通过 cbmailservices 实现的模板化邮件
  • 测试: 一套真实的 TestBox 测试套件,包含针对实体和服务的单元测试,以及执行真实 HTTP 请求的集成测试(测试指南)
  • 部署: 用于本地开发的 Docker Compose,以及一条可用于生产的部署路径(部署指南)

端到端的管理面板

[LOADING...] 登录:默认的 AuthSplit 布局 [LOADING...] 仪表盘:登录之后 [LOADING...] 用户:搜索、邀请、管理账户 [LOADING...] 角色:对权限进行分组、分配用户 [LOADING...] 权限:resource:action,按资源分组 [LOADING...] 设置:由数据库支持的配置,无需重新部署 [LOADING...] 个人资料:头像、通行密钥、API 令牌 [LOADING...] 审计日志:每一次登录和访问失败 cbGenesis 的管理体验

为 AI 辅助开发而生,而且我们做了实测

关于 AI 生产力的宣称往往很廉价,所以我们没有只是抛出一个数字,而是做了一次真实的测试。

任务: 在这个确切的代码库上添加一个完整的 CRUD 资源。一个 ORM 实体、一个服务、一个受权限门控的 JSON 处理器、一条路由,以及一个正确处理 CSRF 的 Alpine.js 前端组件。同样的任务,两次独立的代理运行,同一个提交,同一个模型。

其中一个代理无法访问 cbGenesis 的自定义技能,必须自行逆向推导每一条约定。另一个代理则被首先指向三个相关技能(cbgenesis-crud-resource、cbgenesis-csrf-frontend、cbgenesis-rbac-permissions)。

仅探索式技能辅助改进
Token 数129,672113,995减少 12%
工具调用次数3822减少 42%
实际耗时208 秒137 秒快 34%

范围完全相同,工作量却可测量地减少。这是一次单独的实测运行,而非取平均值的基准测试,因此请把它当作方向性参考。请在你关心的任务上自行运行这个对比;比起听信我们的话,我们更希望你亲自验证。

为实现这一点而交付的内容(AI-Native 指南):

  • 位于仓库根目录的 AGENTS.md——大多数代理工具(Claude Code、Copilot、Cursor)会自动加载该文件,它在代理写下第一行代码之前就描述了应用的结构、处理器、拦截器和约定。
  • 90 多个框架技能,由 ColdBox CLI 安装,涵盖 BoxLang、ColdBox、CommandBox、TestBox、WireBox 以及每个捆绑模块。
  • 六个 cbGenesis 专属技能,捕捉框架技能无法知晓的内容:这个应用的权限模型、它的 CSRF 前端契约,以及在这里新增功能时所遵循的确切形态。
  • 覆盖整个技术栈的实时 MCP 文档服务器,让代理查阅最新文档,而不是凭猜测行事。

代码一瞥

这里的安全性不是零散的 if 检查。它只在处理器动作上声明一次,之后由框架强制执行:

class extends="BaseSecureHandler" {

    @secured( "roles:admin,roles:read" )
    function index( event, rc, prc ) {
        // list + search
    }

    @secured( "roles:admin,roles:write" )
    function create( event, rc, prc ) {
        // create a role
    }

    @secured( "roles:admin,roles:delete" )
    function delete( event, rc, prc ) {
        // delete a role
    }

}

在前端,每个改变状态的请求都经过一个辅助函数,它会透明地从过期的 CSRF 令牌中恢复,而不是悄然失败:

const response = await fetchWithCsrf( this, "/users/123", "PUT", ( csrf ) => ( {
    headers : { "Content-Type": "application/x-www-form-urlencoded" },
    body    : new URLSearchParams( { ...data, csrf } ),
} ) );

如果令牌已经过期,fetchWithCsrf 会自动刷新它并重试一次。这样你就少了一类需要你或你的代理逐个表单重新引入的 bug。请在架构和处理器与路由指南中深入了解。

观看实战## 开始使用

环境要求: Java 21+、BoxLang 1.17+、CommandBox 7+、ColdBox 8+、Node.js 22+,以及受支持的数据库(MySQL 8+、MariaDB、PostgreSQL、SQLite、Oracle 或 MSSQL)。

# Install BoxLang: https://boxlang.ortusbooks.com/getting-started/installation
curl -fsSL https://install.boxlang.io/ | bash

# Install the CommandBox BoxLang CLI module
install-bx-module bx-cli

# Scaffold your app & Install Dependencies
box install coldbox-cli
box coldbox create app name="my-app" skeleton="cbgenesis"
npm install

# Database and AI setup
migrate install
migrate up --seed
coldbox ai refresh

# Run it
server start
npm run dev   # in a second terminal

打开 http://127.0.0.1:8080,用预置的管理员账户登录。包含默认凭据和配置在内的完整操作演练,请参阅入门指南和配置指南。

感谢 Loeb Electric 和 Gary Knight

cbGenesis 的存在有赖于 Loeb Electric 和 Gary Knight 的赞助。他们的投入使得我们将多年来从真实企业级 ColdBox 和 BoxLang 应用中积累的来之不易的模式,转化为整个社区都能在此基础上构建的开源基础。这正是开源应有的运作方式:一家组织投入,所有开发者受益。感谢 Gary 以及整个 Loeb Electric 团队。

想赞助 Box 生态的下一个重要部分吗?联系我们,或在 Patreon 上支持我们。

这仅仅是开始

cbGenesis 1.0 是一个起点,而非终点。我们很快就会为这个起步模板带来更多内容:更多功能、更多技能,以及更多用 BoxLang 和你所选择的代理从想法走向生产的方式。请在 GitHub 上持续关注、给仓库点个 star,并在 Ortus 社区 Slack 上告诉我们你希望接下来看到什么。

资源

别再搭建身份认证的脚手架了。开始构建只有你的应用才做的那件事吧。
分享此页面

  • 链接已复制

发现错误,或有内容要补充?在 GitHub 上编辑此页面 [LOADING...]
作者

Luis Majano

Ortus Solutions CEO - 工程师 - 作者 - ColdBox HMVC、BoxLang JVM 语言、ContentBox CMS 等项目的创造者。