03-让Agent变强的扩展与实践

Agent 如何扩展能力:Skill、MCP、ACP 与多代理

一个会读文件、改代码、跑测试的 Agent,已经具备最小工作能力。接下来遇到的问题通常更具体:团队流程怎么复用、外部服务怎么连接、不同界面怎么接入、复杂任务怎么分工。

这些问题不必塞进同一个机制。本篇按职责区分常见扩展方式,并说明它们适合在什么时候加入。

1. Skill:把重复出现的工作方法打包

Skill 通常用一个目录保存说明、脚本和参考资源,入口是 SKILL.md。Agent 可以先读取名称与描述,匹配任务后再加载详细指令,按需读取相关资源。这种渐进加载方式能减少无关内容进入上下文。Agent Skills 概览

例如一个「修复缺陷」技能,可以约定:

Skill 提供工作方法;执行能力来自它使用的工具。技能里写了「运行测试」,宿主仍然要提供测试工具,并执行权限校验。

加载方式取决于宿主实现:可以由用户显式选择,可以根据任务自动匹配,也可以让模型调用读取工具。/<name> 和 load_skill 都是可能的产品设计,不是所有 Agent 必须提供的统一接口。

还有两个容易忽略的细节:

  • 名称和描述如果进入模型输入,也会占用 token;按需加载节省的是正文和附属资源的开销。
  • 技能正文一旦进入消息历史,不会因为「任务结束」自动消失。清理、压缩和会话隔离需要宿主管理。

2. MCP:用统一协议连接工具和资源

MCP(Model Context Protocol)规定宿主如何与服务端交换能力和数据。以工具为例,客户端通过 tools/list 获取声明,通过 tools/call 调用工具;工具提供输入 Schema 和执行结果。MCP 工具规范

模型不直接维护 MCP 连接。宿主负责连接生命周期、认证、工具名称映射、超时和结果转换。远程结果可能包含文本之外的内容,也不能总是假设它能原样塞进一条文本消息。

Skill 与 MCP 可以配合:Skill 说明如何生成一份业务报告,MCP 提供查询业务数据的工具。两者都不会替代授权策略。

3. ACP:让客户端与 Agent 运行时对话

ACP(Agent Client Protocol)面向编辑器等客户端与 Agent 之间的通信。以 v1 传输规范为例,标准传输使用 stdio 交换 JSON-RPC 消息,也允许保持协议语义的自定义传输。ACP 传输规范

这幅图表达两种连接方向,不代表每个应用都必须同时使用两种协议。单机命令行程序可以直接调用本地函数;自建 Web 界面也可以通过自己的 HTTP、SSE 或 WebSocket 接口与后端通信。

SSE、WebSocket 是传输方式,ACP 是应用协议,不能把它们当成同一层的可替换名词。接入 ACP 需要实现它的消息语义,而不只是建立一条连接。

4. Hooks:在明确的时机插入逻辑

当多个工具都需要相同处理,例如记录耗时、裁剪输出或执行审批,就可以将公共逻辑提取成 Hooks。

下面的名称是设计示例,具体产品可能不同:

时机 示例名称 适合放入的逻辑
请求模型前 before_model 组装上下文、检查输入体积
模型返回后 after_model 记录用量、检查响应结构
工具执行前 before_tool 参数校验、权限判断、审批
工具执行后 after_tool 脱敏、截断、记录结果
执行异常时 on_error 分类错误、决定停止或重试

必须执行的权限检查不能因为某个 Hook 报错或未注册就被绕过。Hook 的执行顺序、失败行为和参数修改规则,都属于运行时契约。

5. 子代理与多代理:为分工付出协调成本

子代理是被委派任务的独立执行单元,通常有自己的上下文和循环。主 Agent 给它一个明确目标,收回摘要、证据位置和产物。

例如,修复代码时可以让一个只读子代理调查调用方。主 Agent 接收「有哪些调用点、是否依赖旧行为」的结论,再决定修改范围。

