ForcePilot/docs/agents/agents-config.md
Wenjie Zhang 62bb928064 refactor: 更新文档部署说明
- 移除对于双版本文档的支持,更加清晰
- 将 docs 的入口从根目录移动到子目录
2026-03-24 11:09:46 +08:00

148 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 智能体开发指南
Yuxi 的智能体系统基于 LangGraph 构建,提供了灵活而强大的 Agent 开发能力。通过统一的 `AgentManager`,系统能够自动发现和管理所有智能体,让开发者能够专注于业务逻辑的实现。
## 智能体架构
### 核心概念
系统的智能体架构围绕几个核心组件展开:
- **BaseAgent**:所有智能体的基类,定义了统一的接口规范
- **AgentContext**:智能体的配置上下文,包含模型、提示词、工具等配置
- **Graph**LangGraph 图结构,定义智能体的执行流程
- **Middleware**:中间件系统,用于扩展和定制智能体行为
### 自动发现机制
智能体采用自动发现模式。在 `backend/package/yuxi/agents/__init__.py` 中,系统会遍历 `backend/package/yuxi/agents` 目录,自动注册所有继承自 `BaseAgent` 的类。这意味着开发者只需要按照规范编写代码,智能体就会自动被系统识别,无需手动配置。
仓库预置了几个可以直接使用的智能体示例:
- **chatbot**:通用对话智能体,支持动态工具调度
- **reporter**:报表生成智能体,演示多工具协作
- **deep_agent**:深度分析智能体,支持复杂推理任务
这些示例展示了如何组织代码结构、如何定义上下文、如何组合中间件,新增智能体时可以作为参考。
## 创建自定义智能体
### 目录结构
`backend/package/yuxi/agents` 目录下创建新的智能体包,建议保持以下结构:
```
backend/package/yuxi/agents/
└── my_agent/
├── __init__.py # 暴露主类
├── graph.py # Graph 构造逻辑
└── metadata.toml # 元数据配置(可选)
```
### 基本实现
智能体类需要继承 `BaseAgent` 并实现异步的 `get_graph` 方法:
```python
from yuxi.agents.common import BaseAgent
from langgraph.prebuilt import create_agent
class MyAgent(BaseAgent):
async def get_graph(self, **kwargs):
# 获取配置上下文
context = self.get_context()
# 获取工具列表
tools = await get_tools_from_context(context)
# 构建 LangGraph 图
graph = create_agent(
model=load_chat_model(context.model),
tools=tools,
checkpointer=await self._get_checkpointer(),
)
return graph
```
### 能力配置
`capabilities` 属性用于声明智能体的前端能力,控制 UI 组件的显示:
```python
class MyAgent(BaseAgent):
capabilities = ["file_upload", "files", "todo"] # 支持文件上传、文件管理、待办事项
```
**可用能力:**
| capability | 说明 | 前端效果 |
|------------|------|----------|
| `file_upload` | 文件上传 | 显示上传按钮 |
| `files` | 文件管理 | 显示文件管理面板 |
| `todo` | 待办事项 | 显示待办组件 |
**示例:**
```python
# 只需要文件上传能力
capabilities = ["file_upload"]
# 需要文件上传和待办事项
capabilities = ["file_upload", "todo"]
# 全部能力
capabilities = ["file_upload", "files", "todo"]
```
注意:即使启用了能力,也需要在中间件中正确配置对应的处理逻辑,功能才能正常工作。例如启用 `file_upload` 需要配合 `inject_attachment_context` 中间件。
### 配置文件
可以通过 `metadata.toml` 定义智能体的元数据:
```toml
name = "我的智能体"
description = "这是一个示例智能体"
examples = [
"帮我写一首诗",
"解释一下量子计算",
]
```
这些信息会在前端界面展示,帮助用户了解每个智能体的用途。
## 相关主题
- [上下文配置](./context-config.md) - BaseContext 和自定义配置
- [工具系统](./tools-system.md) - 工具获取机制和 Skills 集成
- [中间件系统](./middleware.md) - 中间件开发与使用
- [MCP 集成](./mcp-integration.md) - MCP 服务器配置
- [SubAgents 管理](./subagents-management.md) - 子智能体配置、调用链和开发注意事项
## 开发建议
### 代码组织
- 将智能体的核心逻辑放在 `graph.py`
- 复杂的工具逻辑单独放在 `toolkits` 目录下
- 共享的组件放在 `common` 目录下
### 热重载
在容器环境中,修改代码后会自动触发热重载。如果需要强制刷新,可以调用:
```python
agent_manager.get_agent(<agent_id>, reload=True)
```
### 调试技巧
1. 使用前端的「调试面板」查看详细的请求和响应
2. 查看后端日志:`docker logs api-dev -f`
3. 利用 LangGraph 的可视化能力理解图结构
---
智能体系统的设计目标是让开发者能够快速构建和迭代 AI 应用。通过本文档介绍的概念和示例,你应该能够掌握创建自定义智能体的核心方法。遇到问题时,建议先参考预置智能体的实现,它们涵盖了大多数常见场景。