amperetechcr/liteFramework

GitHub: amperetechcr/liteFramework

一款零外部依赖、专为 AI 代理直接阅读和编写代码而设计的 PHP MVC 全栈框架,内置 ORM、RBAC、统一 API 与实时 SSE。

Stars: 0 | Forks: 0

# liteFramework [![CI](https://img.shields.io/github/actions/workflow/status/amperetechcr/liteFramework/ci.yml?branch=master&label=PHPStan%20PHPCS%20PHPUnit&logo=github)](https://github.com/amperetechcr/liteFramework/actions/workflows/ci.yml) [![PHP](https://img.shields.io/badge/PHP-8.2%20|%208.3%20|%208.4-777BB4?logo=php)](https://php.net) [![PHPStan](https://img.shields.io/badge/PHPStan-level%207-brightgreen)](https://phpstan.org) [![PSR-12](https://img.shields.io/badge/PSR--12-%E2%9C%85-blueviolet)](phpcs.xml.dist) [![Sentry](https://img.shields.io/badge/Sentry-monitoring-%23362D59)](https://sentry.io) [![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE.md) **专为 AI 设计、而非为人类操刀打造的 PHP 框架。** 人类使用 AI。AI 掌控框架。零幻觉。零冗余代码。 原生集成 OpenCode + OpenClaw。8 项 skills。6 个 MCP 服务器。458 个验证测试。 ## 为什么选择 liteFramework? | | Laravel / Symfony | liteFramework | |---|---|---| | **谁编写代码?** | 人类编写 → 人为错误、上下文不完整 | **AI 编写。** 人类仅负责监督和下达指令 | | **幻觉** | 频发。AI 会凭空捏造 vendor/ 中不存在的 API | **零幻觉。** AI 会阅读框架的完整代码,并确切知道其内部结构 | | **冗余代码** | AI 生成的代码不遵循内部规范 | **零冗余。** Skills + AGENTS.md + 自动化验证 | | **依赖项** | 50 多个 Composer 包 — AI 无法查看其内部代码 | 零依赖。AI 能够阅读框架的每一行代码 | | **语言** | 英文技术术语混杂在配置中 | 100% 西班牙语。语义一致 | | **AI 学习曲线** | AI 必须依靠记忆来学习规范 | AI 通过直接阅读框架来学习 | | **源代码** | 90% 位于 vendor/ — 不透明、不可修改 | 100% 可见、强类型、有文档、可修改 | ## 功能特性 | 领域 | 能力 | |------|------------| | **🤖 AI 协同** | 8 项用于 OpenClaw 的 skills(架构、测试、SEO、UI、API、性能),6 个 MCP 服务器(git、time、fetch、sentry、context7、gh_grep),框架各层均配备 AGENTS.md,代码 100% 使用西班牙语且每个方法都有明确的 type hints | | **🔍 零依赖** | 无需 Composer,无需 npm,无需 vendor/。框架的每一行代码都是为了让 AI 能够阅读、理解和修改而编写的。没有黑盒,没有魔法 | | **🧪 质量控制** | 458 个测试 / 1084 个断言,PHPStan level 7,PHPCS 0 错误 (PSR-12),支持 3 个 PHP 版本的 CI (8.2, 8.3, 8.4)。AI 会验证其操作不会破坏任何功能 | | **架构** | 带有拦截器的 MVC,Active Record ORM,支持动态参数的路由器,辅助函数,PSR-4 namespaces | | **安全性** | 60秒宽限期的轮换 CSRF,细粒度 RBAC,防会话劫持 (指纹),数据库级 rate limiting,WAF,双重审计 (数据库 + 文件),自定义异常,CSP/HTTPS/HSTS | | **数据库** | 带有 SQLite 回退机制的 MySQL,支持备份/还原的版本化迁移,query builder,兼容 MySQL/SQLite 方言 | | **API** | 带有 15 多个控制器的单一 endpoint `POST /api`,通用 CRUD,统一契约 | | **前端** | 15 个 CSS 样式表,包含 13 种调色板、8 种风格、16 种背景;原生 SPA;无需 bundler 的 ES modules;自适应触摸/带宽 | | **实时 SSE** | daemon 自动启动,`Last-Event-Id`,文件内位置缓存 (`fseek`),优化的轮询(500ms 数据库 / 1秒 文件),使用 `session_write_close()` 的会话 | | **性能** | Apache 多线程 (XAMPP),gzip 压缩(CSS 减少约 71%),无外部依赖,mod_deflate | | **审计** | 50 多个包含丰富上下文的审计事件:IP、User-Agent、会话、设备数据、性能 | ## 唯一专为 AI 设计、而非为人类打造的 PHP 框架 **传统框架的问题:** 人类编写代码 → 人类犯错 → AI 因为不了解框架的内部结构而产生幻觉 → 冗余代码。 **liteFramework 的解决方案:** 人类下达指令 → AI 编写代码 → AI 100% 了解框架,因为没有隐藏的 vendor → 自动化验证 → 零幻觉,零冗余。 ### 代码自带说明 框架的每一层都配备专为 AI 消费设计的文档: | 阅读者 | 看到的内容 | 位置 | |---|---|---| | **OpenCode** | 实践模式:模块、路由、ORM、验证 | `.opencode/skills/lite-framework/` | | **OpenClaw** | 8 项描述框架各层的 skills | `.agents/skills/` | | **Context7 MCP** | 通过 context7 提供的 PHP、库和模式文档 | `~/.config/opencode/opencode.json` | | **gh_grep MCP** | GitHub 上的真实代码示例 | `~/.config/opencode/opencode.json` | ### 工作流:人类 → AI → 框架 ``` HUMANO da instrucción en lenguaje natural │ ▼ IA analiza con skill arquitectura ───────────────────────────┐ │ │ ▼ │ IA escribe código (modelo, ruta, controlador, vista, JS) │ │ │ ▼ │ IA ejecuta validación: PHPStan + PHPCS + PHPUnit │ │ │ ▼ │ Resultado → humano verifica o itera ←───────────────────────┘ ``` **人类绝不直接触碰代码。AI 负责编写,AI 负责验证,人类只负责监督。** ### 验证流水线 (OpenCode commands) ``` opencode run validate # PHPStan + PHPCS + PHPUnit — todo en 1 comando opencode run test # Solo tests opencode run stan # Solo PHPStan level 7 opencode run lint # Solo PSR-12 ``` ## 服务器架构 ``` index.php ├── autoload.php (PSR-4 + class_alias) ├── GestorEntorno (.env → constantes) ├── ReporteroSentry (inicialización Sentry nativa) ├── ManejadorErrores (error/exception/fatal handler → ReporteroSentry::capturar) ├── rutas/web.php │ └── Enrutador::despachar(GET|POST|PUT|PATCH|DELETE, /ruta) │ ├── Interceptor (autenticación, permisos) │ └── Controlador → Modelo → Vista/JSON ├── src/sse.php (SSE endpoint con Last-Event-Id) └── src/error.php (códigos 400|401|403|404|500|503) SSE Daemon (servidor/consola/sse_daemon.php): servidor/seguridad/SseGestor.php ├── iniciarDaemon() — auto-start via exec() si no corre ├── conectar(ultimoId) — timeout 30s, acepta Last-Event-Id ├── conectarModoArchivo() — polling 1s, caché de posición con fseek ├── conectarModoDB() — polling 500ms, cleanup cada 5 ciclos └── leerEventosDelArchivo(ultimoId, &posArchivo) — solo datos nuevos ``` ### 命名空间 | Namespace | 目录 | |-----------|-----------| | `LiteFramework\Nucleo` | `servidor/nucleo/` | | `LiteFramework\Seguridad` | `servidor/seguridad/` | | `LiteFramework\Modelos` | `servidor/modelos/` | | `LiteFramework\Controladores` | `servidor/controladores/` | | `LiteFramework\Api\Controladores` | `servidor/api/controladores/` | | `LiteFramework\Servicios` | `servidor/servicios/` | | `LiteFramework\Middleware` | `servidor/middleware/` | | `LiteFramework\Config` | `servidor/config/` | ## 环境要求 - PHP 8.2+(扩展:`pdo`、`pdo_mysql`、`pdo_sqlite`、`json`、`mbstring`、`fileinfo`,以及用于 SSE daemon 的 `exec()`) - Apache 2.4+,需启用 `mod_rewrite`、`mod_headers`、`mod_deflate` + `mod_filter` - MySQL 5.7+ / MariaDB 10.3+(内置 SQLite 作为回退方案) - Windows 下推荐使用 XAMPP;Linux 下使用原生 Apache - OpenCode + OpenClaw(可选,用于 AI 辅助开发) ## 安装说明 ``` # 1. 克隆 git clone https://github.com/amperetechcr/liteFramework.git cd liteFramework # 2. 配置环境 cp .env.example .env # 在 .env 中编辑 DB_NOMBRE、DB_USUARIO、DB_CLAVE 和 OAUTH_REDIRECT_BASE # 3. 创建数据库 mysql -u root -e "CREATE DATABASE lite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # 4. 执行迁移 php servidor/migrar.php # 5. 使用 Apache 提供服务(在 Windows 上推荐使用 XAMPP) # SSE daemon 会在首次 SSE request 时自动启动。 # 6. 在浏览器中打开 # https://localhost/liteFramework/ ``` ## 快速示例 ``` // rutas/web.php $enrutador->get('/saludo/{nombre}', function(array $params) { echo "Hola, " . h($params['nombre']); })->nombre('saludo'); // Generar URL $url = Enrutador::url('saludo', ['nombre' => 'Mundo']); // → /saludo/Mundo ``` ``` // modelo personalizado (generado automáticamente por GeneradorModulo) class Producto extends Modelo { protected static string $tabla = 'producto'; protected static array $rellenable = ['nombre', 'precio', 'stock']; public function categoria(): callable { return $this->perteneceA(Categoria::class, 'categoria_id'); } } // Uso $productos = Producto::donde('precio', '>', 100)->ordenarPor('nombre')->obtener(); $producto = Producto::buscar(42); $producto->precio = 99.99; $producto->guardar(); ``` ## 环境变量 (`.env`) | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `APP_ENTORNO` | desarrollo | `desarrollo` 或 `produccion` | | `APP_DEPURACION` | true | 在错误中显示追踪信息 | | `APP_MAX_INTENTOS_ACCESO` | 5 | 锁定前的登录尝试次数 | | `APP_BLOQUEO_MINUTOS` | 15 | 锁定持续时间(分钟) | | `DB_ANFITRION` | localhost | MySQL 主机 | | `DB_NOMBRE` | lite | 数据库名称 | | `DB_USUARIO` | root | MySQL 用户名 | | `DB_CLAVE` | (空) | MySQL 密码 | | `SESSION_INACTIVIDAD_MAXIMA` | 1800 | 不活动超时时间(秒) | | `SESSION_TIEMPO_MAXIMO` | 28800 | 最大会话时长 | | `SENTRY_DSN` | (空) | 用于错误报告的 Sentry DSN(例如:`https://key@host/project`) | | `APP_RELEASE` | (空) | 用于在 Sentry 中追踪的 release 版本(例如:`1.4.0`) | ## 安全性 - **CSRF**:64 位十六进制 token,每次请求自动轮换,为并发请求提供 60 秒宽限期 - **会话**:HttpOnly + SameSite=Lax + 指纹 SHA-256(子网 + User-Agent) — 使用 Lax 以兼容隧道(ngrok、cloudflared) - **密码**:`password_hash(PASSWORD_DEFAULT)`,需符合包含 8 个以上字符、大写字母、数字、符号的策略 - **SQL**:100% prepared statements,针对白名单进行标识符清理 - **Headers**:CSP, `X-Frame-Options: DENY`, `X-Content-Type-Options: nosniff`, HSTS, Referrer-Policy, Permissions-Policy - **审计**:双重审计(数据库 `bitacora_sistema` + `storage/logs/trazabilidad.log`),每次请求具有唯一的 Trace ID - **WAF**:自动拦截恶意工具(curl、python、wget、sqlmap、nmap、burp suite) — 将 `scan` 排除在外,以免拦截合法浏览器 - **Rate limiting**:15 分钟窗口期内,每个 IP/邮箱限制 5 次登录尝试(持久化到数据库) - **异常**:自定义层级结构(`ErrorSeguridad`、`ErrorAutenticacion`、`ErrorValidacion`),附带 HTTP 状态码 ## 实时 SSE `sse.php` 通过持久化 daemon 暴露 Server-Sent Events 事件: | 组件 | 特性 | |---|---| | `SseGestor::iniciarDaemon()` | 如果 daemon 未运行,则通过 `exec()` 自动启动 PHP daemon | | `SseGestor::conectar($ultimoId)` | 30秒超时,接受 `HTTP_LAST_EVENT_ID` 以恢复连接 | | `conectarModoArchivo()` | 1秒轮询,使用 `fseek` 进行位置缓存,按 ID 过滤 | | `conectarModoDB()` | 500毫秒轮询,每 5 个周期进行一次清理 | | `leerEventosDelArchivo()` | `fseek($posArchivo)` — 仅读取新数据 | | 会话 | 在进入循环前执行 `session_write_close()` 以防阻塞 | ``` # daemon 自动启动。要验证: php servidor/consola/sse_daemon.php status ``` ## Sentry — 零依赖监控 **无需 SDK,无需 Composer,无需 npm。** `ReporteroSentry` 使用 `file_get_contents` + `stream_context_create` 将错误直接发送至 Sentry 的 API Store。AI 只需阅读 `ReporteroSentry.php` 的约 170 行代码,就能确切了解其工作原理。 ### 工作原理 1. `ReporteroSentry::iniciar(SENTRY_DSN)` 在 `index.php` 中加载环境后执行 2. `ManejadorErrores::loggear()` 会自动调用 `ReporteroSentry::capturar()` 3. 涵盖范围:PHP 错误 (`E_USER_WARNING`)、未捕获的异常和致命错误 (`E_ERROR`) 4. 每个事件均包含:完整的 stack trace、URL、HTTP 方法、headers、环境、会话、release ### 配置 ``` # .env SENTRY_DSN=https://clave_publica@oXXXXX.ingest.us.sentry.io/XXXXX APP_RELEASE=1.4.0 ``` ### 类 | 方法 | 描述 | |--------|-------------| | `iniciar(string $dsn)` | 使用 Sentry DSN 进行初始化 | | `capturar(\Throwable $e, array $contexto)` | 将错误发送至 Sentry(由 ManejadorErrores 自动调用) | | `estaActivo(): bool` | 验证 Sentry 是否已配置 | ## 使用 OpenCode + OpenClaw 进行开发 该项目配置为由 **OpenCode**(编码)和 **OpenClaw**(测试/自动化)辅助开发,并共享相同的 MCP 服务器。 ### 可用的 MCP Servers | MCP | Transport | OpenCode | OpenClaw | |-----|-----------|----------|----------| | `context7` | remote (streamable-http) | 全局 ✅ | 已注册 ✅ | | `gh_grep` | remote (streamable-http) | 全局 ✅ | 已注册 ✅ | | `git` | local (WSL + uvx) | 全局 ✅ | 已注册 ✅ | | `time` | local (WSL + uvx) | 全局 ✅ | 已注册 ✅ | | `fetch` | local (WSL + uvx) | 全局 ✅ | 已注册 ✅ | | `sentry` | local (WSL + sentry-mcp) | 全局 ✅ | 已注册 ✅ | ### 快捷命令 (OpenCode) ``` opencode run validate # PHPStan + PHPCS + PHPUnit completo opencode run test # Ejecutar todos los tests opencode run lint # Validar PSR-12 opencode run stan # PHPStan level 7 opencode run migrar # Ejecutar migraciones opencode run benchmark # Benchmarks de rendimiento ``` ### OpenClaw Skills | Skill | 目的 | |-------|-----------| | `arquitectura` | 框的完整结构 | | `convenciones` | 命名、类型、PHP、JS、CSS、DB 规范 | | `ui-testing` | 使用 browser tool 进行 UI 测试 | | `api-testing` | REST API 测试 | | `performance-testing` | 性能基准测试与内存分析 | | `accessibility` | WCAG 2.2 审计 | | `frontend-design` | 前端设计指南 | | `seo` | SEO 优化 | 有关完整的工作流,请参阅 `AGENTS.md`。 ## 性能与服务器 | 方面 | 详情 | |---|---| | **服务器** | Apache 2.4 (XAMPP) 多线程,替代了单线程的 `php -S` | | **压缩** | 通过 `mod_deflate` + `mod_filter` 实现 gzip — CSS 8.7KB→2.5KB(减少约 71%) | | **SSE Daemon** | 持久化的 PHP 进程,自动启动,极低消耗 | | **数据库** | 原生 MySQL,SSE 优先使用文件而非数据库轮询 | | **隧道** | 兼容 ngrok(header `ngrok-skip-browser-warning`)和 cloudflared | ## API **POST /api**(`Content-Type: application/json`) ``` { "token_peticion": "csrf-token", "accion_crud": "iniciar_sesion", "correo": "admin@example.com", "clave": "MiClave123!" } ``` **统一响应格式:** ``` { "estado_operacion": true, "mensaje_error": null, "codigo_error": null, "nuevo_token": "nuevo-csrf-token", "datos": { ... } } ``` 有关完整的 endpoints 文档,请参阅 [`src/docs/API.md`](src/docs/API.md)。 ## 测试 ``` # 运行所有测试 php tests/phpunit.phar -c tests/phpunit.xml # 或通过框架的 CLI php servidor/consola/ejecutar_pruebas.php # 外部 HTTP 测试 (httpbin.org) $env:TESTS_EXTERNAS_HTTP='true'; php tests/phpunit.phar -c tests/phpunit.xml --filter AyudanteHttp # 结果:458 个测试,1084 个断言,SQLite in-memory ``` 测试套件使用内存中的 SQLite(通过 `TESTS_RUNNING` 实现),无需使用 MySQL。 复用了框架自身的 autoloader、辅助函数以及 `ConexionBaseDatos::resetearInstancia()`。 ## 截图 *(在此处添加管理面板、登录、模块生成器等的截图)* ## 常用命令 ``` php servidor/migrar.php # Ejecutar migraciones php servidor/migrar.php list # Listar migraciones pendientes php servidor/consola/generar_modulo.php # Generar módulo CRUD vía CLI php servidor/consola/crear_proyecto.php # Generar proyecto completo vía CLI php servidor/consola/ejecutar_pruebas.php # Ejecutar tests php tests/phpunit.phar -c tests/phpunit.xml # Ejecutar tests (directo) php servidor/consola/sse_daemon.php status # Verificar estado del daemon SSE # PHPStan php phpstan.phar analyse # PHPCS php phpcs.phar --standard=phpcs.xml.dist # 完整验证 php phpstan.phar analyse && php phpcs.phar --standard=phpcs.xml.dist && php tests/phpunit.phar -c tests/phpunit.xml ``` ## 许可证 Apache 2.0 — 详见 [LICENSE.md](LICENSE.md)。
标签:AI辅助编程, ffuf, MVC架构, ORM, PHP框架, RBAC权限控制, Syscall, Web开发