当前位置: 首页 > article >正文

Agent 的能力体系

提示词及其能力边界在将 Agent 具体应用到实际的生产环境中之前人们首先需要弄清楚的是提示词在这类应用中的作用到底是什么它的能力边界在哪里如果我们在这两个问题上的理解出现了偏差那么后续所有针对 Agent 应用的能力扩展都会被错误地理解为是一种更高级的提示词技巧。考虑到 LLM 的核心训练机制是在高维参数空间中寻找一个在给定数据分布上表现足够好的函数近似它的具体推理过程永远都是在根据某一概率分布来输出下一个文本单元在专业术语中我们称之为“Token”关于这个单位的具体计算方法读者可参考我稍后在“参考资料”一节中所提供的视频教程《关于 Token 的科普》。换言之LLM 并不是一个基于显式规则或程序控制流的命令执行系统因此当我们向 LLM 提供一个提示词时需要记得自己并非是在对它下“命令”而是在为其提供符合当前环境需求的上下文信息以便影响它输出的概率分布。这就意味着提示词调整的是 LLM 输出的概率倾向它无法改变 LLM 的能力边界。举个例子当我们在 Agent 应用中输入并提交如下语句作为提示词时它们的功能分别是“你是一名专业的法律顾问”用于角色塑造Persona目的是影响语气、知识调用倾向与表达方式。“请以 JSON 格式输出”用于输出约束Format Constraints目的是规范结果结构提高可读性与可解析性。“请分步骤推理”用于任务定义Task Framing目的是明确问题范围限制 LLM 的推理方向。由此可见提示词的作用本质上都是在向 LLM 注入用于影响其行为模式的额外上下文信息。尽管学习提示词的使用技巧可以在一定程度上提高任务完成质量。但它们终归只是一种“软控制”手段并非系统层面的强约束。换言之无论我们如何编写提示词它们都免不了会具有以下三个典型特征。不确定性相同的提示词在不同时间、不同上下文长度、甚至不同模型版本下都可能产生差异结果。提示词并不能保证稳定行为。非隔离性多轮对话中的历史信息可能影响当前输出规则之间也可能互相干扰。提示词并不具备真正的“作用域隔离”。不可验证性提示词很难像代码一样做单元测试。一次微小改动可能影响多个场景而这种影响往往难以预判。因此当问题涉及到针对 Agent 应用的“能力扩展”时我们需要做的就不再仅仅是“写好提示词”那么简单了。因为提示词虽然可以很好地引导 LLM 的推理路径、规范其输出格式并优化文本的表达质量从而在一定程度上提升任务的成功率但对于面向生产环境的具体应用以下能力是提示词无法提供的调用外部的服务/工具因为这需要独立于 LLM 之外的代码执行环境以及相关的程序逻辑支持管理应用的执行状态因为这需要执行面向数据库管理系统、文件管理系统的增删改查操作保证行为逻辑的可复用因为即使是相同的提示词它在不同时空条件下会产生不同的结果除了能力层面的限制之外提示词还存在着工程与经济层面的约束它给 LLM 带来的计算成本在一定程度上也会成为 Agent 应用的另一种能力边界。毕竟如今的主流 LLM 服务提供商例如 OpenAI、Google、Anthropic 等公司都是以 Token 为单位来进行计费的。众所周知用户与 LLM 的每次对话都会产生一定数量的 Token 消耗越复杂的对话消耗的 Token 数量就越多。因此当我们在对话中叠加越来越多的提示词时免不了会导致系统成本的大幅上升。在个人使用场景中这个成本或许还尚可承受一旦进入到具体的生产环境中问题就会迅速被放大它主要体现在以下四个方面。版本管理困难提示词通常以自然语言形式存在缺乏清晰的版本结构很难精确追踪到具体的变更行为回归问题一次看似微小的改动可能导致多个下游场景输出变化而这些变化难以预估可读性下降当规则不断叠加时提示词会逐渐演变成“规则堆砌文本”。新成员难以理解设计意图知识隐性化大量设计经验隐藏在自然语言中无法结构化复用也无法模块化组合。这意味着如果我们在实际生产环境中不可避免地需要高频调用 LLM那么其“臃肿的系统提示词”无疑就会成为长期的成本负担这将大大限制 Agent 应用的能力扩展空间。也正是在这样的背景下业界才会一直持续不断地寻求在更高层次上对 Agent 应用的能力体系展开进一步的探索这探索的结果中就包括了由 Anthropic 公司提出的 MCP 服务与 Skills 机制它们也正是我们接下来要讨论的重点。如果读者想更详细地了解提示词与上下文工程在 Agent 应用中的工作原理也可以参考本文在“参考资料”一节中提供的视频教程《关于提示词与上下文工程的科普》。MCP 服务MCP即 Model Context Protocol中文可翻译为“模型上下文协议”是由 Anthropic 公司提出并推广的一种用于连接 LLM 与外部服务/工具的通信协议它的设计目标是寻求在 Agent 应用的底层架构上解决以下三个问题工具接入的标准化问题在 MCP 出现之前每一个 LLM 平台都需要自行定义工具调用方式例如 OpenAI 所推出的 function calling 机制Agent 应用的开发者们往往需要针对不同 LLM 重复编写适配逻辑。现在MCP 让这些工具能以统一协议的形式被 LLM 调用了这显然有助于 Agent 应用与 LLM 的耦合度。跨平台复用问题如果工具能以统一协议的形式被 LLM 调用而非绑定在某一个 API 上那么理论上它就可以被不同的 LLM 实例调用这有助于提高 Agent 应用的可移植性。安全边界与能力隔离问题LLM 本身并不直接拥有执行权限想要发挥其执行功能往往需要通过操作系统进行精确地授权这类授权通常都存在着一定的误操作风险。有了 MCP 协议之后我们就可以轻松地让它在被授权的范围内调用外部服务/工具。这种“能力显式声明”的方式有助于建立清晰的安全边界。总而言之该协议的最大作用是为 LLM 与其要调用的外部工具建立通信桥梁Agent 应用通常会基于该协议接入用于连接特定工具的中间件来构建这样的桥梁从而实现“能力扩展”。在专业术语中这样的中间件被称为“MCP 服务MCP Server”。那么在实际生产环境中我们该如何使用 MCP 服务呢MCP 服务的接入与使用为了让读者对 MCP 服务能有一个更直观的认识我接下来将继续以 OpenCode 这个 Agent 应用为例里具体演示一下 MCP 服务在 Agent 应用中的接入与使用方法。一般来说当我们决定在 Agent 应用中接入一个 MCP 服务时需要完成以下三个配置步骤。根据要调用的外部服务/工具找到要接入的 MCP 服务这一步骤可以通过搜索 MCP 服务列表来完成。例如如果我们想在 Agent 应用中调用网页浏览器那么就可以到以下几个目前比较常用的 MCP 服务列表网站中搜索“浏览器自动化”这样的关键字这些网站通常都会返回chrome-devtools-mcp、playwright这些 MCP 服务。Anthropic MCP DirectoryAnthropic 官方提供的 MCP 服务列表。Awesome MCP Servers这是一个按照经典的Awesome系列风格来组织的 MCP 服务列表目前在 Github 上很受欢迎。MCP.so这是目前全球最大的 MCP 资源聚合平台现已收录超过 8000 个 MCP 服务并且还在不断更新中。魔塔社区的 MCP 广场由魔塔社区维护的中文 MCP 服务列表收录了 1000 个 MCP 服务。选择要接入 MCP 服务并查阅其说明文档目前主要的 MCP 服务都会提供详尽的说明文档其中会包含它们的各种接入参数以及面向各种 Agent 应用的配置方法。例如playwright这个 MCP 服务的说明文档如图 1 所示。图 1playwright 的说明文档根据 MCP 服务的说明文档来完成接入配置这一步骤需要我们根据 Agent 应用的官方文档将 MCP 服务的接入参数填写到相应的配置文件中。例如在 OpenCode 中我们可以通过在其配置文件即opencode.json文件中添加如下内容来接入playwright这个 MCP 服务。{mcp: {playwright: {type: local,command: [npx,-y,playwright/mcplatest]}}}根据 OpenCode 的官方文档MCP 服务的配置信息需要被放置在mcp字段下每一个 MCP 服务都需要以一个唯一的名称例如playwright来进行配置其配置方式主要分为本地接入与远程接入两种类型具体如下远程接入在这种配置类型下MCP 服务的配置参数主要包含type、url、enabled等字段。其中type字段的值应固定为remote而url字段用于指定该 MCP 服务所在的地址enabled字段用于指定是否启用该服务。例如以下是远程接入jira这个 MCP 服务的官方示例{$schema: https://opencode.ai/config.json,mcp: {jira: {type: remote,url: https://jira.example.com/mcp,enabled: true}}}本地接入在这种配置类型下MCP 服务的配置参数主要包含type、command、environment、enabled等字段。其中type字段的值应固定为local而command字段用于指定该 MCP 服务的启动命令及其参数environment字段用于指定启动该服务所需设置的环境变量enabled字段用于指定是否启用该服务。例如以下是本地接入github这个 MCP 服务的示例{$schema: https://opencode.ai/config.json,mcp: {github: {type: local,command: [npx,-y,modelcontextprotocol/server-github],environment: {// 此处的 token 需要用户自行前往 GitHub 获取GITHUB_PERSONAL_ACCESS_TOKEN: your github personal access token},enabled: true}}}目前的 MCP 服务主要有 NPM 和 UV 两种打包方式所以它们的启动命令通常是npx或uvx。例如之前配置的playwright这个 MCP 服务的启动命令是npx -y playwright/mcplatest而fetch这个用于抓取网页信息的 MCP 服务的启动命令就是uvx mcp-server-fetch了。在完成了上述配置之后我们只需在 OpenCode TUI 中执行/mcps命令就可以看到所有已配置的 MCP 服务并管理它们的接入状态了如图 2 所示。图 2在 OpenCode TUI 中确认 MCP 服务的接入状态在确认playwright这个 MCP 服务已成功接入之后我们就可以试着在 OpenCode TUI 中使用提示词让它去调用网页浏览器打开 Twitter/X并发一个测试推文来检查这个 MCP 服务的功能是否可用了如图 3 所示。图 3试用 playwright 服务接入 MCP 服务的成本与风险在计算机的世界中任何针对应用程序的能力扩展都会引入新的复杂度。MCP 服务也不例外。在实际生产环境中它至少带来三类新的成本部署复杂度提升接入 MCP 服务意味着我们所使用的 Agent 应用已从简单的“LLM 提示词”结构变成了“LLM MCP 外部服务/工具”的复杂结构这无疑会增加应用的部署与维护难度。安全风险扩大一旦 LLM 具备了调用外部能力的通道我们就必须开始考虑系统权限的管理、输入校验与调用审计。否则 LLM 输出的错误判断很可能会被转化为真实的程序执行风险。依赖管理问题外部服务/工具的可用性、版本变更以及接口兼容性等因素都会直接影响到 Agent 应用的稳定性。能力扩展的同时也意味着更多外部依赖。因此对于 Agent 应用来说MCP 服务从来都不是“多多益善”的能力增强工具它们只应被用于那些确实有必要使用外部工具的应用场景。如果仅仅是文本生成与结构化输出过早在 Agent 应用中引入 MCP 服务反而会造成不必要的资源浪费用户应根据自己的实际需求来决定启用哪些 MCP 服务。为了解决这个问题我们通常会分以下两个作用域的配置文件来管理 MCP 服务。系统级配置文件该文件的存储路径通常为~/.config/opencode/opencode.json我们在其中配置的 MCP 服务往往是所有应用场景都会用到的通用服务例如playwright、fetch等项目级配置文件该文件的存储路径通常为项目根目录/.opencode/opencode.json我们在其中配置的 MCP 服务往往是针对特定项目或应用场景的专用工具例如用于操作数据库的MongoDB或者用于 WebUI 设计的figma等。如果从能力体系的层次来看MCP 服务属于“能力接入层”。它解决的是 LLM 的外部调用能力而提示词则是用于控制 LLM 的单次推理行为与输出表现的。二者并不冲突但也不在同一层级。理解这一点才能避免将 MCP 误解为一种“高级提示词技巧”从而在架构设计上做出错误决策。

相关文章:

Agent 的能力体系

提示词及其能力边界 在将 Agent 具体应用到实际的生产环境中之前,人们首先需要弄清楚的是:提示词在这类应用中的作用到底是什么?它的能力边界在哪里?如果我们在这两个问题上的理解出现了偏差,那么后续所有针对 Agent …...

OpenClaw语音控制之使用 Vosk 实现离线语音控制

10.1 Vosk 简介与特性 10.1.1 什么是 Vosk Vosk 是一个离线开源语音识别工具包,基于 Kaldi 语音识别框架开发。它能够在无需网络连接的情况下,为应用程序提供实时、准确的语音识别能力。Vosk 由 Alpha Cephei Inc 开发和维护,采用 Apache 2.0 开源协议,允许在商业和个人项…...

Linux下C程序编译过程详解与GCC工具链使用

1. 从源代码到可执行文件的旅程作为一名在Linux环境下工作多年的开发者,我经常需要深入理解程序从源代码到可执行文件的完整编译过程。这不仅有助于调试复杂问题,还能让我们在性能优化时做出更明智的决策。让我们以一个简单的"Hello World"程序…...

RT-Thread环境搭建与内核开发实战指南

1. RT-Thread体验环境搭建作为一名嵌入式开发者,初次接触RT-Thread时最关心的就是如何快速搭建实验环境。RT-Thread作为一款国产实时操作系统,其优势在于既支持真实硬件平台也兼容虚拟环境,这为学习者提供了极大便利。在实际工作中&#xff0…...

openclaw本地安装包一键安装 集成400+大模型+微信、企业微信、钉钉、飞书图形界面参数,无需复杂配置

前言:作为主打本地化的轻量级 AI 智能体,OpenClaw 凭借本地运行无隐私泄露、零代码一键部署、免费开源无捆绑的核心优势,成为办公党和技术爱好者的效率神器。继 v2.4.1 版本收获大量好评后,OpenClaw v2.60 正式发布,本…...

HCSR04超声波测距库底层实现与嵌入式工程实践

1. HCSR04超声波测距库深度解析:面向嵌入式工程师的底层实现与工程实践1.1 库定位与工程价值HCSR04超声波传感器是嵌入式系统中成本最低、部署最便捷的距离感知方案之一,广泛应用于智能小车避障、液位监测、工业物位检测及IoT环境感知等场景。其核心优势…...

【2026年最新600套毕设项目分享】基于Springboot的克州旅游网站(14322)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...

【2026年最新600套毕设项目分享】springboot旅游出行指南系统(14321)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...

OpenClaw+千问3.5-9B写作辅助:中英文技术文档自动互译

OpenClaw千问3.5-9B写作辅助:中英文技术文档自动互译 1. 为什么需要自动化文档翻译 作为技术文档工程师,我每周都要处理大量中英文技术文档的互译工作。传统工作流需要反复在翻译软件、术语表和Markdown编辑器间切换,不仅效率低下&#xff…...

SH_MLCD_J:Sharp HR-TFT内存液晶驱动库详解

1. 项目概述SH_MLCD_J 是一款专为驱动 Sharp 公司 HR-TFT 系列单色内存液晶显示屏(Monochrome Memory LCD)设计的嵌入式底层图形库。该库被广泛应用于秋月电子等国内元器件分销商所售的 SHARP 原厂模组,典型型号包括 LS013B7DH03、LS027B7DH0…...

4DGL-uLCD-SE:轻量级嵌入式GUI驱动框架

1. 项目概述4DGL-uLCD-SE 是一个面向嵌入式系统设计的轻量级、可移植的图形用户界面(GUI)驱动框架,专为 4D Systems 公司推出的 uLCD 系列智能显示模块(如 uLCD-320GL, uLCD-70DT, uLCD-43PT 等)而构建。该库并非直接操…...

Linux进程信号详解(一):信号快速认识

一、信号快速认识信号(现实生活中):闹钟、红绿灯、上课铃声、狼烟、电话铃声、肚子叫、敲门声、脸色不好 ....1.1 生活中的信号 —— 快递的例子想象你网购了很多商品:你能识别快递:你知道快递员打电话时该怎么处理。即…...

Arduino驱动AY-3-8910 PSG芯片的轻量级音频库

1. 项目概述 MOS Electronics AY-3-8910 Library 是一个面向 Arduino 平台的轻量级驱动库,专为通用仪器(General Instrument)于1978年推出的经典可编程声音发生器(Programmable Sound Generator, PSG)芯片 AY-3-8910 …...

嵌入式差分升级技术解析与实践指南

1. 嵌入式差分升级方案概述在嵌入式设备固件更新领域,差分升级(Delta Update)已经成为解决传统OTA升级痛点的关键技术方案。作为一名长期从事嵌入式开发的工程师,我亲历过多次因固件体积过大导致的升级失败案例,直到采…...

SEO IP 地址对网站排名的重要性是什么

SEO IP 地址对网站排名的重要性是什么 在当前的互联网时代,网站排名直接关系到网站的流量和收益。作为网站运营者,我们都知道搜索引擎优化(SEO)是提升网站排名的关键。而在SEO的诸多因素中,IP地址的作用有时被忽视。S…...

嵌入式硬件设计核心架构与电源系统详解

1. 嵌入式硬件设计核心架构解析嵌入式系统的硬件架构就像一座精心设计的城市,CPU作为市长统筹全局,外围设备则是各个职能部门。这种架构最显著的特点就是硬件可裁剪性——我们可以根据实际需求灵活增删模块,就像城市规划中按需建设不同功能区…...

micro-moustache:嵌入式轻量模板引擎

1. micro-moustache:面向嵌入式系统的轻量级无逻辑模板处理器1.1 设计定位与工程价值micro-moustache 是专为资源受限微控制器(如 Arduino、ESP32、STM32 等)设计的极简 Mustache 模板引擎实现。其核心设计哲学是“功能够用、内存可控、接口直…...

LwEVT:嵌入式轻量级事件管理器设计与实践

1. LwEVT:嵌入式系统轻量级事件管理器深度解析 在资源受限的嵌入式系统中,事件驱动架构(Event-Driven Architecture, EDA)是构建高响应性、低耦合、可维护固件的核心范式。然而,传统RTOS内置的事件组(如Fre…...

嵌入式系统分层架构设计与驱动框架实现

1. 嵌入式系统中的分层架构设计在嵌入式开发领域,我一直坚持一个核心原则:好的代码结构应该像洋葱一样层次分明。以STM32开发为例,很多初学者直接从官方例程入手时,往往会发现应用层代码中混杂着大量硬件相关的头文件引用&#xf…...

python enum

## Python 中的 Any:一个被低估的类型注解工具 在 Python 的类型注解体系里,Any 是一个看似简单,却常常引发误解的特殊类型。很多开发者第一次见到它时,可能会觉得这不过是个“万金油”式的占位符,用来应付那些暂时不想…...

python namedtuple

## Python 中的 Any:一个被低估的类型注解工具 在 Python 的类型注解体系里,Any 是一个看似简单,却常常引发误解的特殊类型。很多开发者第一次见到它时,可能会觉得这不过是个“万金油”式的占位符,用来应付那些暂时不想…...

FreeRTOS消息队列原理与实战应用指南

1. FreeRTOS消息队列核心概念解析消息队列作为FreeRTOS中最核心的通信机制之一,其设计理念源于操作系统中的生产者-消费者模型。在实际嵌入式开发中,我经常用它来解决任务间的数据传递问题。与裸机编程中的全局变量共享不同,消息队列通过内核…...

DS1307实时时钟芯片驱动开发与工程实践指南

1. DS1307实时时钟芯片驱动技术深度解析DS1307是由Maxim Integrated(现为Analog Devices)推出的经典IC接口实时时钟(RTC)芯片,采用SOIC-8封装,工作电压范围2.0V–5.5V,支持-40C至85C工业级温度范…...

如何在浏览器中零安装使用GraphvizOnline创建专业流程图

如何在浏览器中零安装使用GraphvizOnline创建专业流程图 【免费下载链接】GraphvizOnline Lets Graphviz it online 项目地址: https://gitcode.com/gh_mirrors/gr/GraphvizOnline GraphvizOnline是一款革命性的在线可视化工具,让您无需安装任何软件即可在浏…...

TranslucentTB启动故障深度修复指南:从依赖解析到系统优化

TranslucentTB启动故障深度修复指南:从依赖解析到系统优化 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB是一…...

深蓝词库转换:跨输入法词库迁移与定制的一站式解决方案

深蓝词库转换:跨输入法词库迁移与定制的一站式解决方案 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 当输入法成为数字生活的"语言障碍" 李…...

AR1020触摸控制器驱动开发:嵌入式I²C/SPI底层集成指南

1. AR1020 触摸控制器驱动技术详解:面向嵌入式系统的底层实现与工程集成Microchip AR1020 是一款高精度、低功耗的单芯片电容式触摸控制器,专为工业人机界面(HMI)、医疗设备面板、车载信息娱乐系统及消费类电子产品的触控屏设计。…...

【花雕学编程】跨平台移植实战:在行空板K10上部署MimiClaw并与飞书深度整合

飞书是字节跳动开发的一站式企业协作平台,核心整合即时通讯、云文档、视频会议、日历和工作台五大模块。它以提升组织协同效率为核心,通过无限消息记录、实时多人文档编辑、智能会议纪要等特色功能,打造流畅的协作体验。平台提供丰富的开放AP…...

智能生态缸系统设计与实现:嵌入式Linux与Qt应用

1. 项目背景与需求分析在当代都市生活中,越来越多的人开始关注室内绿植养护。传统的生态缸管理方式存在诸多痛点:需要频繁人工干预、难以精准控制环境参数、缺乏实时监测手段等。这些问题直接影响了植物的生长状态和观赏价值。我们设计的智能生态缸系统正…...

RP2040硬件加速步进电机控制库picoasyncstepper

1. picoasyncstepper:面向RP2040平台的硬件加速异步步进电机控制库1.1 工程定位与核心价值picoasyncstepper 是一款专为 Raspberry Pi Pico 及兼容 RP2040 微控制器设计的轻量级、高精度步进电机驱动库。其根本设计目标并非简单实现“电机转动”,而是在极…...