From c022c5414420741643f25b17de26e0db486e47f3 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 11 May 2026 21:20:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(ai-rule-engine):=20=E6=B7=BB=E5=8A=A0=20AI?= =?UTF-8?q?=20=E8=A7=84=E5=88=99=E5=BC=95=E6=93=8E=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 批次1:基础设施(存储层 + 项目骨架) - 批次2:REST API 基础 - 批次3:LLM 编译器 - 批次4:规则执行器 - 批次5:规则校验与兜底 - 批次6:冲突检测 Co-Authored-By: Claude Opus 4.7 --- docs/plans/2026-05-11-ai-rule-engine-plan.md | 88 ++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 docs/plans/2026-05-11-ai-rule-engine-plan.md diff --git a/docs/plans/2026-05-11-ai-rule-engine-plan.md b/docs/plans/2026-05-11-ai-rule-engine-plan.md new file mode 100644 index 0000000..bfaf343 --- /dev/null +++ b/docs/plans/2026-05-11-ai-rule-engine-plan.md @@ -0,0 +1,88 @@ +# AI 规则引擎实现计划 + +## 项目概述 + +- **目标**:实现 AI 规则引擎 MVP,支持自然语言规则→可执行代码转换 +- **技术栈**:Python 3.10+ / SQLite / REST API / RestrictedPython +- **设计文档**:`docs/plans/2026-05-11-ai-rule-engine-design.md` + +--- + +## 实现批次 + +### 批次 1:基础设施(存储层 + 项目骨架) + +| 序号 | 步骤 | 修改目标 | 涉及文件 | 验证方式 | 完成判定 | +|------|------|----------|----------|----------|----------| +| 1.1 | 创建项目结构 | 建立标准 Python 项目骨架 | `src/rule_engine/__init__.py`, `tests/`, `pyproject.toml` | `python -m pytest --collect-only` | 目录结构符合预期 | +| 1.2 | 实现 SQLite 存储层 | 数据库表创建/读写 | `src/rule_engine/store.py`, `src/rule_engine/models.py` | 单元测试 | CRUD 操作测试全绿 | +| 1.3 | 定义数据模型 | Pydantic 模型验证 | `src/rule_engine/models.py` | `pytest tests/test_models.py` | Schema 验证通过 | + +### 批次 2:REST API 基础 + +| 序号 | 步骤 | 修改目标 | 涉及文件 | 验证方式 | 完成判定 | +|------|------|----------|----------|----------|----------| +| 2.1 | 实现 FastAPI 应用骨架 | 基础 API 框架 | `src/rule_engine/api.py` | `uvicorn --help` | 服务启动成功 | +| 2.2 | 实现创建规则接口 | POST /api/rules | `src/rule_engine/api.py` | `curl localhost:8000/docs` | API 文档可见 | +| 2.3 | 实现查询/删除规则接口 | GET/DELETE /api/rules/{id} | `src/rule_engine/api.py` | `pytest tests/test_api.py` | CRUD 接口测试全绿 | + +### 批次 3:LLM 编译器 + +| 序号 | 步骤 | 修改目标 | 涉及文件 | 验证方式 | 完成判定 | +|------|------|----------|----------|----------| +| 3.1 | 实现 prompt 模板 | LLM 调用模板 | `src/rule_engine/compiler.py` | `python -c "from rule_engine.compiler import prompt"` | prompt 可导出 | +| 3.2 | 实现 LLM 调用封装 | 调用 OpenAI/ Anthropic API | `src/rule_engine/compiler.py` | `pytest tests/test_compiler.py -v` | Mock 测试通过 | +| 3.3 | 集成编译流程 | 规则描述→Python 函数 | `src/rule_engine/compiler.py` | 集成测试 | 真实调用成功 | + +### 批次 4:规则执行器 + +| 序号 | 步骤 | 修改目标 | 涉及文件 | 验证方式 | 完成判定 | +|------|------|----------|----------|----------| +| 4.1 | 实现 RestrictedPython 沙箱 | 安全代码执行环境 | `src/rule_engine/executor.py` | `pytest tests/test_executor.py` | 危险操作被拦截 | +| 4.2 | 实现规则执行函数 | 在沙箱中运行规则 | `src/rule_engine/executor.py` | 单元测试 | 正常规则执行成功 | +| 4.3 | 实现超时控制 | 防止死循环 | `src/rule_engine/executor.py` | `pytest tests/test_executor.py` | 超时抛出异常 | + +### 批次 5:规则校验与兜底 + +| 序号 | 步骤 | 修改目标 | 涉及文件 | 验证方式 | 完成判定 | +|------|------|----------|----------|----------| +| 5.1 | 实现规则匹配器 | 事实匹配规则 | `src/rule_engine/matcher.py` | `pytest tests/test_matcher.py` | 匹配逻辑正确 | +| 5.2 | 实现校验接口 | POST /api/rules/evaluate | `src/rule_engine/api.py` | 集成测试 | 完整流程跑通 | +| 5.3 | 实现 LLM Callback 兜底 | 无匹配时调用 LLM | `src/rule_engine/callback.py` | Mock 测试 | callback 触发逻辑正确 | + +### 批次 6:冲突检测 + +| 序号 | 步骤 | 修改目标 | 涉及文件 | 验证方式 | 完成判定 | +|------|------|----------|----------|----------| +| 6.1 | 实现冲突检测器 | 检测矛盾规则 | `src/rule_engine/conflict.py` | `pytest tests/test_conflict.py` | 简单冲突场景通过 | +| 6.2 | 集成冲突警告 | 创建/执行时检测 | `src/rule_engine/api.py` | 集成测试 | 冲突时返回警告 | + +--- + +## 验证命令 + +| 类型 | 命令 | +|------|------| +| 单元测试 | `python -m pytest tests/ -v` | +| 集成测试 | `python -m pytest tests/integration/ -v` | +| Lint | `python -m ruff check src/` | +| Typecheck | `python -m mypy src/` | +| 启动服务 | `uvicorn src.rule_engine.api:app --reload` | + +--- + +## 风险与依赖 + +| 风险 | 缓解措施 | +|------|----------| +| LLM API 不可用 | Mock 模式用于测试 | +| 复杂规则超出沙箱能力 | MVP 阶段限制规则复杂度 | +| SQLite 并发写入 | 后续可切换 PostgreSQL | + +--- + +## 待确认项 + +- [ ] LLM Provider 选择:OpenAI (GPT-4o) 还是 Anthropic (Claude Sonnet)? +- [ ] 是否需要 Web 管理界面? +- [ ] 规则优先级如何定义?