角色 典型权限 适合的输出
探索 读取与搜索 文件位置、事实、未确认问题
实现 在约定范围内修改 补丁、测试结果
审查 读取变更与必要验证 可复现的问题与影响

上下文是否继承、工具与 Skill 是否可用、能否继续派生子代理,都应由宿主配置。它们不是固定的「只能这样」规则。初期限制派生深度,可以减少成本和协调难度。

多代理强调多个执行单元的协作,可以采用协调者,也可以采用其他组织方式。子代理是其中一种实现手段。增加角色不会自动提高质量:共享文件可能冲突,摘要可能遗漏证据,额外调用也会增加延迟和成本。

适合并行的任务通常目标清晰、依赖少、输出可核验。对于只有一个函数的修复,单 Agent 顺序执行已经足够。

6. Context、KV Cache、Memory 分别优化什么

这三个概念经常被混用,但对应不同层次:

概念 保存的内容 主要用途
Context 当前模型请求可用的指令、消息、工具和其他输入 支持这一轮决策
KV Cache 注意力计算中的键和值等中间状态 复用计算,降低重复处理开销
Memory 应用保存并可检索的事实、偏好和任务状态 跨步骤、跨会话使用信息

应用检索 Memory 后,把相关结果放进 Context;推理服务在处理 Context 时,可能复用缓存。缓存不会替应用检索历史经验,也不能保证模型遵循某条长期偏好。

前缀缓存允许服务复用相同输入前缀的计算。稳定的指令和工具定义有利于复用,但实际命中、保存时间和计费取决于服务及模型。不能把「命中缓存」直接等同于「这部分输入免费」。OpenAI Prompt Caching 文档

7. 根据实际缺口选择扩展

当前问题 优先考虑
同样的流程反复解释 Skill
需要接入外部工具服务 MCP
需要与支持协议的编辑器互通 ACP
执行前后有重复的公共逻辑 Hooks
多个独立任务需要分工 子代理或多代理
长任务重复输入开销高 先整理上下文,再评估缓存

这些扩展围绕核心循环工作。下一篇先把循环、执行器和界面的接口划清楚,再进入实际代码。

上一篇:Agent 如何决策与记忆:规划、上下文和运行时

下一篇:最小 Agent 的架构设计:循环、工具与审批

相关推荐
2401_8724187825 分钟前
把 Ubuntu 服务器变成 AI Agent 终端:用自然语言或语音管理 Linux,任何命令都先审批(附完整 Python 源码)
linux·服务器·ubuntu·agent
一只游鱼43 分钟前
我用原生 JS 做了一个「会呼吸」的博客:Canvas 水境 + 合成音效 + 会破裂的留言气泡(vibe coding)
javascript·agent·canvas·github pages
山间小僧1 小时前
Agent Memory(三)团队记忆:以 TencentDB Agent Memory 为例
后端·agent
诸神缄默不语14 小时前
如何用AI Agent连接Lighthouse(腾讯云轻量应用服务器)MCP实现云服务器智能运维
agent
威哥爱编程15 小时前
HarmonyOS 7 Agent 开发实战 07:多 Agent 任务分解与反思
agent·harmonyos
威哥爱编程15 小时前
HarmonyOS 7 Agent 开发实战 06:Agent 记忆与上下文管理
agent·harmonyos
进击的明明16 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent
qinglongcn16 小时前
为什么 Agent 循环是 for{} 而不是 DAG——架构选择的深层原因
agent·ai编程
小七-七牛开发者16 小时前
周一上线 | DeepSeek 开始卷“许愿式编程”,Agent 手机来了,Character.AI 申请破产
ai·大模型·agent·claude·codex·deepseek·ai coding
PingCAP17 小时前
从一句需求到一套可追溯机制:我们这样推进电子病历改造
人工智能·agent·工作流引擎