资讯动态

深入理解 AI 开发核心概念:Prompt、Agent、MCP、Skill 与 Tools 的协作边界与落地实践

发布时间:2026/10/15 15:21:38 来源:尧图企业网站定制
1. 五个概念到底谁管什么从一次代码审查说起Prompt、Agent、MCP、Skill 与 Tools 这五个词经常被混着用但它们在系统里承担的责任完全不同。Prompt 是你写给模型的自然语言指令临时、一次性、不持久Agent 是能自己规划步骤、循环调用模型和工具的决策系统Tools 是可被调用的具体函数或接口有明确入参和返回MCP 是连接模型与外部数据源的标准协议解决的是怎么统一接入的问题Skill 则是把 Prompt、Tools、Agent 逻辑打包好的可复用能力用户一条命令就能触发。如果你正在搭智能体应用最容易踩的坑就是职责错位把本该交给 Tools 的确定性计算写进 Prompt 里让模型心算或者把本该用 Skill 封装的重复流程每次手写一遍 Prompt。我试过在一个代码审查场景里把 diff 解析逻辑塞进提示词结果模型每次输出的格式都不一样后来改成 Tools 做解析、Prompt 只负责判断稳定性立刻上来了。这篇会给你一套可复制的概念对照表再用一个最小可跑的配置逐项验证每个概念的实际作用。TaoToken 在这里的角色是统一 Key/API 通道你只需要一个 Base URL 和一把 Key 就能把模型调用接进来不用在多个平台之间来回切换。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 后面配置里会具体用到。先记住一句话Prompt 是说什么Tools 是能做什么Agent 是决定做什么和做几步MCP 是怎么接外部世界Skill 是打包好给用户直接用。下面逐层拆开。2. 接入前的准备TaoToken 统一 Key 与 API 通道配置在验证这五个概念之前得先有一个能稳定调用的模型通道。TaoToken 提供的是 OpenAI 兼容接口意味着你现有的 SDK 基本不用改代码只换 Base URL 和 Key 就行。这一步只做一次后面所有示例都复用这套配置。你需要准备的东西很少一个 TaoToken 账号、一把 API Key、以及你要用的模型 ID。模型 ID 建议先用一个通用对话模型做验证等流程跑通再换成更强的推理模型。Base URL 统一用https://taotoken.net/api注意这个地址不带任何查询参数。API Key 在控制台的 API Keys 页面创建创建后只显示一次记得立刻复制保存。如果你还没建 Key可以直接去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 创建。环境变量方式最省事写进 shell 配置里export TAOTOKEN_API_KEYsk-你的key export TAOTOKEN_BASE_URLhttps://taotoken.net/api如果你用 Python装好 openai 包后这样初始化客户端from openai import OpenAI import os client OpenAI( api_keyos.environ[TAOTOKEN_API_KEY], base_urlos.environ[TAOTOKEN_BASE_URL], ) resp client.chat.completions.create( model你的模型ID, messages[{role: user, content: 用一句话说明什么是 Prompt}], ) print(resp.choices[0].message.content)跑通这段说明通道没问题。接下来所有概念验证都基于这个 client。注意模型 ID 要和你账号里可用的保持一致写错会直接报 model not found。提示Base URL 末尾不要加/v1TaoToken 的兼容层已经处理了路径多加一层会 404。这一步看起来简单但它是后面所有验证的前提。通道不稳你根本分不清是 Prompt 写得不好还是网络在抖。所以先把这层固定住再往上叠概念。3. 可复制配置用一份 settings 把五个概念落到文件里概念讲再多不如一份能跑的配置。下面这份配置把 Prompt、Tools、MCP、Skill 都落到具体文件里Agent 逻辑用一段 Python 串起来。你可以直接照抄改掉模型 ID 和路径即可。先看目录结构这样每个概念对应哪个文件一目了然ai-demo/ ├── prompts/ │ └── review.txt ├── tools/ │ └── diff_parser.py ├── mcp/ │ └── mcp.json ├── skills/ │ └── review-pr.toml └── agent.pyPrompt 就是一个纯文本文件prompts/review.txt你是一名代码审查助手。根据提供的 diff 内容判断是否存在以下问题 1. 空指针风险 2. 资源未释放 3. 边界条件缺失 只输出问题列表每条一行格式为文件:行号 - 问题描述。 如果没有问题输出无问题。Tools 是一个普通 Python 函数tools/diff_parser.pydef parse_diff(diff_text: str) - list[dict]: 把 unified diff 拆成结构化变更块 blocks [] current None for line in diff_text.splitlines(): if line.startswith( ): current {file: line[4:], changes: []} blocks.append(current) elif current is not None and (line.startswith() or line.startswith(-)): if not line.startswith((, ---)): current[changes].append(line) return blocksMCP 配置用标准 JSONmcp/mcp.json这里以接入一个本地文件系统 MCP Server 为例{ mcpServers: { filesystem: { command: npx, args: [-y, modelcontextprotocol/server-filesystem, ./workspace], env: {} } } }Skill 用 TOML 描述skills/review-pr.tomlname review-pr description 审查指定 PR 的代码质量 prompt_file prompts/review.txt tools [parse_diff] mcp_servers [filesystem] model 你的模型IDAgent 逻辑在agent.py里负责把上面这些串起来import json from openai import OpenAI from tools.diff_parser import parse_diff client OpenAI(base_urlhttps://taotoken.net/api, api_key你的key) def run_review(diff_text: str) - str: blocks parse_diff(diff_text) prompt open(prompts/review.txt, encodingutf-8).read() user_content prompt \n\n变更内容\n json.dumps(blocks, ensure_asciiFalse) resp client.chat.completions.create( model你的模型ID, messages[{role: user, content: user_content}], ) return resp.choices[0].message.content if __name__ __main__: sample open(sample.diff, encodingutf-8).read() print(run_review(sample))这份配置里Prompt 是review.txtTools 是parse_diffMCP 是mcp.jsonSkill 是review-pr.tomlAgent 是run_review这个循环入口。每个概念都有物理落点不再是抽象名词。注意MCP Server 的command和args要按你实际安装的包来写路径./workspace是相对启动目录的写错会连不上。配置写完后先别急着跑 Agent按下一节逐项验证每个概念是否真的生效。4. 逐项验证从 Prompt 到 Skill 的成功结果对照验证要一个一个来混在一起跑出了问题你根本不知道是哪层坏了。下面按 Prompt → Tools → MCP → Skill → Agent 的顺序每步都有预期结果。第一步验证 Prompt。直接调模型只给提示词不给工具resp client.chat.completions.create( model你的模型ID, messages[{role: user, content: open(prompts/review.txt).read() \n\n变更内容\n int x null; x.toString();}], ) print(resp.choices[0].message.content)预期输出类似Main.java:1 - 存在空指针风险。如果模型输出一堆解释性文字而不是规定格式说明 Prompt 约束不够回去加只输出这类硬约束。这一步验证的是Prompt 单独就能引导模型产出结构化结果。第二步验证 Tools。单独调用parse_diff不经过模型from tools.diff_parser import parse_diff print(parse_diff( b/a.py\nprint(1)\n-print(2)\n))预期输出[{file: b/a.py, changes: [print(1), -print(2)]}]。这一步验证的是Tools 是确定性代码输入输出可预测不依赖模型。如果这里结果不对别怀疑模型直接查函数逻辑。第三步验证 MCP。用 MCP 客户端连上mcp.json里配置的 server列出可用资源npx -y modelcontextprotocol/inspector --config mcp/mcp.json预期能在 inspector 界面里看到 filesystem server 暴露的资源和工具列表。这一步验证的是MCP 把外部文件系统以标准协议暴露出来了模型侧不用关心底层是本地还是远程。如果连不上先确认npx能正常执行、包名拼写正确。第四步验证 Skill。Skill 的本质是配置聚合你可以用一个简单的加载器读 TOML 并检查字段是否齐全import tomllib with open(skills/review-pr.toml, rb) as f: skill tomllib.load(f) assert skill[prompt_file] and skill[tools] and skill[model] print(Skill 配置完整, skill[name])预期输出Skill 配置完整review-pr。这一步验证的是Skill 把 Prompt、Tools、MCP、模型 ID 打包成一个可复用单元用户只需要记住review-pr这个名字。第五步验证 Agent。跑agent.py喂一个真实 diffpython agent.py预期输出一份按文件分组的问题列表。这一步验证的是Agent 把前面四层串起来完成了解析 → 提示 → 调用模型 → 返回结果的完整链路。如果前面四步都过了这一步基本不会出问题如果这步挂了回去看是哪一层的输出格式对不上。把五步的结果并排看你会发现每层职责非常清晰Prompt 管格式Tools 管解析MCP 管接入Skill 管打包Agent 管编排。这就是协作边界。5. 常见报错排查401、local proxy failed 与 reading choices 怎么解配置跑不通时报错信息往往指向具体某一层。下面这几个是我在接入过程中遇到频率最高的按报错原文对照排查。401 Unauthorized或invalid api key这是 Key 层的问题和 Prompt、Agent 无关。先确认环境变量TAOTOKEN_API_KEY真的被读到了Python 里可以print(os.environ.get(TAOTOKEN_API_KEY)[:8])看前几位。如果为空说明 shell 配置没生效重新 source 一下。如果 Key 有值还报 401去控制台确认这把 Key 没被删除或过期必要时重新创建一把。local proxy failed或连接超时这类报错通常出现在 Base URL 写错或网络出口受限时。先检查base_url是不是https://taotoken.net/api有没有手滑写成https://taotoken.net/api/v1。再确认你的运行环境能正常访问外网 HTTPS。如果是在容器里跑检查容器网络策略是否放行了 443 端口。reading choices或KeyError: choices这个报错说明请求发出去了、也回来了但返回体里没有choices字段。常见原因是模型 ID 写错服务端返回了一个错误对象而不是正常补全结果。打印完整响应体看一眼resp client.chat.completions.create(...) print(resp.model_dump())如果里面是error字段按错误信息改模型 ID。另一种可能是你把流式和非流式搞混了流式返回的是迭代器不能直接取choices。OAuth相关报错如果你用的是 Claude Code 这类工具报 OAuth 失败通常是认证方式没选对。这类工具支持用 API Key 方式接入配置里把 Base URL 指向https://taotoken.net/apiKey 填 TaoToken 的 Key模型 ID 填你账号可用的模型。三件套缺一不可只填 Key 不填 Base URL 会走默认端点自然认证失败。MCP 相关报错server not found或spawn npx ENOENT说明 MCP Server 启动命令找不到。确认本机装了 Node.js 和 npxnpx --version能输出版本号。如果是在 Windows 上command可能要写成npx.cmd。路径参数用绝对路径更稳相对路径在不同工作目录下会解析到不同位置。排查的核心思路是先定位报错属于哪一层再只改那一层的配置不要一次改多个地方。改完重跑对应那一步的验证代码确认单层通过再往上走。6. 把通道固定下来后续验证与长期编码的接入选择五层概念验证完之后你会发现真正需要长期维护的其实只有两样东西Prompt 和 Skill 配置因为这两样承载业务逻辑Tools 和 MCP 相对稳定Agent 编排逻辑改动也不频繁。而模型通道这层最好一次配好就别再动。TaoToken 在这里的价值就是把通道固定住一个 Base URL、一把 Key、一个模型 ID三件套写进配置后你的 Agent、Skill、MCP 全都复用这套凭证。后面想换模型做对比只改模型 ID 那一行其他代码不用动。如果你只是想把模型对话能力接进现有应用做验证可以直接用模型对话入口试效果https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。如果你在搭长期运行的编码 Agent需要更稳定的调用配额和更完整的接入文档可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入过程中遇到协议细节问题文档页有完整的参数说明https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。回到概念本身最后给你一个判断口诀需要模型理解并生成的写进 Prompt需要确定性执行的做成 Tools需要接外部系统的走 MCP需要用户一键触发的封装成 Skill需要多步自主决策的交给 Agent。五者各司其职边界清晰你的智能体应用才不会越写越乱。

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

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

免费获取报价 →
↑