Files
ulthon_admin/AGENTS.md
augushong efc335e78f
All checks were successful
build-and-deploy / 直传代码并部署到 Host15 (push) Successful in 1m13s
feat(stack): 新增 docker-dev 开发模式并自动清理文件
- 新增 docker-dev 部署模式,提供包含 nginx+php-fpm、MySQL、Redis、phpMyAdmin 和 Xdebug 的完整 Docker 开发环境
- 在 StackModeService 中重写 applyMode 方法,切换模式时自动删除目标模式中不存在的已管理文件
- 新增 .docker-dev.env 配置文件并纳入 managed_files 管理,切换模式时自动复制或删除
2026-04-30 22:38:22 +08:00

158 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 智能体协作规范Ulthon Admin
- `AGENTS.md`(本文件):协作规则入口与导航
- `.agents/`工作流skills与补充文档含业务侧规则`.agents/AGENTS.md`
- 开发规范与标准流程:已整合到本文件「项目级规则」中
## 项目级规则(最高优先级 / 唯一权威)
与其他文档、聊天内容、或智能体建议冲突时,一律以本节为准。
除非明确要求,按照框架使用者的规则进行开发。
### 通用基础规范(所有开发者必须遵守)
- 技术栈ThinkPHP 8.xPHP 8+MySQL 8+Layui 2.x模板引擎ThinkPHP 内置模板引擎
- 命名规范(必读):<https://doc.ulthon.com/read/augushong/ulthon_admin/64fbcf8830640/zh-cn/2.x.html>
- 代码风格(必读,遵循 `.php-cs-fixer.php`<https://doc.ulthon.com/read/augushong/ulthon_admin/64360c249d66a/zh-cn/2.x.html>
- 表结构设计规范(必读):<https://doc.ulthon.com/read/augushong/ulthon_admin/619efc9d7af62/zh-cn/2.x.html>
- 项目文档主页:<https://doc.ulthon.com/read/augushong/ulthon_admin/home/zh-cn/2.x.html>
### 代码分层铁律(不可协商)
框架采用 Base/App 双层架构。根据当前任务的开发者身份,遵守对应约束:
**所有身份通用**
- `extend/base/` 是框架内核(`*Base``app/` 是业务代码入口,目录路径一一对应
**框架使用者(默认身份,除非明确说"修内核/改框架"**
- 严禁修改 `extend/base/` 下任何文件
- 所有开发只在 `app/` 目录进行;新写业务能力直接在 `app/` 下实现即可
- 扩展内置能力时,只改 `app/` 下对应入口类(必要时 `extends` 对应 `*Base`),保持方法签名一致
**框架作者(仅当任务涉及 `extend/base/` 时)**
- 每新增一个 Base 类,必须同时在 `app/` 提供入口类(可为空类继承 Base
- Base 内部禁止直接引用/调用 `extend/base/` 下的类(含内部互调),必须引用 `app/` 下的入口类
- 例外:`app/common.php` 引用 `extend/base/helper.php` 是全局辅助函数的唯一特许
- 核心层维护原则:稳定性优先(保证向下兼容);通用性优先(不引入具体业务逻辑)
详细架构说明与操作流程:[ulthon-base-app-architecture](./.agents/skills/ulthon-base-app-architecture/SKILL.md)
### 其他规则
- 数据库:表结构优先 Scheme`app/admin/scheme/`);避免 ENUMtools:db 用于调试,不用于“设计表结构”
- 后端代码优先使用CURD机制生成。
- 前端:视图与脚本同名配对(`*.html` + 同名 `*.js`),并按模块维护 `_common.js`
- 配套资源与多端代码:统一放在 `source/`;不影响现有 PHP/ThinkPHP 主工程运行与发布;目录约定与安全要求见 `source/README.md`(禁止提交构建产物、依赖目录等)
- 部署栈模式:`source/stack/` 为模式文件统一目录(含 `default/` 与各模式目录);`default/` 必须与代码库默认行为一致;默认行为相关文件变更时需同步更新 `source/stack/default/` 对应文件
- 命令执行环境:执行 `php think` 命令前,通过 `php think admin:stack:mode current` 检测当前模式;若为 `docker-dev`,所有 `php think` 命令前缀改为 `docker compose exec ulthon_admin`(如 `docker compose exec ulthon_admin php think tools:http:call`其他模式default/full/base-build直接在宿主机执行 `php think`,不做转换
- 接口如果需要实现接口能力需要利用框架的“页面接口同体机制”框架支持直接所有“页面输出”改为“json输出”。
- 风格:遵循项目命名规范与 PSR格式化以仓库根目录 `.php-cs-fixer.php` 配置为准(不假设本机已安装工具)
- 权限:基于 `auth` 注解生成节点与鉴权;以角色为中心管理(角色、角色权限、用户角色);命令行使用见技能:[ulthon-permission-cli](./.agents/skills/ulthon-permission-cli/SKILL.md)
- 临时文件:智能体在任务中产生的临时文件(脚本、日志、缓存、产物等)统一输出到 `runtime/agents/`(可按智能体/任务再分子目录),不要放在仓库根目录;除非任务明确要求或框架约定位置属于根目录
- 调试与验证框架内置了完善的功能验证能力可以通过命令行实现数据库操作、控制器的请求页面接口同体机制、模拟用户请求直接获得用户登录状态、日志管理、菜单管理、权限管理等等具体查看命令说明和agents技能。你可以利用这些机制直接实现功能的测试和验证无需借助各类数据库MCP、命令行脚本等方式。
### 标准开发流程Scheme + CURD默认必须执行
1. 初始化开发环境(必须提前完成)
- 按项目文档完成:依赖安装、`.env` 配置、数据库连接与基础数据初始化、确保 `php think` 可用
- 需要命令行联调与验证时,确保本地 CLI 与服务端使用同一套环境配置(尤其是缓存与数据库)
2. 设计/调整表结构Scheme
- 严格遵循表结构设计规范
- 优先通过 Scheme 机制在 `app/admin/scheme/` 代码化维护表结构(避免 ENUM
3. 同步并确保一致Scheme <-> DB
- 以代码为准(推荐):`php think scheme:sync`
- 以数据库为准:`php think scheme:make -t {table}`
- 生成 CURD 前Scheme 与数据库结构必须完全一致,否则会被拒绝
- 数据调试仅用于排错:`php think tools:db:*`(不要用来“设计表结构”)
4. 生成基础代码CURD重要只要是数据库表的功能开发必须使用CURD机制生成代码。
- 推荐先生成到临时目录确认:`php think curd -t {table} -r`
- 确认无误后再正式生成/覆盖:`php think curd -t {table}` / `php think curd -t {table} -f`
- 一旦开始在生成代码上做业务改造,后续结构变更默认走“临时生成 + 按需合并”,避免 `-f` 覆盖丢失业务修改
- CURD 命令详解:<https://doc.ulthon.com/read/augushong/ulthon_admin/curd-command/zh-cn/2.x.html>
5. 业务代码定制(仅改 `app/`
- 在生成代码基础上进行修改,仅操作 `app/` 目录
- CURD 页面不仅包含列表表格页,还会生成若干配套页面/脚本;需要结合业务逐页检查与调整:按钮、字段展示、搜索项、表单校验、交互流程等
- 如涉及接口输出或客户端uni-app / Vue 等)调用,优先使用“页面 / 接口同体机制”,并确保同一路由在 HTML 与 JSON 两种模式下都符合预期
6. 用内置 tools 与 CLI 完成功能验证(把增删改查跑通)
-`php think tools:http:call` 在命令行模拟已登录管理员请求,验证列表/详情/新增/编辑/删除链路与返回结构
- 必要时用 `php think tools:log:*` 定位异常、追踪请求链路与数据变化
7. 完成功能配套(按需)
- 菜单管理:新增/调整菜单(`php think admin:menu:*`),并与页面路径/节点保持一致
- 权限管理:基于 `auth` 注解生成/核对节点(`php think admin:permission:nodes`),为角色分配节点并为用户分配角色(`php think admin:role:*` / `php think admin:user:role:*`
- 数据库排错:必要时使用 `php think tools:db:*` 做只读检查或最小化变更
8. 最终检查与交付(完成“新功能开发”的定义)
- 后台页面:列表/表单/详情/删除等核心路径可用,交互与权限符合预期
- 命令行验证:接口增删改查已通过 tools 命令跑通,关键异常可通过日志命令回溯
- 代码规范:按仓库根目录 `.php-cs-fixer.php` 约束自查,避免引入不符合规范的写法
## 规则维护机制(框架基础 / 使用者补充)
本仓库的规则分两类:
- **框架基础规则(稳定)**:根目录 `AGENTS.md`(本文件)中的「项目级规则」为唯一权威;默认不随任务动态增长。
- **使用者补充规则(业务侧)**:开发中用户/开发者补充的“项目规则/团队偏好/临时约束”,统一记录到 [.agents/AGENTS.md](./.agents/AGENTS.md)。
维护约束(必须遵守):
- 智能体以“框架作者”身份开发时,如需新增/调整规则,必须先与开发者确认是否记录、记录位置与具体写法,并按确认结果落到对应规则文件。
- 智能体以“使用框架的开发者”身份执行任务时,如发现需要记录或调整的项目约束,应更新到对应规则文件(业务侧约束优先记录到 `.agents/AGENTS.md`),并可按开发者要求随时调整。
## 工作流Skills
Skills 是“按场景调用的工作流说明”,统一以 `.agents/skills/*/SKILL.md` 为准;`.trae/skills/` 为 Trae 集成的镜像目录(内容保持同步)。
- Base/App 架构与扩展指南(含身份分章节):[ulthon-base-app-architecture](./.agents/skills/ulthon-base-app-architecture/SKILL.md)
- CLI 命令参考文档:[ulthon-cli-reference](./.agents/skills/ulthon-cli-reference/SKILL.md)
- Scheme + CURD 工作流:[ulthon-scheme-curd-workflow](./.agents/skills/ulthon-scheme-curd-workflow/SKILL.md)
- Scheme 定义指南:[ulthon-scheme-definition](./.agents/skills/ulthon-scheme-definition/SKILL.md)
- 数据库调试命令tools:db[ulthon-db-tools-debug](./.agents/skills/ulthon-db-tools-debug/SKILL.md)
- HTTP 调用工具tools:http:call[ulthon-tools-http-call](./.agents/skills/ulthon-tools-http-call/SKILL.md)
- 日志命令tools:log[ulthon-tools-log](./.agents/skills/ulthon-tools-log/SKILL.md)
- 内置定时器与定时任务扩展:[ulthon-timer](./.agents/skills/ulthon-timer/SKILL.md)
- 页面 / 接口同体:[ulthon-page-api-dual-mode](./.agents/skills/ulthon-page-api-dual-mode/SKILL.md)
- 登录认证Session + Token[ulthon-auth-session-token](./.agents/skills/ulthon-auth-session-token/SKILL.md)
- 权限与角色管理RBAC CLI[ulthon-permission-cli](./.agents/skills/ulthon-permission-cli/SKILL.md)
- 菜单管理admin:menu:\* CLI[ulthon-admin-menu-cli](./.agents/skills/ulthon-admin-menu-cli/SKILL.md)
- ThinkPHP 控制器 URL 规则:[tp-controller-url-rules](./.agents/skills/tp-controller-url-rules/SKILL.md)
## 智能体指导
使用命令可以将内置智能体规则应用到各类智能体中。设计规则时以 AGENTS.md 和 `.agents/` 目录为主。
php think tools:agent:publish
## 项目结构速览
```
ulthon_admin/
├── app/ # 应用层(业务代码唯一入口)
│ ├── admin/ # 后台管理模块控制器、模型、视图、Scheme
│ ├── common/ # 公共代码(命令、服务、工具类)
│ └── tools/ # 工具控制器(定时任务等)
├── extend/
│ ├── base/ # 框架内核(*Base.php禁止业务修改
│ └── think/ # ThinkPHP 扩展(存储驱动、日志、迁移)
├── config/ # ThinkPHP 配置
├── public/ # Web 入口 + 静态资源
├── view/ # 视图覆盖层
├── route/ # 路由定义
├── database/ # 数据库迁移与种子
├── source/ # 多端客户端代码uni-app、Vue
│ └── clients/uniapp/ # uni-app 前端工程
└── .agents/ # 智能体技能与规则
```
## 快速命令参考
| 场景 | 命令 |
| ---------------- | --------------------------------------- |
| 同步表结构代码→DB | `php think scheme:sync` |
| 生成 SchemeDB→代码 | `php think scheme:make -t {table}` |
| CURD 代码生成 | `php think curd -t {table}` |
| 模拟 HTTP 请求 | `php think tools:http:call` |
| 查看日志 | `php think tools:log:show` |
| 数据库查询 | `php think tools:db:query "SELECT ..."` |
| 权限节点生成 | `php think admin:permission:nodes` |
| 菜单管理 | `php think admin:menu:*` |
| 框架更新 | `php think admin:update` |