TYPO3 AI代理扩展
通过从PHP本地调用MCP ToolRegistry并与OpenAI兼容的LLM API通信,将AI代理直接集成到TYPO3中。编辑器在List模块中创建任务记录,CLI命令通过代理循环对其进行处理。
安装
composer require hn/typo3-agent然后在TYPO3后端或通过CLI激活扩展:
bin/typo3 extension:activate agent配置
首选 设置>扩展配置>代理 并配置:
| 设置 | 默认值 | 说明 |
|---|---|---|
apiUrl | https://openrouter.ai/api/v1/ | 与OpenAI兼容的API基础URL |
apiKey | *(空)* | 用于身份验证的API密钥 |
model | anthropic/claude-haiku-4-5 | 型号标识符 |
systemPrompt | *(内置)* | 代理的系统提示 |
maxIterations | 20 | 代理回路的安全限制 |
提供商示例
OpenRouter (默认--访问许多模型):
apiUrl: https://openrouter.ai/api/v1/
model: anthropic/claude-haiku-4-5开放人工智能:
apiUrl: https://api.openai.com/v1/
model: gpt-5.2任何与OpenAI兼容的API:
apiUrl: https://your-provider.com/v1/
model: your-model-id用法
创建任务
- 打开 列表模块 TYPO3后端
- 导航到您希望代理处理的页面
- 创建新 代理任务 记录
- 填写 标题 和 提示 领域
- 保存记录(状态默认为“待定”)
任务的 pid (页面ID)提供上下文——代理自动加载有关该页面的信息。 任务的 cruser_id 确定代理用于工具执行的后端用户权限。
注: TYPO3 13.4不再自动填充 cruser_id 通过数据处理程序。当 cruser_id 如果为0(默认值),则代理将回退到管理员上下文。要以特定用户身份运行代理,请设置 cruser_id 手动记录任务。
运行代理
处理所有待处理的任务:
bin/typo3 agent:run按UID处理特定任务:
bin/typo3 agent:run --task=42限制处理的任务数量:
bin/typo3 agent:run --limit=5任务生命周期
| 状态 | 值 | 描述 |
|---|---|---|
| 待定 | 0 | 已准备就绪 agent:run |
| 进行中 | 1 | 当前正在处理 |
| 已结束 | 2 | 代理已完成,结果可用 |
| 失败 | 3 | 发生错误,消息保留 |
恢复失败的任务
当任务失败时,其对话状态(消息)将被保留。要继续,请执行以下操作:
- 修复潜在问题(API密钥、网络等)
- 在后端将任务状态设置回“待定”
- 跑
agent:run再次--它将从上次保存的消息中恢复
或者直接继续: bin/typo3 agent:run --task=42
调度器
这 agent:run 命令是可调度的——您可以在TYPO3调度器中将其设置为重复任务,以自动处理挂起的任务。
建筑
该扩展使用 ToolRegistry 从 hn/typo3-mcp-server 从PHP本地访问TYPO3工具(GetPage、GetPageTree、Search、ReadTable、WriteTable等),而无需MCP协议开销。
这 messages 每个任务记录中的JSON字段存储完整的OpenAI消息数组——完整的对话状态。这实现了可恢复性和未来的聊天式界面。
发展
运行功能测试:
composer install
composer test