AGF PHP 是一个基于 PHP 8.x、Workerman 5.1 和 NeuronAI 3.3 的单进程智能体服务端项目。
项目目标不是做一个纯前端演示,而是把后端能力先做稳定,包括:
- HTTP 和 WebSocket 双入口
- 会话管理与聊天流式输出
- RAG 知识库与检索工具
- 工具注册、安装、启用、直连测试
- 搜索引擎配置与统一搜索工具
- 单 worker 启动模式和进程内状态管理
- HTTP 服务
- WebSocket 服务
- 会话与消息持久化
SQLChatHistory对话历史恢复- 工具系统
- 系统命令执行
- Neuron 计算工具
- Neuron 文件系统工具
- 网页搜索工具
search_web
- RAG 知识库
- 知识库管理
- 知识源管理
- 检索工具注入
- 配置管理
- AI Provider
- RAG Provider
- 工具运行配置
- 搜索引擎配置
当前设置页里的搜索引擎只保留:
- Tavily
- Exa
- Brave
工具侧新增了一个 search_web,会直接读取设置里的搜索配置。
- PHP 8.x
- Workerman 5.1
- NeuronAI 3.3
- SQLite
- Vue 3 + TypeScript + Vite
agf-php/
├── app/
├── config/
├── frontend/
├── resource/
├── scripts/
├── storage/
├── tools/
├── start.php
├── start.bat
├── composer.json
└── README.md
核心业务服务:
BootstrapService.phpChatDispatchService.phpConfigService.phpConversationService.phpHttpService.phpSessionAgentFactory.phpSessionService.phpToolApprovalService.phpToolRegistry.phpWebSocketService.php
知识库与向量检索:
KnowledgeBaseService.phpKnowledgeToolService.phpRagFactory.php
基础支撑:
Config.phpDatabase.phpEventBus.phpPaths.phpAgfHttpClient.php
项目内工具目录:
Contracts/AgfToolInterface.phpSupport/AgfAbstractTool.phpSupport/SearchEngineClient.phpExtension/AgfSystemCommandTool.phpExtension/NeuronCalculatorToolkitTool.phpExtension/NeuronFileSystemToolkitTool.phpExtension/AgfSearchTool.php
Windows 下可以直接执行:
start.bat或者命令行执行:
php start.php后端默认监听:
- HTTP:
http://127.0.0.1:8786 - WebSocket:
websocket://127.0.0.1:8787
前端在 frontend/ 目录下:
cd frontend
npm install
npm run devVite 默认开发端口是 5173,并代理以下后端接口:
/health/sessions/chat/tools/config/knowledge
cd frontend
npm run build构建产物输出到 frontend/public/。
首次运行建议按下面顺序:
composer install
cd frontend
npm install然后:
php start.php如果需要开发前端,再单独起 Vite:
cd frontend
npm run dev定义服务监听地址与事件循环驱动:
Swoole优先Swow其次- 两者都没有则无法正常启动
这里保存工具安装状态、启用状态和搜索配置。
当前搜索配置结构只保留三种引擎:
tavilyexabrave
并且 search_web 工具会直接读取这里的配置。
保存 AI Provider 配置,例如默认模型厂商、模型名、上下文长度、密钥等。
保存知识库、向量库和嵌入模型相关配置。
项目内工具通过 ToolRegistry 扫描 tools/ 目录,再由 SessionAgentFactory 注入到智能体。
当前已包含:
agf_system_commandneuron_calculatorneuron_file_systemsearch_web
其中:
agf_system_command用于受控命令执行neuron_calculator用于数学计算neuron_file_system用于文件系统相关操作search_web用于网页搜索,读取设置中的 Tavily / Exa / Brave 配置
聊天链路的核心是:
- HTTP 或 WebSocket 接收请求
SessionService维护会话状态SessionAgentFactory创建或恢复 AgentChatDispatchService负责流式事件分发EventBus向前端推送 chunk 和完成事件
- 当前项目没有“提案”功能。
- 当前项目的搜索引擎设置已经收敛为 Tavily / Exa / Brave。
- 当前项目的网页搜索能力统一通过
search_web工具接入。
通常是因为:
- 搜索引擎没有配置密钥
- 搜索引擎被禁用
search_web没有安装或启用
确认 config/tools.php 中的 search_web 已安装并启用后,Agent 才会注入这个工具。
因为前端构建产物输出到 frontend/public/,如果改了 UI 或配置页面,通常需要重新执行:
cd frontend
npm run build未单独声明,按项目现状处理。