feat(rules): 新增零散规则管理机制

- 新增 .agents/rules/ 目录,存放模块级/场景级独立规则文件
- 新增 ulthon-rules-manager 技能,指导规则的新增/索引/格式
- 新增 ulthon-timer-multi-node 规则文件(从 PROJECT.md 迁移)
- AGENTS.md 新增「零散规则」章节,含框架级规则索引表
- PROJECT.md 新增「规则索引」章节,含全量规则索引表
- 命名约定:ulthon- 前缀为框架内置,project- 前缀为使用者业务
This commit is contained in:
augushong
2026-06-01 21:26:16 +08:00
parent 5941a61b80
commit f867c42a72
5 changed files with 225 additions and 19 deletions

View File

@@ -27,25 +27,18 @@
开发过程中补充的业务规则、团队偏好与临时约束,按条新增。规则应可执行、可复现、可验证。
> 已迁移为独立规则文件的条目保留引用,不再在此处展开内容。
### 2026-05-26: 定时任务多节点协调
新增功能:
- 多节点定时任务协调(数据库为主协调中心)
- run_type 调度auto/main/all/manual
- 主节点自动选举 + 手动切换
- 执行日志记录与查看
- 定时任务配置管理 UI
- 日志清理命令 `php think admin:timer:log:clean`
已迁移至独立规则文件:[ulthon-timer-multi-node.md](rules/ulthon-timer-multi-node.md)
新增数据表:
- ul_system_timer_config
- ul_system_timer_log
- ul_system_host 新增 is_master 字段
## 规则索引
新增命令:
- admin:timer:log:clean [--days=30]
本项目的零散规则存放在 `.agents/rules/` 目录下,每条规则一个独立文件。
新增管理页面:
- 定时器配置管理 (/admin/system.timer_config/index)
- 定时器执行日志 (/admin/system.timer_log/index)
- 主机列表增强(主节点标识、切换主节点)
| 规则文件 | 来源 | 作用域 | 说明 |
|---------|------|--------|------|
| [ulthon-timer-multi-node.md](rules/ulthon-timer-multi-node.md) | 框架 | 定时任务相关 | 多节点协调规则 |
> 新增/维护规则请参考技能:[ulthon-rules-manager](skills/ulthon-rules-manager/SKILL.md)

35
.agents/rules/.README Normal file
View File

@@ -0,0 +1,35 @@
# 零散规则目录
本目录存放按模块/场景拆分的独立规则文件,避免全局规则膨胀。
## 命名约定
- `ulthon-` 前缀:框架内置规则,框架作者维护
- `project-` 前缀:使用者业务规则,开发者维护
## 文件格式
每个规则文件包含以下章节:
```markdown
# 规则名称
> 来源框架内置ulthon-或使用者业务project-
> 作用域:适用的模块/文件/场景
> 触发条件:智能体何时应加载此规则
## 规则内容
(具体的可执行规则)
## 相关文件 / 相关数据表 / 相关命令
(关联的代码路径、配置路径等)
```
## 索引
- 框架级规则索引:根目录 `AGENTS.md` 的「零散规则」章节
- 全量规则索引:`.agents/PROJECT.md` 的「规则索引」章节
## 管理技能
新增/维护规则时,参考技能:[ulthon-rules-manager](../skills/ulthon-rules-manager/SKILL.md)

View File

@@ -0,0 +1,33 @@
# 定时任务多节点协调
> 来源框架内置ulthon-
> 作用域定时任务相关模块TimerConfig、TimerLog、Host
> 触发条件:涉及定时任务开发、多节点部署、主节点选举等场景时加载
## 规则内容
- 多节点定时任务协调以数据库为主协调中心
- run_type 调度模式auto / main / all / manual
- 支持主节点自动选举与手动切换
- 执行日志必须记录,支持查看与清理
- 定时任务配置管理通过 UI 管理
## 相关数据表
- ul_system_timer_config
- ul_system_timer_log
- ul_system_host含 is_master 字段)
## 相关命令
- `php think admin:timer:log:clean [--days=30]` — 清理过期执行日志
## 相关管理页面
- 定时器配置管理:/admin/system.timer_config/index
- 定时器执行日志:/admin/system.timer_log/index
- 主机列表增强(主节点标识、切换主节点)
## 相关技能
- [ulthon-timer](../skills/ulthon-timer/SKILL.md)

