XIUNOX 使用AI工具开发和优化时使用的Rules

XIUNOX AI 辅助开发规则集

可以配合XIUNOX应用开发SKILL,用AI工具快速开发论坛插件和模板 使用

这是一套在 XIUNOX 项目实践中沉淀下来的 AI 辅助开发规则,用于约束 TRAE IDE、Codex、Claude Code、Cursor 等 AI 编码工具在 XIUNOX 项目中的行为。规则源自真实事故复盘——每一条 ⚠️ 已违反 N 次 背后都是一次线上故障或开发踩坑。

为什么需要这套规则

XIUNOX 基于 XIUNO BBS 4 重构,引入了 htmx 4、Bootstrap 5、_include() 编译缓存、hook 内联机制等技术特性。这些机制在带来性能和灵活性优势的同时,也埋下了一批隐蔽的陷阱:hook 里的 return 会从宿主函数返回、_include() 不比较源文件 mtime 导致修改不生效、CacheHelper::remember() 的哨兵格式与 set() 裸值不兼容等等。AI 工具如果不了解这些底层机制,会反复踩同样的坑。

这套规则把项目特有的技术约束、历史事故教训、以及一套"懒惰高级开发者"的工程哲学固化下来,让 AI 在动手前先过一遍检查清单,减少返工。

三个文件各自做什么

project_rules.md — 项目统一开发规范

定义 XIUNOX 的技术栈、前端强制规范、安全规范、数据与 SQL 规范、缓存规范、URL 与伪静态规则等。这是 AI 在本项目工作前必须了解的"宪法"级文档。

核心内容涵盖:

  • htmx 4 事件名格式(冒号分隔,禁止 2.x 旧名)

  • _include() 编译缓存机制(修改源文件后必须删 tmp 缓存)

  • hook 开发规范(禁止 return,终止性 exit 须注释)

  • display_name 是虚拟字段(SQL 中 SELECT 会报 1054)

  • CacheHelper::remember() 哨兵格式(set() 写裸值会被判 MISS)

  • URL 函数禁止双重包裹

  • 密码等敏感字段 param() 须传第 3 参 FALSE

每个条目标注了 ⚠️ 已违反 N 次,次数越高优先级越高。

bugfix_rules.md — 修复流程与反思机制

定义 Bug 修复的标准流程、更新日志写入规范、各类检查清单(缓存/插件卸载/JS 迁移)、以及一份按违反次数降序排列的高频违规清单。

这份文件的关键价值在于:

  • 更新日志写入规范:防并发覆盖,统一格式,强制写在项目根目录

  • 检查清单:缓存修改 11 项、插件卸载 6 项、JS 迁移 10 项,逐项核对

  • 高频违规清单:17 条已发生事故的规则,按 4 次/2 次/1 次分级,修改前必读

ponytail.md — 懒惰高级开发者哲学

这是一份工程哲学文件,约束 AI 在"写不写代码"和"写多少代码"上的决策。核心思想是:最好的代码是从未写过的代码。

7 级决策阶梯(按顺序判断,在第一个能停的地方停下):

  1. 这东西真的需要构建吗(YAGNI)

  2. 代码库里已经有了吗(复用)

  3. 标准库能做吗

  4. 平台原生功能能覆盖吗

  5. 已安装的依赖能解决吗

  6. 能不能一行搞定

  7. 最后才写最小可用代码

但这个阶梯在理解问题之后才爬——先读完任务和相关代码、追踪完整调用链,再决定用什么方案。不理解问题就追求最小 diff,不是懒,是制造第二个 bug。

对某些事情不偷懒:输入验证、错误处理、安全、可访问性、硬件校准、任何明确要求的功能。非平凡逻辑要留一个可运行的检查(assert 或小测试文件,不用框架)。

如何安装

TRAE IDE 用户

将三个 .md 文件放到项目的 .trae/rules/ 目录下:

你的项目根目录/
├── .trae/
│   └── rules/
│       ├── project_rules.md
│       ├── bugfix_rules.md
│       └── ponytail.md
├── xiunobbs-master/
│   └── ...(XIUNOX 代码)

TRAE 会自动加载 .trae/rules/ 下的所有 .md 文件作为项目规则,在每次对话中注入到 AI 的上下文里。

Codex / Claude Code / Cursor 用户

这三个文件本质上是 Markdown 格式的指令文档,可以通过各自工具的"自定义指令"或"上下文文件"机制加载:

  • Claude Code:放在项目根目录,Claude Code 会自动读取 .md 文件作为上下文;或在 .claude/ 配置中引用

  • Cursor:在 .cursorrules 文件中 @import 这三个文件,或直接将内容粘贴到 Settings → General → Rules for AI

  • Codex:作为系统提示或项目上下文文件加载

由于 project_rules.md 文件头已声明"适用于所有 AI 工具",内容不依赖 TRAE 特定功能,可直接通用。

实际工作流程

修复一个 Bug

假设用户报告"后台编辑用户积分后积分没有变化"。

AI 收到任务后,按 bugfix_rules.md 的流程执行:

  1. 前置评估:检索 project_rules.mdbugfix_rules.md,用 TodoWrite 列出待澄清问题

  2. 定位根因:Grep 相关代码,追踪完整调用链(不是只看报错的那个文件)

  3. 核对高频违规清单:发现"表单提交前禁止 jform.reset()"——检查目标模板是否踩了这个坑

  4. 修复:最小可用 diff,修复根因而非症状

  5. 清理缓存:如果改了 _include() 加载的文件,删 tmp/ 下对应编译缓存

  6. 写更新日志:用 printf >> 追加到根目录的 update_YYYYMMDD.md

  7. 反思沉淀:如果是新类型的问题,更新规则文件;如果是已违反过的,递增 ⚠️ 已违反 N 次

开发一个新功能

假设用户要"给帖子详情页加一个相关帖子推荐模块"。

AI 按 ponytail.md 的阶梯决策:

  1. 真的需要构建吗:确认需求,避免过度设计

  2. 代码库里有了吗:Grep 是否已有相关帖子插件或 hook 点

  3. 复用现有模式:参考已有插件的 hook 注册、缓存使用、Service 类结构

  4. 最小代码:不引入新依赖,不创建不必要的抽象层,复用 CacheHelper::remember() 而非手写缓存样板

  5. 遵循 project_rules.md:hook 禁止 return、语言键双写 hook/lang_*_bbs.php、缓存键用 CacheHelper::pluginKey()、JS 放 plugin/<dir>/static/js/

rules.zip 13.9KB
回复后可见 请先登录
最新回复

请先登录后再回复 登录