文档版本: 1.1
更新时间: 2026-07-09
维护者: AI Native ERP 团队
本文描述当前仓库已实现的架构,并标注部分规划能力。
想先建立产品直觉:产品理念 · 用户场景
AI 硬约束:docs/zh/ai-governance.md
把「会说话的入口」和「敢写库的后端」拆开:前端与 Agent 负责理解与编排,Application Service 负责真实业务,SQL Server / Qdrant 各管实时数据与知识,全程可审计。
┌─────────────────────────────────────────────────────────────┐
│ 用户入口层 │
│ React Web(仪表盘 / 业务页 / AI 侧边栏 / 命令面板) │
└────────────────────────┬────────────────────────────────────┘
│ HTTP / SSE + JWT
┌────────────────────────▼────────────────────────────────────┐
│ Web API 层 │
│ Chat / Auth / Sales / Purchase / Warehouse / Finance / │
│ HR / Production / Approval / Knowledge / Agent Trace │
└────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────▼────────────────────────────────────┐
│ Agent 编排层 │
│ MeAiAgentOrchestrator → Coordinator → Domain Agents │
│ Sales / Purchase / Inventory / Finance / HR / Production / │
│ General → ToolGateway → Tool Handlers │
└────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────▼────────────────────────────────────┐
│ AI 能力中台 │
│ DeepSeek LLM │ DomainClassifier │ IntentSchema │ RAG │
│ Embedding(Ollama) │ Guardrails │ IntentReasoningEngine │
└────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────▼────────────────────────────────────┐
│ ERP 业务域层 │
│ Application Services(唯一业务写库入口) │
│ Sales / Purchase / Inventory / Finance / HR / Production │
│ Approval Workflow │ Audit Log │
└────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────▼────────────────────────────────────┐
│ 数据底座层 │
│ SQL Server │ Qdrant │ Ollama Embedding │ Serilog 文件日志 │
│ (docker-compose 另含 Redis / RabbitMQ,供扩展) │
└─────────────────────────────────────────────────────────────┘
| 项目 | 职责 |
|---|---|
AiNativeERP.Domain |
实体、枚举、领域规则 |
AiNativeERP.Application |
应用服务、业务用例 |
AiNativeERP.Infrastructure |
EF Core、DbContext、种子数据 |
AiNativeERP.AI |
LLM、意图、RAG、Guardrails |
AiNativeERP.Agent |
编排、领域 Agent、Tool 路由、审批暂停 |
AiNativeERP.WebApi |
HTTP 入口、鉴权、DTO、部分 Tool Handler 注册 |
AiNativeERP.Tests |
单元测试 + 集成测试 |
已实现:
- React 18 + Vite + Ant Design
- 登录、仪表盘、销售/采购/库存/财务/HR/生产页面
- AI 助手页、全局 AI 侧边栏、SSE 流式对话
规划中(未作为当前运行时依赖): 移动端、企业微信、独立 BI 驾驶舱。
- ASP.NET Core Web API + JWT Bearer
- 统一响应与异常处理
- Swagger:
http://localhost:5195/swagger - 主要 Controller:Chat、Auth、各业务域、Knowledge、Approval、Audit、AgentTrace
| 能力 | 说明 | 状态 |
|---|---|---|
| LLM | DeepSeek Chat Completions | ✅ |
| 意图识别 | DomainClassifier → IntentSchemaRegistry → ReasoningEngine | ✅ |
| RAG | Qdrant + Ollama nomic-embed-text |
✅ |
| Guardrails | 输入/输出/工具风险检查 | ✅ |
| Embedding | Ollama | ✅ |
| NL2SQL / OCR | 架构预留 | ⏳ 未作为主路径 |
原则: AI 层不直接访问业务数据库;只产出候选 Intent/Slots 或检索知识片段。
核心组件(当前实现):
IAgentOrchestrator (MeAiAgentOrchestrator)
↓
IntentReasoningEngine(Domain → Intent,歧义则 Clarify)
↓
域直达 Tool 或 Coordinator(MeAiCoordinatorRunner)
↓
Domain Agents(Sales/Purchase/Inventory/Finance/HR/Production/General)
↓
ToolGateway → Tool Handlers → Application Services
↓
Human Approval(高风险写操作)
↓
Audit + Agent Trace / Events
执行流程:
用户请求
→ ChatController
→ Guardrails 输入检查
→ 意图推理(先 Domain 后 Intent)
→ 需要澄清则返回 Clarify
→ 可直达则走 Tool;否则 Coordinator 委派领域 Agent
→ 权限 / 业务规则 / 审计
→ Application Service
→ (写)草稿 → 确认 → 执行
→ Guardrails 输出检查
→ 结构化回复 + Trace
| 业务域 | 示例能力 | 应用服务线索 |
|---|---|---|
| 销售 | 订单、客户、报价、趋势 | SalesService |
| 采购 | 供应商、采购订单 | PurchaseServices |
| 库存/仓储 | 现存量、出入库、预警 | WarehouseServices / IInventoryService |
| 财务 | 发票、费用、收付款 | FinanceServices |
| HR | 员工、考勤、薪资 | HumanResourceServices |
| 生产 | BOM、生产订单 | ProductionServices |
| 审批 | 待办、通过、驳回 | Approval 相关服务 |
| 知识 | 制度/流程检索 | RAG + Knowledge API |
写操作要求: 权限、业务规则、审计、必要时审批、幂等与事务。
| 类型 | 技术 | 用途 | 运行必需 |
|---|---|---|---|
| 关系库 | SQL Server | 业务数据、权限、审计 | ✅ |
| 向量库 | Qdrant | 知识/意图相关向量 | AI 知识库 ✅ |
| Embedding | Ollama | 文本向量化 | AI 知识库 ✅ |
| 日志 | Serilog | 应用 / LLM / Tool / 审计 | ✅ |
| 缓存 | Redis | docker-compose 预置 | 扩展 |
| 消息队列 | RabbitMQ | docker-compose 预置 | 扩展 |
- Tool 定义包含名称、描述、权限、风险等级、是否需人工审批
- 执行结果标准化:
success/toolName/traceId/data/message - 禁止
execute_sql、query_any_table等万能工具
详见 docs/zh/tools.md。
- 输入:Prompt 注入、敏感数据
- 工具:风险评分,超阈值进入审批
- 输出:内容安全
自然语言
→ DomainClassifier
→ IntentSchemaRegistry.Resolve
→ SlotExtractor / Resolver(后端定夺最终参数)
→ Tool 或 Clarify
规则详见 docs/zh/intent-domain-rules.md。
写操作 Tool
→ 生成草稿
→ 返回待确认结果
→ 用户确认
→ 正式执行 + 审计
1. ChatController 接收消息
2. Guardrails 检查输入
3. DomainClassifier → Sales
4. IntentSchema → sales.trend.analyze / sales.report.query
5. Agent 调用 analyze_sales_trend / query_sales_report
6. Application Service 查 SQL Server
7. LLM 组织分析叙述(可选)
8. Guardrails 检查输出
9. 返回结构化结果 + Trace
1. DomainClassifier → HR(不是 Sales)
2. IntentSchema → hr.employee.query
3. query_employee → HumanResourceServices
4. 返回员工统计/列表
1. DomainClassifier → Knowledge
2. query_knowledge(仅 knowledge_article 池)
3. Qdrant 检索制度/流程正文
4. 返回结构化知识说明
Layer 1: JWT 认证
Layer 2: 角色 / API 权限
Layer 3: 数据范围 / 租户上下文
Layer 4: Guardrails 输入
Layer 5: Tool Permission
Layer 6: Human-in-the-loop(高风险)
Layer 7: Guardrails 输出
Layer 8: 审计日志 + Agent Trace
| 风险等级 | 示例 | 要求 |
|---|---|---|
| Low | 查询 | 权限 + 审计 |
| Medium | 创建草稿 | 权限 + 确认 + 审计 |
| High | 下单 / 审批 | 权限 + 审批 + 审计 |
| Critical | 付款 / 删除 | 多级审批 + 完整审计 |
通过 ILlmService 抽象;当前默认 DeepSeek。路线图包含 OpenAI / Azure / 本地模型适配。
通过向量库抽象对接 Qdrant;可扩展 Milvus / pgvector 等。
MCP Server 只能转发到 ToolGateway,不能直连数据库,也不能绕过权限与审计。
- Serilog 文件日志(应用 / LLM / Tool / 审计)
- Agent Trace API
- Agent Event 总线
- 会话历史
建议关注指标:API 延迟、LLM 成功率、Tool 成功率、意图准确率、Token / 成本。
| 文档 | 说明 |
|---|---|
| README.md | 快速开始 |
| docs/zh/ai-governance.md | AI 治理硬约束 |
| docs/zh/intent-domain-rules.md | 域/意图规则 |
| docs/zh/tools.md | Tool 清单 |
| docs/zh/api-overview.md | API 概览 |
| ARCHITECTURE.en.md | English version |