View File

@@ -0,0 +1,126 @@
---
name: "ulthon-rules-manager"
description: "零散规则管理技能。指导智能体在 `.agents/rules/` 目录下新增、维护模块级/场景级规则文件,并同步更新 AGENTS.md 与 PROJECT.md 的规则索引。触发词包括"记录规则"、"新增规则"、"写条规则"、"这个模块有约束"、"记录约束"等。"
---
# 零散规则管理Rules Manager
## 核心概念
**零散规则**是针对特定模块或场景的约束,不适合放在全局 `AGENTS.md` 中展开。它们存放在 `.agents/rules/` 目录下,每条规则一个独立文件,通过索引被智能体发现和引用。
**和 Skills 的区别**Skills 是"按场景调用的工作流说明"怎么做Rules 是"特定模块的约束/约定"(不能怎么做 / 必须遵守什么)。
## 目录结构
```
.agents/rules/
├── .README # 目录说明与格式规范
├── ulthon-timer-multi-node.md # 框架内置规则示例
├── project-xxx.md # 使用者业务规则示例
└── ...
```
## 命名约定
| 前缀 | 含义 | 维护者 | 约束 |
|------|------|--------|------|
| `ulthon-` | 框架内置规则 | 框架作者 | 随框架更新分发 |
| `project-` | 使用者业务规则 | 开发者 | 不被框架更新影响 |
文件名使用小写英文 + 短横线,语义清晰,例如:
- `ulthon-timer-multi-node.md`
- `ulthon-upload-storage.md`
- `project-order-stock-lock.md`
- `project-wechat-auth.md`
## 规则文件格式模板
```markdown
# 规则名称
> 来源框架内置ulthon-)或 使用者业务project-
> 作用域:适用的模块/文件/场景
> 触发条件:智能体何时应加载此规则
## 规则内容
(具体的可执行规则,每条应可验证)
## 相关文件
(关联的代码路径、配置路径等)
## 相关技能
(如有对应的 Skill用相对链接引用
```
必填章节:`规则内容`
按需章节:`相关文件``相关数据表``相关命令``相关技能`
## 新增规则流程
### 1. 判断是否需要新增规则
满足以下条件之一时,应建议新增规则:
- 某个模块有独特的开发约束,不适合写在全局 `AGENTS.md`
- 开发过程中发现了可复用的约定,值得记录
- 用户明确要求"记录这条规则"/"这个模块有约束"
不满足条件时:
- 如果是全局性规则 → 记录到 `AGENTS.md`(需框架作者身份确认)
- 如果是项目业务概述 → 记录到 `.agents/PROJECT.md`
### 2. 确定命名与来源
- 框架内置规则:`ulthon-{模块}-{场景}.md`
- 使用者业务规则:`project-{模块}-{场景}.md`
### 3. 编写规则文件
`.agents/rules/` 下创建文件,按格式模板填写。
规则内容要求:
- **可执行**:智能体能直接据此行动
- **可验证**:有明确的对/错判断标准
- **有边界**:明确写出作用域,避免被误用到其他模块
### 4. 更新索引(必须)
新增规则后,必须同步更新两处索引:
**AGENTS.md框架级索引**
在「零散规则」章节的索引表中新增一行(仅 `ulthon-` 前缀的规则)。
**PROJECT.md全量索引**
在「规则索引」章节的索引表中新增一行(所有前缀的规则)。
### 5. 迁移现有内容
如果规则内容原本记录在 `PROJECT.md` 的「增量规则记录」章节,迁移后应将该章节的对应内容替换为指向规则文件的引用(而非直接删除,保留历史痕迹)。
## 读取规则
智能体在以下场景应主动查阅 `.agents/rules/`
1. 首次接触项目时,通过 `AGENTS.md``PROJECT.md` 的索引了解有哪些规则
2. 涉及特定模块开发时,查找该模块是否有对应的规则文件
3. 用户提到某个模块有特殊约束时,查找对应规则
## 维护规则
- 规则内容变更时,同步更新文件内容和索引中的说明列
- 规则过期时,标记为"已废弃"或直接删除,并从索引中移除
- 框架更新时,只操作 `ulthon-` 前缀的规则文件,不动 `project-` 前缀的文件
## 索引格式
索引表统一使用以下格式:
```markdown
| 规则文件 | 来源 | 作用域 | 说明 |
|---------|------|--------|------|
| ulthon-timer-multi-node.md | 框架 | 定时任务相关 | 多节点协调规则 |
| project-order-stock-lock.md | 业务 | 订单模块 | 库存锁定规则 |
```

