资讯动态

CLI+MCP+Skill:2026年AI Agent开发的三大核心范式解析

发布时间:2026/8/11 4:42:02 来源:尧图企业网站定制
1. 项目概述从混沌到有序AI Agent开发的范式演进最近和几个做AI应用开发的朋友聊天大家普遍有个感觉现在搞AI Agent有点像2010年前后做移动App开发。技术栈眼花缭乱框架层出不穷今天这个火了明天那个又出了新版本。你刚花两周基于LangChain搭了个原型转头发现别人用AutoGen一天就搞定了类似功能效率还更高。这种技术快速迭代带来的不仅是兴奋更有一种深深的焦虑——我们到底该押注哪条技术路线什么样的架构才能既满足当下需求又不会在半年后因为技术过时而推倒重来这正是“CLI MCP Skill2026年AI Agent开发的三大范式”这个标题背后真正想探讨的问题。它不是一个对未来技术的空泛预测而是基于当前开源社区最活跃的实践、主流框架的演进方向以及头部公司如Anthropic、Google、微软在基础设施层的布局所提炼出的一个清晰的技术架构共识。简单来说这个范式认为到2026年一个成熟、可维护、易扩展的AI Agent系统其开发模式将围绕三个核心层次展开CLI命令行界面作为人机交互与工作流编排的入口。它不再是简单的命令执行器而是演变为一个智能的、上下文感知的“副驾驶终端”能够理解自然语言指令并将其分解、映射到具体的底层操作。MCP模型上下文协议作为工具与数据接入的标准层。它解决了当前Agent开发中最大的痛点之一——工具集成混乱。通过一套统一的协议让任何工具数据库、搜索引擎、API、甚至另一个Agent都能以标准化的方式被AI模型安全、高效地调用。Skill技能作为核心业务逻辑与推理能力的载体。它将复杂的、多步骤的智能任务如数据分析、代码生成、报告撰写封装成可复用、可组合、可评估的模块是Agent真正产生价值的“肌肉”部分。这个范式最大的价值在于“分离关注点”。它把交互层、工具层和逻辑层清晰地剥离开让开发者可以专注于自己最擅长的部分。前端工程师可以打磨CLI的用户体验后端工程师可以构建稳定的MCP服务器而AI算法工程师则可以潜心设计更强大的Skill。这种分工协作的模式正是软件工程从“手工作坊”走向“工业化生产”的必经之路。接下来我们就深入这三大范式看看它们具体是什么以及如何在实际项目中落地。2. CLI超越终端智能工作流的统一指挥所当我们谈论CLI时可能第一反应还是那个黑底白字的命令行窗口输入ls、cd、git commit。但在AI Agent的语境下CLI正在经历一场深刻的范式转移。它正从一个需要用户记忆复杂命令的“低级接口”进化成一个能理解用户意图、自动编排复杂任务的“智能工作流引擎”。2.1 新一代智能CLI的核心特征传统的CLI是“动词-对象”模式如git push origin main而新一代的智能CLI是“目标-上下文”模式。用户只需要说出想要什么目标CLI结合当前的工作环境上下文自动规划并执行一系列动作。以cursor、claude code、windsurf等现代AI编码工具内置的CLI以及独立的codex cli为例它们展现了几个关键特征自然语言驱动用户可以直接输入“帮我在当前目录下创建一个React组件包含一个按钮和状态管理”CLI会理解意图并可能依次执行mkdir、touch、编写组件代码、甚至初始化一个简单的状态管理上下文等操作。上下文感知智能CLI能读取当前目录结构、git状态、打开的文件、甚至环境变量。当你说“修复这个错误”时它知道“这个错误”指的是终端里刚刚抛出的那个异常还是某个打开文件中被高亮显示的语法问题。工作流编排与持久化复杂的任务往往涉及多个步骤和工具调用。智能CLI能够记录这些步骤形成可重复执行的工作流脚本。例如将“代码审查-运行测试-生成变更日志-提交”这一套流程保存为一个名为ship的自定义命令。实操心得不要试图自己从头造一个完美的智能CLI轮子。初期可以基于claude code cli或cursor的代理模式进行探索。当你的工作流稳定后可以考虑用像inkReact for CLIs或oclif这样的框架来封装自己的专用CLI工具重点设计好命令的命名空间和帮助文档。2.2 Codex CLI一个具体的实践样板anthropic-ai/codex-cli或社区类似实现是一个很好的观察样本。安装通常很简单npm install -g anthropic-ai/codex-cli。安装后你获得的不仅仅是一个命令而是一个交互环境。它的强大之处在于深度集成。通过配置它可以连接到你的代码库、项目管理工具如Jira、通讯工具如Slack。一个典型的使用场景是在终端输入codex “用户反馈登录页面加载慢优先排查一下”。接下来CLI可能会自动切换到前端项目目录。运行npm run build:analyze分析包体积。调用MCP服务器查询最近关于“登录”、“性能”的提交记录。分析构建报告定位到某个过大的依赖库。生成一份简短的排查报告并建议将某个库从dependencies移到devDependencies。询问你是否要自动创建优化任务的GitHub Issue。这个过程完全由自然语言触发背后是CLI协调了本地命令、MCP工具和潜在的Skill来共同完成的。这里的CLI扮演的就是“指挥官”的角色它不直接干活但知道该派谁去干、怎么干。2.3 常见CLI集成问题与排查在实际集成中CLI层面最常见的问题集中在环境与权限。问题npm install -g安装失败权限错误或网络超时排查思路这通常是Node.js环境或网络代理问题。不要盲目使用sudo。解决方案检查Node版本node -v确保是LTS版本。使用npm config get prefix查看全局安装路径确保你有写入权限。更推荐使用nvm或fnm管理Node版本它们会配置用户目录下的全局安装路径。如果是网络问题可以配置npm镜像源npm config set registry https://registry.npmmirror.com。对于codex-cli这类工具也可以尝试直接从GitHub Releases下载预编译的二进制文件。问题CLI命令执行后无响应或报错“无法连接到服务”排查思路智能CLI通常需要后台服务如本地运行的LLM服务、MCP服务器支持。解决方案运行codex --version或codex --help检查CLI本身是否正常。查看CLI的配置文件通常位于~/.config/codex/config.json或类似位置检查其中配置的服务器地址、API密钥是否正确。使用ps aux | grep或系统任务管理器确认所需的后台服务进程如claude-code服务、本地MCP服务器是否在运行。检查防火墙或安全软件是否阻止了本地回环地址127.0.0.1上特定端口的通信。核心要点在CLI范式下你的开发重点应从“实现某个命令”转向“设计一套高效、符合直觉的任务描述语言和交互流程”。好的CLI让用户感觉是在和一个能干的助手对话而不是在操作一台机器。3. MCP打破工具孤岛构建Agent的“标准外设”生态如果说CLI是Agent的“大脑接口”那么MCP就是Agent的“手和眼睛”。MCP即Model Context Protocol最初由Anthropic提出旨在为AI模型提供一个安全、统一的方式来访问外部工具、数据和计算资源。你可以把它理解为AI世界的“USB协议”或“驱动模型”——它定义了一套标准让任何工具只要按照这个标准提供“驱动”即MCP服务器就能被任何支持MCP协议的AI模型或Agent即插即用。3.1 为什么是MCP解决工具集成的“巴别塔”问题在MCP出现之前每个AI框架LangChain, LlamaIndex, AutoGen都有自己的一套工具定义和调用方式。为一个模型集成一个新工具意味着要针对每个框架写一遍适配代码。这造成了巨大的碎片化和重复劳动。MCP的核心价值在于标准化和解耦。标准化接口MCP定义了工具Tools、资源Resources和提示词模板Prompts的统一定义格式。一个“搜索”工具无论在哪个MCP服务器中实现其调用方式输入参数、输出格式都是一致的。进程隔离与安全MCP服务器通常作为独立的子进程运行。这意味着一个有漏洞或恶意的工具比如一个文件操作工具不会直接威胁到主Agent进程的安全。Agent通过标准输入输出stdio或SSEServer-Sent Events与MCP服务器通信这种隔离性至关重要。动态发现与组合Agent可以在运行时动态发现可用的MCP服务器及其提供的工具。这使得构建一个“工具市场”成为可能开发者可以像安装插件一样为他的Agent安装“数据库插件”、“搜索引擎插件”、“绘图插件”。3.2 如何为你的Agent添加MCP工具以搜索服务器为例假设我们想让Agent具备联网搜索能力。我们选择tavily-mcp这个服务器Tavily是一个专注于AI的搜索API。以下是详细的集成步骤这个过程具有通用性准备MCP服务器首先需要安装或获取MCP服务器。对于tavily-mcp通常是一个Python包或可执行文件。pip install tavily-mcp或从GitHub仓库下载源码运行。运行服务器通常需要API密钥TAVILY_API_KEYyour_key_here mcp-server-tavily。服务器启动后会监听一个端口或准备通过stdio通信。配置Agent/CLI以使用MCP服务器以claude code或codex cli为例它们通常通过一个配置文件如claude_desktop_config.json或codex_config.json来管理MCP服务器。配置文件的位置因平台而异通常在用户目录的.config文件夹下。你需要在该配置文件的mcpServers部分添加一个新条目。配置方式主要有两种命令模式指定启动服务器的命令和参数。{ mcpServers: { tavily-search: { command: npx, args: [-y, modelcontextprotocol/server-tavily-search], env: { TAVILY_API_KEY: your_actual_api_key_here } } } }SSE模式如果服务器已经作为一个HTTP服务运行可以配置其URL。{ mcpServers: { brave-search: { url: http://localhost:3000/sse } } }验证与使用重启你的CLI或Agent应用使其重新加载配置。在CLI中你可以尝试输入“搜索一下今天AI Agent领域的最新动态”。如果配置成功CLI背后的模型会识别出这个请求需要调用搜索工具自动从已连接的MCP服务器中找到tavily-search提供的search工具并使用它进行查询最后将结果整合进回复中。注意事项MCP服务器的配置是安全关键点。务必确保API密钥等敏感信息不要硬编码在配置文件中应使用环境变量或安全的密钥管理服务。只信任来自可靠来源的MCP服务器因为服务器代码将在你的环境中执行。仔细审查服务器声明的工具权限比如一个“文本处理”服务器不应该请求文件系统写入权限。3.3 自己动手实现一个简单的MCP服务器理解MCP最好的方式就是自己实现一个。假设我们需要一个获取当前时间的工具。我们可以用Python的mcp库快速实现# server.py import asyncio from datetime import datetime from mcp import Server, StdioServerParameters import mcp.types as types # 创建Server实例 server Server(my-time-server) # 定义工具 server.list_tools() async def handle_list_tools(): return [ types.Tool( nameget_current_time, description获取当前的系统日期和时间, inputSchema{ type: object, properties: { format: { type: string, description: 时间格式例如 %Y-%m-%d %H:%M:%S, default: %Y-%m-%d %H:%M:%S } } } ) ] # 实现工具调用逻辑 server.call_tool() async def handle_call_tool(name: str, arguments: dict): if name get_current_time: fmt arguments.get(format, %Y-%m-%d %H:%M:%S) current_time datetime.now().strftime(fmt) return [ types.TextContent( typetext, textf当前时间是{current_time} ) ] else: raise ValueError(f未知工具: {name}) # 启动服务器通过stdio通信这是MCP的标准方式 async def main(): async with await StdioServerParameters.create() as params: await server.run(params) if __name__ __main__: asyncio.run(main())运行这个脚本python server.py它就成为了一个标准的MCP服务器。任何支持MCP的客户端如配置好的codex cli都可以通过stdio连接到它并调用get_current_time工具。通过这个简单的例子你可以看到MCP如何将一个小功能封装成一个可被AI模型标准化调用的服务。4. Skill封装复杂推理构建可复用的智能模块如果说MCP提供了“手和眼”工具那么Skill就是驱动这些工具完成复杂任务的“大脑皮层”或“技能肌肉”。Skill是一个比“工具调用”更高阶的抽象它代表了一个完整的、多步骤的、有明确目标的智能任务单元。例如“分析销售数据并生成周报”是一个Skill“审查Pull Request并提供修改建议”是另一个Skill。4.1 Skill与普通提示词Prompt或工具链Chain的区别很多人容易将Skill与复杂的提示词或LangChain的Chain混淆。它们的核心区别在于封装程度和可复用性。提示词Prompt是单次与模型交互的指令和上下文。它灵活但脆弱难以维护复杂逻辑。工具链Chain是将多个模型调用和工具调用按顺序组合起来。它解决了多步问题但通常紧耦合于特定的框架和上下文不易迁移和独立测试。技能Skill是一个自包含的、可独立部署和评估的智能单元。它内部可能包含复杂的决策逻辑、循环、条件分支、多个工具调用以及模型调用。一个设计良好的Skill应该有明确的输入/输出接口就像函数的参数和返回值。对上下文有清晰的假设和声明它需要哪些MCP工具需要访问哪些资源具备自我描述性能够清晰地说明自己能做什么、不能做什么。可测试和可评估可以针对一组输入验证其输出是否符合预期。以“仓颉Skill”或“WorkBuddy Skill”为例它们通常被打包成一个包含配置文件、核心逻辑脚本、示例和测试用例的模块。这个模块可以被发布到Skill市场其他开发者可以一键安装到自己的Agent中。4.2 设计一个高效的Skill从需求到实现让我们以设计一个“代码漏洞扫描Skill”为例走一遍设计流程。1. 需求定义与接口设计目标给定一个代码仓库的路径自动识别其中潜在的安全漏洞如SQL注入、XSS、硬编码密钥。输入{ “repo_path”: “/path/to/local/repo”, “scan_level”: “basic” | “deep” }输出{ “issues”: [ {“file”: “xxx”, “line”: 10, “type”: “SQLi”, “description”: “…”, “suggestion”: “…”} ], “summary”: “共发现X个高危问题” }声明依赖本Skill需要调用filesystemMCP工具来读取文件可能需要调用semgrep或codeql的MCP工具进行静态分析。2. 内部逻辑编排伪代码思路async def run_code_scan_skill(inputs): repo_path inputs[“repo_path”] # 步骤1: 使用 filesystem MCP 工具列出所有源代码文件 files await mcp_call(“filesystem”, “list_files”, {“path”: repo_path, “filter”: “*.py,*.js,*.java”}) # 步骤2: 根据扫描级别选择分析策略 if inputs[“scan_level”] “basic”: # 使用简单的正则或语义快速扫描 issues await fast_pattern_scan(files) else: # 调用专业的静态分析工具MCP如 semgrep-mcp issues await mcp_call(“semgrep”, “scan”, {“targets”: files}) # 步骤3: 对结果进行去重、排序、严重性分级 processed_issues prioritize_and_filter(issues) # 步骤4: 生成总结报告 summary generate_summary(processed_issues) return {“issues”: processed_issues, “summary”: summary}3. 打包与部署将上述逻辑、依赖声明一个skill.yaml文件、说明文档和测试用例打包。这个包可以通过Skill管理CLI安装skill-cli install github.com/yourname/code-scan-skill。4. 在Agent中调用用户在CLI中说“扫描一下~/projects/myapp这个项目有没有安全问题。” Agent识别出这匹配code_scan技能自动加载该Skill模块传入参数执行并返回格式化的结果。4.3 Skill开发中的陷阱与最佳实践陷阱1Skill过于庞大或职责不清。一个Skill应该做好一件事。不要设计一个“代码管理和部署Skill”而应该拆分成“代码审查Skill”、“单元测试Skill”、“部署流水线Skill”。细粒度的Skill更容易复用和组合。陷阱2忽视错误处理和边界情况。Skill内部必须有健壮的错误处理。如果依赖的MCP工具调用失败Skill应该返回清晰的错误信息而不是让整个Agent崩溃。对于不确定的输入要有合理的默认值或验证。最佳实践1为Skill编写清晰的“使用说明书”。在Skill的配置文件中用自然语言详细描述其功能、输入输出格式、使用示例和限制。这不仅能帮助其他开发者使用也能让AI Agent自身更好地理解何时该调用此Skill。最佳实践2实现Skill的“模拟模式”或“测试模式”。在Skill中提供一个开关使其在不实际调用外部工具如不真正发送邮件、不真实写入数据库的情况下运行并返回模拟数据。这对于开发调试和单元测试至关重要。最佳实践3设计Skill的版本化。随着逻辑更新Skill应该有版本号。Agent可以配置依赖特定版本的Skill确保行为的一致性。Skill范式将AI Agent的开发从“写提示词脚本”提升到了“开发软件模块”的层次。它带来了可维护性、可测试性和可复用性是AI应用工程化的基石。5. 范式融合构建一个完整的AI Agent项目实战理解了三大范式各自为战后我们来看它们如何协同工作构建一个实实在在的AI Agent应用。我们以一个“智能研发助手Agent”为例它的核心功能是协助工程师处理日常研发任务如代码生成、Bug排查、文档查询、发布准备等。5.1 系统架构设计我们的Agent系统将分为三层清晰对应三大范式交互层CLI我们开发一个名为dev-cli的自定义命令行工具。它是工程师的主要入口。工程师可以通过自然语言向它下达指令如“帮我为用户模型添加一个邮箱验证字段”、“昨天合并的那个PR有没有引入新的警告”。工具层MCP我们部署或集成一系列MCP服务器为Agent提供“手和眼”。filesystem-mcp安全地访问本地项目文件。github-mcp与GitHub API交互管理PR、Issue。jira-mcp查询和更新开发任务状态。postgres-mcp连接测试数据库运行查询或检查数据模式。logging-mcp检索和分析应用日志。tavily-mcp进行技术资料搜索。逻辑层Skill我们将核心能力封装成一个个独立的Skill。code-review-skill代码审查技能。输入一个diff或PR链接输出审查意见。bug-triage-skillBug排查技能。输入错误信息或现象自动查询日志、检查相关代码提交历史给出可能原因。release-prepare-skill发布准备技能。自动检查待发布清单、运行测试套件、生成变更日志草案。dev-cli在接收到用户指令后会将其传递给核心的“推理引擎”可能是一个本地运行的Claude 3.5 Sonnet或GPT-4模型。推理引擎根据指令内容决定调用哪个或哪几个Skill。Skill在执行过程中按需调用MCP层提供的各种工具。最终结果经由推理引擎整理后通过dev-cli呈现给用户。5.2 核心工作流示例处理一个Bug报告假设用户在团队频道中我们的Agent并说“用户反馈‘重置密码’的邮件收不到帮忙查一下。”CLI接收与解析dev-cli或集成到通讯工具的Bot接收到消息。它将消息和对话上下文发送给推理引擎。意图识别与Skill路由推理引擎分析消息识别出这是一个“Bug排查”意图。它决定调用bug-triage-skill并将用户反馈的文本作为输入。Skill执行bug-triage-skill启动。它首先调用tavily-mcp搜索“密码重置邮件 发送失败 常见原因”获取一些背景知识。接着它调用github-mcp查询最近一周内所有与“password”、“reset”、“email”相关的代码提交。然后它调用logging-mcp检索过去24小时内包含“password_reset”关键词的错误日志。它还可能调用postgres-mcp检查用户表中触发重置的账户状态是否正常。信息综合与推理Skill收集到所有信息后在其内部逻辑中进行关联分析。例如它发现错误日志中有一条“SMTP connection timeout”同时发现最近一个提交修改了邮件服务的配置项。它将此关联起来。生成响应与行动建议Skill将分析结果“可能原因是邮件服务配置被错误修改导致SMTP连接超时”、相关证据提交哈希、日志片段以及建议行动“回滚提交abc123并检查SMTP服务器配置”打包返回给推理引擎。CLI呈现结果推理引擎将结果格式化为友好的对话格式通过dev-cli回复“排查发现很可能是因为昨天小张的提交abc123修改了邮件配置。相关错误日志显示‘SMTP连接超时’。建议优先回滚该提交并验证邮件服务。这是详细的日志和提交链接[链接]”。整个流程用户只给了一句自然语言指令背后是三大范式无缝协作完成了一次复杂的跨系统调查。5.3 部署与运维考量当Agent系统变得复杂部署和运维就成为挑战。部署模式轻量级个人助手所有组件CLI、推理模型、MCP服务器、Skill都运行在工程师的本地笔记本电脑上。适合个人提效工具。团队共享服务将推理引擎和公共MCP服务器如数据库、日志查询部署在团队的内部服务器或云上。CLI作为轻量级客户端通过网络连接到后端服务。Skill可以集中管理。混合模式敏感的、个性化的工具如文件系统访问以MCP服务器形式运行在本地公共的、计算密集的服务运行在远端。配置管理使用版本化的配置文件如agent-config.yaml来管理所有MCP服务器的连接信息、Skill的启用列表、模型API密钥等。严禁将密钥硬编码在代码中。监控与日志为Agent的核心推理引擎、MCP服务器调用、Skill执行添加详细的日志。这不仅是排查故障所必需也是优化和评估Agent性能比如每个Skill的成功率、耗时的关键数据来源。安全边界这是重中之重。必须通过MCP协议严格控制每个工具的权限。例如filesystem-mcp应该被配置为只能访问特定的项目目录绝不能拥有整个磁盘的读写权。对生产数据库的MCP连接必须使用只读账号。6. 避坑指南与未来展望在实践CLIMCPSkill范式的过程中我踩过不少坑也总结出一些让项目更稳健的经验。6.1 开发与调试中的常见“坑”MCP服务器连接不稳定这是最常见的问题。MCP服务器作为独立进程可能因为崩溃、端口冲突或资源耗尽而断开。对策在Agent主进程中实现MCP服务器的健康检查和自动重启机制。为MCP调用设置合理的超时时间如30秒并实现重试逻辑最多2-3次。Skill之间的副作用冲突多个Skill可能无意中修改了同一资源。例如一个Skill在分析时修改了某个配置文件影响了另一个Skill的执行。对策严格遵守“Skill应尽可能无副作用”的原则。如果必须修改应通过专门的、原子化的MCP工具进行并在Skill文档中明确声明。对于关键操作可以考虑引入简单的锁机制或操作日志。模型上下文窗口限制复杂的Skill执行会产生大量的中间结果工具调用的输出很容易撑爆模型的上下文窗口。对策在Skill设计时就要有“摘要”意识。对于工具返回的大段数据如日志文件、搜索结果Skill内部应先做一步过滤、摘要和结构化再将精简后的关键信息传递给模型进行下一步推理。这不是模型的工作而是Skill的责任。无限循环或长耗时任务一个设计不当的Skill可能陷入循环或执行一个非常耗时的操作如全量扫描一个大仓库阻塞整个Agent。对策在Skill执行框架层面引入超时和取消机制。为每个Skill设置最大执行时间限制。允许用户中断正在执行的任务。6.2 对2026年范式的个人展望CLIMCPSkill这个三角结构已经显现出强大的生命力我认为它的演进会集中在以下几个方面Skill市场与标准化会出现像npm或PyPI一样的Skill中心。开发者可以发布、分享、评分和订阅Skill。同时可能会涌现出一些“事实标准”的Skill接口规范比如“代码审查Skill”都应该遵循某种输入输出格式这会让Skill之间的组合替换变得更容易。MCP协议的丰富与性能提升目前的MCP协议还比较基础。未来可能会支持更复杂的通信模式如双向流、事件订阅、更细粒度的权限控制模型、以及服务器端的负载均衡和高可用方案。SSE传输可能被WebSocket等更低延迟的协议补充或替代。CLI的“智能化”与“可视化”融合CLI不会消失但它的形态会更多元。除了传统的终端我们可能会看到深度集成在IDE侧边栏的“智能面板”、作为操作系统级常驻服务的“助手托盘”、甚至是基于语音的交互界面。但其核心范式——接收用户目标、协调Skill和工具、呈现结果——不会改变。低代码Skill编排工具对于不太懂编程的业务专家会出现图形化的Skill编排工具。他们可以通过拖拽的方式将不同的MCP工具和AI推理节点连接起来形成一个可视化的Skill工作流从而极大地降低AI Agent的开发门槛。说到底技术范式只是骨架真正的血肉在于我们用它来解决什么问题。CLIMCPSkill这个范式给了我们一套强大而清晰的工具箱。它让我们从早期Agent开发的“胶水代码”混乱中解脱出来能够更专注地去定义那些真正有价值的“智能技能”去思考如何让AI更安全、更可靠地融入人类的工作流。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价