Skip to content

Agent 系统

Doggy Agent 系统提供四种智能代理,通过 AgentManager Facade 统一访问。

概述

Agent 系统位于 src/Service/AI/Agent/,通过 AgentManager 统一调度:

php
// src/Service/AI/AgentManager.php
class AgentManager
{
    public function getQueryAgent(): NaturalLanguageQueryAgent
    public function getVisionAgent(): VisionAgent
    public function getCodingAgent(): CodingAgent
    public function getPasswordPolicyAgent(): PasswordPolicyAgent
}

编码助手

CodingAgent 通用代码生成:

php
use App\Service\AI\Agent\CodingAgent;

$code = $codingAgent->generateCode('Create a Symfony controller for employee CRUD');

自然语言查询

NaturalLanguageQueryAgent 将自然语言转换为 DataGrid 筛选条件,与 DataGridService 深度集成:

php
use App\Service\AI\Agent\NaturalLanguageQueryAgent;

$filters = $queryAgent->parseQuery(
    text: '上个月入职的部门经理',
    entityClass: Employee::class,
    currentFilters: []
);
// 返回: { filters: [...], thought_process: "..." }

支持自然语言示例:

  • "显示状态为启用的部门"
  • "名称包含'技术'的部门"
  • "最近一周新增的员工"

工作原理

  1. DataGridService 获取实体字段 Schema
  2. 构建系统提示词(含字段名、类型、操作符)
  3. 调用 AI 模型生成 JSON 筛选条件
  4. 自动修复关联字段(如 departmentdepartment.name
  5. 支持 AND/OR 逻辑组合
  6. 处理 DeepSeek/推理模型的 </think> 标签

密码策略 Agent

PasswordPolicyAgent 将自然语言安全策略转换为 DSL 表达式:

php
$policy = $passwordPolicyAgent->parsePolicyInstruction(
    '密码长度至少8位,必须包含数字和大写字母'
);
// 返回: { and: [{field: "length", operator: ">=", value: 8}, {field: "has_number", ...}, {field: "has_uppercase", ...}] }

视觉识别

VisionAgent 图片分析(预留接口,待实现多模态支持):

php
$result = $visionAgent->analyzeImage($imageUrl, '识别这张发票的信息');

扩展

新增自定义 Agent:

  1. 创建 Agent 类,注入 AiManager
  2. AgentManager 中注册

基于 MIT 协议开源 | Copyright © 2026 Doggy