Agent
基于大型语言模型(LLM)的编码代理(Coding Agent)的具体实施步骤:
- 在终端中读取输入,并持续将内容追加到对话中。
- 告知大型语言模型有哪些可用工具:
- 它会在适当的时候请求使用工具。
- 你离线执行工具并返回响应。工具示例:“Read_file”(读取文件)、“List_dir”(列出目录)、“Edit_file”(编辑文件)。
- 创建一个新文件,编辑一个新文件。
Claude 的内部机制:
- 前置加载上下文:使用小型、有针对性的提示词来预先加载上下文。
- 无处不在的系统提醒:在系统/用户提示、工具调用、工具结果等各个环节都加入系统提醒,以防止模型“漂移”(使用
<system-reminder>标签)。 - 命令前缀提取:这可能涉及从用户输入或生成的文本中识别特定的指令格式,在确立指令的任务之前,会先进行结构化提取,把实际的指令和用户的情绪等分开,保证LLM处理的是感觉的指令。
- 生成子代理:可能会生成子代理,以帮助防止上下文过载。
(在cs146s/week2class文件夹中可见一个简单的agent示例)
MCP Server
为什么需要让大型语言模型(LLMs)连接外部动态数据
- 大型语言模型拥有宽广但静态的世界知识,只有在重新训练时才会更新。这意味着模型本身的知识库是截止于训练数据的,无法实时感知世界变化。
- 为了构建完全自主的系统,我们需要稳健的方法来输入动态数据。比如实时的天气,现任总统,当前比特币价格等。这些都需要实时的工具进行查询。
- RAG检索增强生成和工具调用是我们目前拥有的最佳答案。
- RAG:通过检索外部文档来补充模型知识。
- 工具调用:让模型学会使用计算器、搜索引擎、API等工具来获取信息。
MCP定义
官方定义:它是一个开放协议,允许系统以一种“可跨集成推广的方式”向AI模型提供上下文。简单来说,它试图解决不同系统间数据格式不统一、难以被AI理解的问题。
通俗解释:它把复杂的协议概念简化为“让AI能看懂并使用工具的标准说明书”。
- MCP通过提供一个统一的协议层,将集成模式从“M x N”简化为“M + N”。即,每个LLM主机只需实现一个MCP客户端,每个工具只需实现一个MCP服务器,它们就能通过MCP协议互相通信。
- MCP标准化使得开发者不需要重复造轮子,并且有了统一的输出格式。开发者不再需要为每个连接器重复实现认证(auth)、错误处理(error handling)、速率限制(rate-limiting)等通用功能;强制使用JSON-RPC来确保所有工具的输出格式一致,这使得LLM能够更可靠地解析和处理来自不同工具的响应。
- MCP的设计借鉴了语言服务器协议(Language Server Protocols, LSP),与LSP主要用于响应式(reactive)交互不同,MCP允许构建主动式(proactive)的代理工作流(agentic workflows)。这意味着AI代理可以根据上下文主动调用工具,而不仅仅是响应用户的直接指令。
MCP过程
MCP协议提供了两种传输层实现:标准输入输出(stdio)和服务器发送事件(SSE),这为不同场景下的部署提供了灵活性。
- Host:指承载MCP客户端的应用程序,例如代码编辑器Cursor或AI助手Claude Desktop。
- MCP Client:嵌入在Host中的库,负责与MCP Server建立并维持一个有状态的会话。
- MCP ServerModel Context Protocol Server Implementations:作为工具的轻量级包装器,它负责向Client暴露工具的功能。
- Tool:一个可被调用的函数,它可以是数据源或API。
工作流程为:
1.client向server发起请求,询问server存在的tools
2.server返回json格式的列表,详细描述每个工具的名称,摘要,参数结构
3.host把这些工具注入AI模型的上下文中
4.用户输入提示词时,触发模型根据理解生成一个结构化的工具调用请求
5.MCP Server执行工具调用,返回结果

MCP局限
- Agent不能处理太多的工具。工具过多会造成选择困难,上下文混乱,性能下降等风险,工具管理是具有一定复杂性的。
- APIs会快速消耗模型的上下文窗口。复杂的API调用、大量的返回数据或冗长的工具描述都会占用宝贵的上下文空间,可能导致模型“遗忘”之前的对话或指令,影响最终输出质量。
- API设计时应以“AI原生”(AI-native)为理念,而不是采用僵化(rigid)的传统设计。API应该更易于被AI理解和调用,例如提供更清晰的文档、更结构化的数据格式、更灵活的参数等,以降低AI集成的难度和成本。
(在cs146s/week2class文件夹中可见一个简单的agent示例)
Assignment
cs146s/week2 at master · Sutdown/cs146s
这个作业不难,基本上就是让AI实现一些小任务,对于现在的AI模型,很快都能实现。