ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

大模型新概念搞晕?这图让你秒懂 Agent/MCP/Skill/Harness Engineering!

大模型新概念搞晕?这图让你秒懂 Agent/MCP/Skill/Harness Engineering! 1. 从一次真实踩坑说起Agent、MCP、Skill、Harness Engineering 到底谁管谁先抛一个我上周遇到的场景。团队里有个同学想让模型自动完成「拉取 GitHub issue → 分析代码 → 生成修复 PR」这条链路结果折腾两天没跑通。他一会儿说 Agent 没配好一会儿说 MCP 连不上最后发现真正的问题是他把 Skill 当成了 MCP Server 来注册模型压根没拿到那份工作流说明。这个坑很典型。Agent、MCP、Skill、Harness Engineering 这四个词现在被混着用很多人第一反应是「不都是让 AI 干活的东西吗」。但它们的职责边界其实非常清晰混用就会像上面那样配置写对了却跑不起来。用一句话先给结论Agent 是主体MCP 是插座Skill 是插件Harness Engineering 是场地设计。Agent 负责「想和做」MCP 负责「连得上外部世界」Skill 负责「把一套重复流程打包成可复用能力」Harness Engineering 负责「让 Agent 在工程环境里稳定、可纠错地产出」。这篇文章不讲空概念我会给你一张能贴在工位上的层级关系图、一份可复制的概念对照表以及一套最小可跑的配置示例。你跟着做完至少能回答三个问题我现在的需求该用哪个概念解决配置该写在哪一层报错了该往哪个方向查适合谁看正在用 Claude Code、Cursor、Cline 这类工具做自动化或者准备把模型接进自己项目里的开发者。不需要你已经是 Agent 专家但需要你至少跑通过一次模型 API 调用。先把四个概念的核心检索词摆出来方便你建立第一印象Agent能自主规划、调用工具、多步执行直到完成目标的 AI 系统核心是 ReAct 循环观察 → 推理 → 行动 → 反思。MCPModel Context ProtocolAgent 连接外部工具与数据源的通用协议标准解决「每个 AI 应用都要自己写一遍连接代码」的重复劳动。Skill可复用的、封装好的 Agent 能力模块通常包含知识说明、提示模板、脚本和工具调用方式。Harness Engineering设计让 Agent 高效工作的环境与基础设施包括结构化知识库、自动化反馈回路、架构约束和清洁机制。下面这张层级图是我自己画在便签上贴显示器的版本你可以直接抄┌─────────────────────────────────────────────┐ │ Harness Engineering │ │ 场地设计AGENTS.md / 约束 / 反馈回路 │ │ ┌───────────────────────────────────────┐ │ │ │ Agent │ │ │ │ 主体规划 → 调用 → 反思 │ │ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ │ │ Skill │ │ Skill │ │ │ │ │ │ 能力包 │ │ 能力包 │ │ │ │ │ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ │ │ │ ┌──────┴────────────────┴──────┐ │ │ │ │ │ MCP 协议层 │ │ │ │ │ │ 插座Tools/Resources/ │ │ │ │ │ │ Prompts 统一注册与调用 │ │ │ │ │ └──────┬────────────────┬──────┘ │ │ │ └──────────┼────────────────┼───────────┘ │ │ │ │ │ │ ┌──────┴─────┐ ┌──────┴─────┐ │ │ │ MCP Server │ │ MCP Server │ │ │ │ GitHub │ │ FileSystem│ │ │ └────────────┘ └────────────┘ │ └─────────────────────────────────────────────┘看这张图记住三层关系Harness 包住 AgentAgent 加载 SkillSkill 通过 MCP 调用外部 Server。任何一层错位链路就断。2. 前置准备用 TaoToken 打通模型调用与 MCP 接入在讲配置之前得先把「模型从哪来」这件事解决。Agent 再聪明没有稳定的模型调用入口后面全是空谈。我这边实测下来用 TaoToken 做统一入口比较省事它同时提供模型对话、Coding Plan、API Keys 和接入文档Claude Code、Cline、Codex 这类工具都能接。先把地址给你后面配置里会反复用到官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 基址https://taotoken.net/api 注意这个不加 UTM 参数配置里直接写这个模型对话页https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chatCoding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsoleAPI Keys 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdocClaude Code 接入https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaudecode-anthropic拿到 Key 之后先别急着配 Agent。我建议按这个顺序走先验证模型能通 → 再配 MCP Server → 再写 Skill → 最后补 Harness 约束。顺序反了出问题你根本不知道是哪一层。第一步验证模型调用。用 curl 直接打一次确认 Key 和 Base URL 没问题curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -d { model: claude-sonnet-4-5, messages: [ {role: user, content: 只回复两个字通了} ], max_tokens: 32 }返回里能看到choices[0].message.content是「通了」说明模型层 OK。这一步不过后面所有配置都是白搭。第二步理解 MCP 的三个角色这决定了你配置写在哪角色职责类比你配置时对应什么MCP Host运行 AI 模型的应用电脑主机Claude Code / Cline / Cursor 本体MCP ClientHost 内部发起请求的模块USB 控制器Host 自动管理你一般不用手写MCP Server暴露工具/资源/提示的服务USB 设备你要在配置文件里注册的那个MCP Server 能暴露三种能力这个区分很重要因为 Skill 和它们的边界就在这里ToolsAI 可以调用执行的函数比如查数据库、发邮件、跑脚本。ResourcesAI 可以读取的数据比如文件内容、数据库记录、API 响应。Prompts预设的提示模板帮 AI 完成特定领域任务。第三步想清楚 Skill 和 MCP Tool 的区别这是最容易混的地方维度MCP ToolSkill粒度单个原子操作完整工作流包含函数定义 参数 schema知识 提示词 脚本 工具调用类比一把螺丝刀一套工具箱 使用说明使用方式通过 MCP 协议注册调用加载进 Agent 系统提示/上下文一句话MCP Tool 是「能做什么」Skill 是「怎么把一串 Tool 用对」。你如果只是想让模型查个数据库配 MCP Server 就够了如果要让它「调研 → 写作 → 排版 → 发布」一条龙那就得封成 Skill。第四步Harness Engineering 不是某个具体文件而是一整套环境设计。它的核心组成包括结构化知识库AGENTS.md 当地图docs/ 存 ADR 和规格、自动化反馈回路测试、lint、类型检查全自动Agent 出错能自己看到报错、架构约束分层 自定义 linter 机械执行、定期清洁机制周期性扫描代码漂移。这部分我放到第 4 节展开因为它是「让 Agent 稳定产出」的关键。前置准备做完你应该手里有一个能通的 API Key、一个想清楚要接的 MCP Server 列表、一个待封装的 Skill 草稿、一份 AGENTS.md 的雏形。接下来进配置。3. 可复制配置settings.json、mcp.json 与 SKILL.md 三件套这一节是全文最实操的部分。我会给你三份可直接复制的配置Claude Code 的 settings.json、MCP 的 mcp.json、以及一个最小 Skill 的 SKILL.md。三件套配齐Agent 就能跑起来。先看 Claude Code 的 settings.json。路径在~/.claude/settings.json如果你用 Cline 或 Cursor字段名略有差异但 Base URL Key Model ID 这三件套逻辑一致{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-5, ANTHROPIC_SMALL_FAST_MODEL: claude-haiku-4-5 }, permissions: { allow: [ Read, Write, Bash(git status), Bash(git diff:*), Bash(npm test:*) ], deny: [ Bash(rm -rf:*), Bash(curl:* | sh) ] } }这里三个字段必须写全缺一个就会报错ANTHROPIC_BASE_URL指向 TaoToken 的 API 基址ANTHROPIC_AUTH_TOKEN是你的 KeyANTHROPIC_MODEL是模型 ID。很多人只填前两个结果报model not found就是漏了 Model ID。再看 MCP 配置。Claude Code 的 MCP 配置在~/.claude/mcp.json或者项目根目录的.mcp.json。我给你一个接 GitHub 和 FileSystem 的最小示例{ mcpServers: { github: { command: npx, args: [-y, modelcontextprotocol/server-github], env: { GITHUB_PERSONAL_ACCESS_TOKEN: ghp_你的token } }, filesystem: { command: npx, args: [ -y, modelcontextprotocol/server-filesystem, /Users/yourname/projects ] } } }注意filesystem那个参数最后一项是允许访问的目录白名单。我踩过的坑是不写这个目录Server 启动后模型读不到任何文件报resource not found查半天以为是协议问题其实是权限没开。最后是 Skill 的 SKILL.md。Skill 的目录结构一般长这样skills/ └── research-to-article/ ├── SKILL.md ├── scripts/ │ └── fetch_sources.py └── templates/ └── article.mdSKILL.md 的内容要写清楚三件事这个 Skill 干什么、什么时候用、怎么调用。给你一个最小可用的模板--- name: research-to-article description: 给定一个主题自动调研资料并生成结构化文章草稿 --- # Research to Article ## 何时使用 当用户要求「调研某主题并写一篇文章」时加载本 Skill。 ## 执行流程 1. 调用 MCP 的 web-search 工具检索 5-8 条相关资料 2. 调用 filesystem 工具读取 templates/article.md 作为结构模板 3. 按模板填充内容生成草稿到 drafts/ 目录 4. 调用 lint 脚本检查格式不通过则自动修复 ## 依赖 - MCP Server: web-search, filesystem - 脚本: scripts/fetch_sources.py这份 SKILL.md 的关键在于「执行流程」那一段它把 MCP Tool 串成了工作流。Agent 加载后不需要你每次重新解释步骤它自己就知道先搜、再读模板、再生成、再检查。三件套配完你的目录结构应该是~/.claude/ ├── settings.json # 模型接入三件套 ├── mcp.json # MCP Server 注册 └── skills/ └── research-to-article/ └── SKILL.md # 能力包定义这里再强调一次三件套的对应关系因为报错时你要靠它定位Base URL Key Model ID 是模型层mcp.json 是连接层SKILL.md 是能力层。三层各管各的别混。4. 验证请求与成功结果从单步 Tool 到完整链路配置写完不代表能跑。这一节我给你一套逐步验证的动作从最小单元开始一层层往上验出问题能立刻定位。第一步验证 MCP Server 是否注册成功。在 Claude Code 里输入/mcp命令正常会列出你配置的所有 Server 和它们暴露的 ToolsMCP Servers: github (connected) Tools: create_issue, list_prs, get_file_contents filesystem (connected) Tools: read_file, write_file, list_directory如果显示disconnected或failed to start先看npx能不能手动跑起来npx -y modelcontextprotocol/server-github报command not found就是 Node 环境问题报401就是 token 没配对。这一步不过别往下走。第二步验证单个 Tool 能被调用。直接让 Agent 做一个最小动作请调用 filesystem 的 list_directory 工具列出 /Users/yourname/projects 下的文件成功的话Agent 会返回目录列表并在输出里标注它调用了哪个 Tool。这一步验证的是「MCP 协议层通了」。第三步验证 Skill 能被加载。把 SKILL.md 放进 skills 目录后让 Agent 执行用 research-to-article 这个 Skill调研「MCP 协议」并生成一篇草稿成功的标志是Agent 会先说明它加载了哪个 Skill然后按 SKILL.md 里的流程一步步执行你能看到它依次调用 web-search、read_file、write_file。如果它直接开始瞎写说明 Skill 没被加载检查 SKILL.md 的 frontmatter 格式对不对。第四步验证 Harness 约束生效。这一步最容易被忽略但它是「稳定产出」的关键。在项目根目录放一个 AGENTS.md# AGENTS.md ## 项目结构 - src/ 源代码 - tests/ 测试 - docs/adr/ 架构决策记录 ## 约束 - 所有新函数必须有对应测试 - 提交前必须跑 npm run lint 和 npm test - 不允许直接修改 src/core/ 下的文件需先写 ADR ## 反馈回路 - lint 失败时错误信息里包含修复建议直接按建议改 - 测试失败时先读 tests/ 下对应文件理解预期行为再改然后故意让 Agent 写一个不带测试的函数看它会不会自己补测试。如果它会主动说「根据 AGENTS.md 约束我需要补一个测试文件」说明 Harness 生效了。完整链路跑通后你会看到类似这样的执行日志[Agent] 加载 Skill: research-to-article [Agent] 调用 MCP Tool: web-search.search(MCP 协议) [Agent] 调用 MCP Tool: filesystem.read_file(templates/article.md) [Agent] 生成草稿 → drafts/mcp-intro.md [Agent] 调用 lint 脚本 → 通过 [Agent] 任务完成从「单步 Tool」到「完整链路」每一步都验证过出问题你就能立刻知道是哪一层。我实测下来90% 的报错都集中在模型层Key/Model ID 写错和连接层MCP Server 没起来真正 Skill 和 Harness 的问题反而少。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节我按真实报错来写每个都给你现象、原因、解决动作。这些是我和团队踩过的不是编的。报错一401 Unauthorized现象模型调用直接返回 401或者 Claude Code 启动时报authentication failed。原因Key 没配、配错位置、或者 Base URL 和 Key 不匹配。最常见的坑是把 Key 写进了mcp.json而不是settings.json或者 Base URL 写成了带 UTM 的完整链接。解决检查settings.json里的ANTHROPIC_AUTH_TOKEN和ANTHROPIC_BASE_URL。Base URL 必须是https://taotoken.net/api不要带任何查询参数。Key 去控制台重新生成一个确认没有多余空格。报错二local proxy failed现象Claude Code 启动时报local proxy failed to start或connection refused。原因通常是本地端口被占用或者 Base URL 指向了一个本地代理但代理没起来。如果你之前配过其他工具可能残留了HTTP_PROXY环境变量。解决先清掉可能的环境变量unset HTTP_PROXY HTTPS_PROXY ALL_PROXY然后确认settings.json里的 Base URL 是https://taotoken.net/api不是http://localhost:xxxx。如果你确实需要本地代理确保代理进程先起来再启动 Claude Code。报错三reading choices 相关错误现象返回cannot read property choices of undefined或reading choices。原因模型返回体结构不对通常是 Model ID 写错了或者 Base URL 指向了一个不兼容 OpenAI 格式的端点。有些模型 ID 在 TaoToken 上不存在请求会返回错误结构代码去读choices就崩了。解决先用第 2 节的 curl 命令单独验证模型 ID。确认ANTHROPIC_MODEL填的是 TaoToken 支持的模型比如claude-sonnet-4-5。如果 curl 能通但工具里报错检查工具是不是把 Base URL 又拼了一层/v1导致路径变成/api/v1/v1/chat/completions。报错四OAuth 相关错误现象接 GitHub MCP Server 时报OAuth token invalid或bad credentials。原因GitHub Personal Access Token 过期、权限不足、或者格式不对。注意 MCP Server 用的是 PAT不是 OAuth 流程别混。解决去 GitHub Settings → Developer settings → Personal access tokens 重新生成一个勾选repo和read:org权限。把 token 填进mcp.json的GITHUB_PERSONAL_ACCESS_TOKEN字段。填完重启 Claude Code用/mcp确认状态是connected。报错五Skill 加载了但没生效现象Agent 说加载了 Skill但执行时没按 SKILL.md 的流程走。原因SKILL.md 的 frontmatter 格式不对或者description写得太模糊Agent 判断不出什么时候该用。解决检查 frontmatter 是不是标准的---包裹name和description字段有没有拼错。description要写清楚「何时使用」比如「当用户要求调研某主题并写文章时加载」而不是「一个调研工具」。排查顺序建议先看模型层curl 能不能通→ 再看连接层/mcp 状态→ 再看能力层Skill 有没有加载→ 最后看 Harness约束有没有生效。按这个顺序基本不会卡超过半小时。6. 该用哪个概念一张对照表 下一步动作最后回到最开始的问题面对一个具体需求我该用 Agent、MCP、Skill 还是 Harness Engineering给你一张对照表直接按需求查你想做的事从哪入手具体动作让 AI 自动完成多步任务Agent选一个 Agent 框架配好模型接入连接数据库/GitHub/Notion 给 AI 用MCP部署对应 MCP Server写进 mcp.json封装一套重复用的工作流Skill写 SKILL.md定义执行流程和依赖用 Agent 写代码但总跑偏Harness Engineering写 AGENTS.md 架构约束 反馈回路什么都想用不知道从哪开始MCP 先行先装几个 MCP Server在工具里玩起来再给一个判断口诀单步操作用 MCP Tool多步流程封 Skill自主决策靠 Agent稳定产出靠 Harness。如果你现在就想动手我建议的下一步动作是去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys 拿一个 Key用第 2 节的 curl 验证模型能通。按第 3 节配好 settings.json 和 mcp.json用/mcp确认 Server 连上。写一个最小 SKILL.md跑通第 4 节的四步验证。在项目根目录放一个 AGENTS.md故意让 Agent 犯个错看它会不会自己纠。如果你是要长期做编码和 Agent 开发可以直接看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc Claude Code 的专门接入页在 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaudecode-anthropic 。最后一个我自己的经验这四个概念不用一次全上。我见过太多人一上来就想搭完整 Harness结果连 MCP Server 都没连上。先把模型调通再连一个 MCP Server再封一个 Skill最后补 Harness。每层验证过再往上走比一次性配齐然后对着报错发呆快得多。
返回列表