什么是 Docker Agent以及一个Docker Agent示例
什么是 Docker Agent?
Docker Agent 是 Docker 推出的一款开源工具,用于编排具备特定功能和工具的人工智能代理。你无需编写代码来连接大语言模型、工具和工作流,只需使用 YAML 或 HCL 声明你的代理——包括其模型、个性、工具以及协作方式,其余工作均由 Docker Agent 自动完成。你可以将其想象为组建一支虚拟专家团队,协同合作为你解决问题。
基于现代人工智能技术,Docker Agent 提供以下功能:
- 多智能体架构——为不同领域创建专用的智能体
- 丰富的工具生态系统——代理可通过MCP协议使用外部工具和API
- 智能委派——代理自动将任务分配给最合适的专家
- YAML 配置——简单、声明式的模型和代理配置
- 高级推理——内置“思考”、“待办”和“记忆”工具,用于解决复杂问题
- 支持多个AI提供商——包括OpenAI、Anthropic、Google Gemini和Docker模型运行器
关键特性
- 创建具备专业能力的智能AI代理
- 构建多智能体团队,协同完成复杂任务
- 使用模型上下文协议(MCP)工具以实现扩展功能
示例
根据 Docker Agent 的官方文档和架构设计,搭建多智能体(Multi-Agent)系统主要依赖于声明式的 YAML 配置。Docker Agent 提供了两种核心的多智能体协作模式:
- 委托模式 (Delegation /
sub_agents):采用层级结构(父 -> 子 -> 父)。主代理通过内置的transfer_task工具将任务分配给子代理。子代理在独立的子会话中执行任务,完成后将结果返回给主代理。适合任务分配与结果汇总。 - 交接模式 (Handoffs /
handoffs):采用点对点图结构(A -> B -> C)。代理之间通过handoff工具交接整个对话上下文,下一个代理能看到完整的对话历史。适合流水线工作流或对话路由。
下面我将以委托模式为例,提供一个可执行的“自动化研究与报告生成团队”方案及详细步骤。
一、 可执行方案:自动化研究与报告生成团队
我们将搭建一个包含 3 个智能体的团队,通过主从委托的方式完成复杂任务:
coordinator(协调者):负责理解用户需求,将任务拆解并分派给研究员和作家,最后整合结果输出给用户。researcher(研究员):配备 DuckDuckGo 搜索工具(MCP),负责在网络上收集相关信息。writer(作家):负责根据研究员收集到的资料,撰写结构清晰的 Markdown 报告。
二、 详细执行步骤
步骤 1:安装 Docker Agent CLI
Docker Agent 是一个 Docker CLI 插件。你可以通过以下方式安装:
- Docker Desktop 用户:如果你使用的是 Docker Desktop 4.63 或更高版本,
docker-agent已经预装,无需额外操作。 - macOS 用户:可以通过 Homebrew 安装:
brew install docker-agent - 其他方式:你也可以从 GitHub Releases 下载二进制文件,并将其放入
~/.docker/cli-plugins/目录下。
#先下载对应的二进制版本并解压,并重命名为docker-agent ( https://github.com/docker/docker-agent/releases/ )
chmod +x docker-agent
sudo mv docker-agent /usr/local/bin/
docker-agent version
步骤 2:配置大模型 API 密钥
Docker Agent 需要调用大语言模型(如 OpenAI, Anthropic 等)来驱动智能体。请确保在你的终端环境变量中配置了相应的 API Key,例如:
export DEEPSEEK_API_KEY="your-deepseek-api-key"
步骤 3:编写多智能体配置文件 (agents.yaml)
在你的工作目录下创建一个名为 agents.yaml 的文件,并填入以下配置:
# 1. 配置文件版本 (官方推荐)
version: 8
# 2. 自定义提供者 (配置 DeepSeek 的 API 端点)
providers:
deepseek_provider:
provider: openai # DeepSeek 兼容 OpenAI 接口协议
base_url: https://api.deepseek.com # DeepSeek 官方 API 地址
token_key: DEEPSEEK_API_KEY # 指向你终端环境变量中的 API Key 名称
# 3. 模型定义 (定义具体使用的 DeepSeek 模型)
models:
deepseek_v4_flash:
provider: deepseek_provider
model: deepseek-v4-flash # 响应快,适合任务调度和信息提取
max_tokens: 8192
# 4. 智能体定义 (多智能体协作网络)
agents:
# 协调者:负责任务拆解和最终汇总
coordinator:
model: deepseek_v4_flash
description: 自动化研究团队协调者,负责拆解任务并汇总最终报告。
instruction: |
你是一个研究项目的技术主管。
当用户提出一个研究主题时,你需要:
1. 将搜索任务委托给 researcher。
2. 将撰写报告的任务委托给 writer。
3. 收集他们的结果,整合成一份最终回复给用户。
sub_agents: [researcher, writer] # 声明子代理,Docker Agent 会自动注入 transfer_task 工具
toolsets:
- type: think # 赋予协调者思考/规划能力
# 研究员:负责网络搜索
researcher:
model: deepseek_v4_flash
description: 网络研究员,擅长使用搜索引擎收集信息。
instruction: |
你是一个专业的网络研究员。
收到任务后,使用 DuckDuckGo 工具搜索相关信息,提取关键事实和数据,然后将结果返回给协调者。
toolsets:
- type: mcp
ref: docker:duckduckgo # 使用 Docker 官方提供的 DuckDuckGo MCP 搜索工具
# 作家:负责深度思考和报告撰写
writer:
model: deepseek_v4_flash
description: 专业内容作家,擅长撰写结构化、有深度的报告。
instruction: |
你是一个专业的内容作家。
收到研究员提供的原始资料后,请进行深度思考,将其整理、润色,并撰写成一份结构清晰、包含标题和要点的 Markdown 格式报告。
步骤 4:启动并运行多智能体系统
在终端中,进入 agents.yaml 所在的目录,运行以下命令启动多智能体系统:
docker agent run agents.yaml
(注:根据具体的 CLI 版本,命令可能是 docker agent -f agents.yaml,你可以运行 docker agent --help 查看准确的参数)
启动后,你可以输入类似以下的提示词进行测试:
"请帮我研究一下 2026 年 Rust 语言在 AI 基础设施领域的应用趋势,并生成一份简报。"
三、 运行原理解析
- 任务触发:用户输入指令后,
coordinator接收请求。 - 任务分发 (
transfer_task):coordinator分析需求,自动调用内置的transfer_task工具,将“搜索 Rust AI 应用”的任务发送给researcher。该工具是自动注入且免确认(Auto-Approved)的,保证了流转的顺畅。 - 子代理执行:
researcher在独立的子会话中运行,调用 DuckDuckGo MCP 工具获取网页数据,并将提取的文本返回给coordinator。 - 二次分发:
coordinator拿到原始数据后,再次调用transfer_task,将数据传给writer。 - 内容生成:
writer将数据转化为 Markdown 报告并返回。 - 最终汇总:
coordinator收到报告,将其呈现给最终用户。
通过这种 YAML 声明式的配置,Docker Agent 帮你处理了复杂的上下文传递、工具注入和会话隔离,让你只需关注角色定义和工作流设计即可。
浙公网安备 33010602011771号