SuperAPI AI 工具集

blecsd-tui

编程与开发

查看项目

更新于 10-15 23:44

技能介绍

用途:为 blECSd(基于 TypeScript 与 bitecs ECS 的高性能终端 UI 库,0.7.0 版,需 Node.js >= 22,非 blessed 向后兼容)提供模块地图与最佳实践,用于构建、审查、重构终端界面应用。

硬性规则:纯函数式,禁用 class/this/new(Map、Set、Error 除外)、原型操作与继承;仅 src/core/ecs.ts、world.ts、types.ts 可直接 import 'bitecs',其余从 'blecsd' 或 '../core/ecs' 导入;库优先,用户自持 world 与更新循环,函数以 world 为参数;INPUT 阶段始终在更新循环首位;使用早返回与守卫子句,嵌套不超过 2–3 层;组件文件≤200 行,widget 子文件≤300 行,其他源文件≤500 行;严格 TypeScript,显式返回类型、禁用 any、ID 用品牌类型。

架构:更新循环阶段依次为 INPUT、EARLY_UPDATE、UPDATE、LATE_UPDATE、ANIMATION、LAYOUT、RENDER、POST_RENDER。逻辑归属:纯数据存 components/,查询与状态变换 systems/,用户 API widgets/,无 ECS 依赖 utils/,校验 schemas/,终端 I/O terminal/,ECS 原语 core/;组件只存数据。

API 分层:Tier 2 子路径导入(推荐,如 'blecsd/components'、'blecsd/systems'、'blecsd/widgets'、'blecsd/terminal'、'blecsd/schemas'、'blecsd/utils'、'blecsd/debug'、'blecsd/input');Tier 1 顶层 'blecsd' 约 80 个导出,适合小脚本;Tier 3 命名空间对象,适合复杂应用。可用 createApp({fullscreen, fps}) 快速启动,返回 world、program、cols、rows、render()、shutdown()、start()。

限制与注意:基础 renderSystem 只渲染边框与背景,renderContent() 为空操作,setContent/createTextEntity 的文字不会显示,需用 'blecsd/systems' 的 writeRaw() 等原生 ANSI 渲染;交互式 TUI 不要用 tsx watch 或 nodemon,应使用 dev.mjs 以 stdio: 'inherit' 派生进程;用 createBoxEntity()、createTextEntity() 等工厂而非 addEntity(),否则实体无 Renderable 不可见;避免类、直接导入 bitecs、组件放业务逻辑、any、绕过 INPUT 阶段与边界缺 Zod 校验等反模式。开发命令:pnpm install/dev/build/test/test:watch/lint/lint:fix/typecheck。