View File

@@ -47,6 +47,7 @@
- `source/` 下各子目录(客户端、大屏端、各类子项目等):若目录下存在 `AGENTS.md`,则该子工程规则以该文件为准
- 部署栈模式:`source/stack/` 为模式文件统一目录(含 `default/` 与各模式目录);`default/` 必须与代码库默认行为一致;默认行为相关文件变更时需同步更新 `source/stack/default/` 对应文件
- 命令执行环境:执行 `php think` 命令前需判断当前运行模式Docker 模式下宿主机可能没有 PHP不能依赖 `php think` 来检测)。判断方式:检查仓库根目录是否存在 `docker-compose.yaml` — 存在则为 Docker 模式;也可读取 `source/stack/stack.json` 了解所有可用模式及其说明。Docker 模式下所有 `php think` 命令前缀改为 `docker compose exec ulthon_admin`(如 `docker compose exec ulthon_admin php think tools:http:call`);非 Docker 模式直接在宿主机执行
- 零散规则:特定模块/场景的约束存放在 `.agents/rules/`(详见「零散规则」章节),新增/维护规则见技能:[ulthon-rules-manager](./.agents/skills/ulthon-rules-manager/SKILL.md)
- 权限:基于 `auth` 注解生成节点与鉴权;以角色为中心管理(角色、角色权限、用户角色);命令行使用见技能:[ulthon-permission-cli](./.agents/skills/ulthon-permission-cli/SKILL.md)
- 临时文件:智能体在任务中产生的临时文件(脚本、日志、缓存、产物等)统一输出到 `runtime/agents/`(可按智能体/任务再分子目录),不要放在仓库根目录;除非任务明确要求或框架约定位置属于根目录
- 调试与验证优先使用框架内置命令行工具tools:http:call、tools:db:*、tools:log:*、admin:menu:*、admin:permission:*),不需要借助外部数据库 MCP 或临时脚本
@@ -78,9 +79,24 @@
- 智能体以“框架作者”身份开发时,如需新增/调整规则,必须先与开发者确认是否记录、记录位置与具体写法,并按确认结果落到对应规则文件。
- 智能体以“使用框架的开发者”身份执行任务时,如发现需要记录或调整的项目约束,应更新到对应规则文件(业务侧约束优先记录到 `.agents/PROJECT.md` 的「增量规则记录」章节),并可按开发者要求随时调整。
## 零散规则
针对特定模块/场景的约束,不适合在全局展开,存放在 `.agents/rules/` 目录下,每条规则一个独立文件。
- 命名约定:`ulthon-` 前缀为框架内置规则,`project-` 前缀为使用者业务规则
- 管理技能:[ulthon-rules-manager](./.agents/skills/ulthon-rules-manager/SKILL.md)
### 框架内置规则索引
| 规则文件 | 作用域 | 说明 |
|---------|--------|------|
| [ulthon-timer-multi-node.md](./.agents/rules/ulthon-timer-multi-node.md) | 定时任务相关 | 多节点协调规则 |
> 使用者业务规则索引见 `.agents/PROJECT.md` 的「规则索引」章节。
## 工作流Skills
Skills 是按场景调用的工作流说明,统一以 `.agents/skills/*/SKILL.md` 为准。
Skills 是"按场景调用的工作流说明",统一以 `.agents/skills/*/SKILL.md` 为准。
- 技能命名约定:`ulthon-` 前缀为框架内置技能,`project-` 前缀为项目业务技能。新增业务技能时使用 `project-` 前缀。
@@ -121,7 +137,10 @@ ulthon_admin/
├── database/ # 数据库迁移与种子
├── source/ # 主工程外内容统一目录(多端代码/资料/附件/各类子项目)
│ └── clients/uniapp/ # uni-app 前端工程
└── .agents/ # 智能体技能与规则
└── .agents/ # 智能体协作资源
├── skills/ # 工作流技能(按场景调用)
├── rules/ # 零散规则(按模块/场景拆分)
└── PROJECT.md # 项目业务总览与规则索引
```
## 快速命令参考