《OpenCode中的Agent、MCP、Tool、SubAgent到底是什么关系》
一、先建立整体认知:OpenCode到底是什么?
很多人第一次接触 OpenCode,会认为:
OpenCode = 一个能写代码的 ChatGPT
这个理解不完整。
更准确:
OpenCode 是一个基于 LLM(大语言模型)的 Agent 开发环境。
它不是单纯聊天,而是:
用户
|
|
需求
|
↓
OpenCode Agent
|
|--------- 思考
|
|--------- 调用工具
|
|--------- 修改文件
|
|--------- 执行命令
|
↓
完成任务
其中:
- Agent:负责思考和决策
- Tool:负责执行动作
- MCP:负责扩展 Tool
- SubAgent:负责任务分工
二、什么是 Agent?
1. Agent = AI员工
最简单理解:
Agent就是一个具有目标、能够自主规划并调用工具完成任务的AI。
普通ChatGPT:
你:
帮我写一个登录页面
AI:
给你代码
结束。
Agent:
你:
帮我实现登录页面
Agent:
① 查看项目结构
② 找前端框架
③ 找已有组件
④ 创建页面
⑤ 修改路由
⑥ 运行测试
⑦ 修复错误
⑧ 提交代码
它不是回答问题,而是执行任务。
2. Agent包含哪些能力?
一个Agent通常包含:
Agent
|
|-- 大语言模型 LLM
|
|-- Memory
|
|-- Planning
|
|-- Tools
|
|-- Environment
解释:
LLM
就是:
GPT
Claude
DeepSeek
Qwen
负责“思考”
Planning(规划)
例如:
任务:
开发购物车
Agent规划:
Step1:
分析数据库
Step2:
写接口
Step3:
写页面
Step4:
测试
Step5:
优化
Memory(记忆)
保存:
- 项目背景
- 用户习惯
- 历史任务
例如知道:
这个项目使用Vue3
后端SpringBoot
数据库MySQL
Tools
Agent真正执行工作的手。
例如:
读取文件
修改文件
运行命令
搜索代码
访问GitHub
三、什么是 Tool?
这是理解 OpenCode 最关键的概念。
一句话:
Tool就是Agent可以调用的外部能力。
LLM本身只能:
输入文字
输出文字
它不能:
❌ 打开电脑文件
❌ 运行Python
❌ git commit
❌ 查询数据库
所以需要Tool。
例如:
你问:
帮我看看这个项目有什么文件
AI:
自己不能看。
但是调用:
filesystem tool
执行:
ls
返回:
apps
backend
frontend
README.md
AI再分析。
所以:
Agent
|
调用
|
Tool
|
执行
|
返回结果
|
Agent继续思考
四、OpenCode里面有哪些常见Tool?
1. 文件工具
例如:
read_file
write_file
edit_file
作用:
读取和修改代码。
2. Shell工具
例如:
bash
terminal
作用:
执行:
npm install
python train.py
git commit
3. 搜索工具
例如:
grep
find
ripgrep
作用:
寻找代码。
4. Git工具
例如:
git status
git diff
git commit
5. MCP提供的Tool
比如:
GitHub MCP:
提供:
github.create_issue
github.search_repo
github.create_pull_request
于是Agent可以操作GitHub。
五、什么是MCP?
MCP:
Model Context Protocol
中文:
模型上下文协议
简单理解:
MCP是一套标准,让AI能够连接外部工具。
以前:
每家公司自己设计工具接口:
AI ---- GitHub
AI ---- Notion
AI ---- Database
乱。
MCP统一:
MCP协议
AI Agent
|
|
MCP Server
|
----------------
| | |
GitHub Notion Database
举例:
没有MCP:
你需要:
写GitHub插件
写认证
写API
有MCP:
安装:
github-mcp-server
授权:
OAuth
Agent直接:
查看仓库
创建Issue
提交PR
六、Agent和Tool是什么关系?
这是最重要的一句话:
Agent负责决定做什么,Tool负责真正去做。
类似:
公司:
项目经理
|
| 分配任务
↓
员工
|
| 执行动作
对应:
Agent
|
|
Tool
例如:
用户:
修改登录页面
Agent:
我要先看看代码在哪里
调用:
filesystem.read_file
Tool返回:
Login.vue
Agent:
我要修改它
调用:
filesystem.edit_file
七、什么是 SubAgent?
SubAgent:子代理。
简单:
一个Agent里面再创建多个专业Agent。
普通:
一个Agent
负责所有事情
升级:
Main Agent
|
----------------------------
| | |
Coding Testing Review
Agent Agent Agent
八、为什么需要SubAgent?
因为一个AI干所有事情,会出现:
问题1:上下文爆炸
比如:
开发商城需要:
前端代码
后端代码
数据库
测试
部署
文档
全部塞给一个Agent太长。
问题2:角色冲突
写代码需要:
“创造”
代码审查:
需要:
“批判”
一个AI同时:写 + 审自己的代码
效果不好,所以拆开。
九、实际开发例子
假设:
你现在开发一个项目,名称为mall
需求:
添加用户个人中心 mine 页面
如果没有SubAgent:
Main Agent
读取项目
写页面
调接口
测试
修改bug
提交git
有SubAgent:
Main Agent
任务拆分
|
|
|---- Frontend Agent
创建mine页面
|
|---- Backend Agent
创建用户接口
|
|---- Test Agent
测试功能
|
|---- Review Agent
检查代码
|
|---- Git Agent
提交代码
最后Main Agent汇总。
十、Agent、MCP、Tool、SubAgent关系图
你可以记这个:
用户
|
↓
Main Agent
|
----------------------------
| |
SubAgent Tool调用
| |
| |
专业任务 执行动作
|
↓
MCP Server
|
--------------------------------
| | |
GitHub DB Notion
十一、用一句话区分四个概念
| 概念 | 是什么 | 类比 |
|---|---|---|
| Agent | 会思考、规划任务的AI | 项目经理 |
| Tool | AI可以使用的能力 | 员工的工具 |
| MCP | 连接外部工具的标准协议 | 公司系统接口 |
| SubAgent | 专业分工的AI | 不同岗位员工 |
更多推荐



所有评论(0)