【AI】Claude Code、MCP、子代理、提示词工程、Agent SDK 与上下文工程
本文整理自全网访问量较高的 10 篇 Claude 相关技术文章(涵盖官方博客、知乎、CSDN 与技术社区),围绕 Claude Code、MCP、子代理、提示词工程、Agent SDK 与上下文工程 六大主题,把散落在各处的核心观点提炼成一份可直接上手的实践清单。文末附全部原文出处,方便深入阅读。
目录
写在前面:为什么要读这 10 篇
2025 年下半年到 2026 年,围绕 Claude 的技术内容爆发式增长。但大多数文章要么停留在"怎么装 MCP"的操作层,要么陷入"提示词咒语"的玄学。真正有价值的,是那些讲清楚 设计思想 的文章——它们能让你从"会用"跨越到"用好"。
我筛掉了重复内容,从访问量与讨论度较高的文章里,提炼出可复用的观点,按主题重新组织如下。
一、MCP:让大模型像浏览器访问网页一样访问工具
核心定义
MCP(Model Context Protocol,模型上下文协议)由 Anthropic 在 2024 年底提出。它的核心目标很简单:让大模型用统一协议安全地访问任何外部工具和数据源——写一次 Server,所有支持 MCP 的客户端都能用。
从架构上看,MCP 分四层:
用户请求层 → Claude 核心层(含权限校验)→ MCP 基础设施层 → 外部服务器
传输协议支持四种方式:stdio(本地进程)、SSE(云端 + OAuth)、HTTP(REST)、WebSocket。
配置作用域:优先用项目级
多篇实战文章达成的共识是:配置优先级为 企业级 > 用户级 > 项目级,但日常应优先使用项目级配置。
原因很实际——不同项目需要不同的 MCP 服务:
- 前端项目可能需要浏览器测试工具(Playwright)
- 后端项目则需要数据库连接
项目级配置(.mcp.json)可以提交到 Git,团队成员克隆后即可复用同一套 MCP 环境,避免全局配置的混乱。
推荐优先配置的高频 MCP
不要一次装几十个。基于长期测试的建议是:先配置 3–5 个高频工具,边用边熟悉。
| MCP 服务器 | 用途 |
|---|---|
filesystem |
文件系统访问 |
context7 |
实时文档查询 |
playwright |
浏览器自动化 |
sequential-thinking |
结构化思考 |
一个高频踩坑
在 stdio 模式下,最典型的报错是读到"非 JSON 格式的乱码"。原因是:
MCP 的 stdio 模式要求服务端只能输出标准的 JSON 通信数据。任何
source命令的输出或日志都会破坏协议。
调试建议:用 --mcp-debug 标志启动,或用 /doctor 命令生成系统诊断报告,查看每个 MCP 服务器的连接状态。
二、子代理(Subagent):上下文管理的杀手锏
它解决的核心问题是"上下文污染"
当你让 Claude 添加一个功能时,它可能花上千 token 去 grep 代码库,然后把一堆中间结果堆进你想保持整洁的主对话里。
子代理正好解决这个问题:它在自己独立的上下文窗口里做繁杂的辅助工作,只向主线程返回一条摘要。
三大好处可以概括为:
- 上下文保留——每个子代理在独立环境运行,防止主对话被污染
- 专业知识——可针对特定域微调系统提示,提高成功率
- 可重用——创建后可跨项目使用、与团队共享
存放位置决定作用范围
子代理本质是带 YAML frontmatter 的 Markdown 文件:
~/.claude/agents/:用户级,机器上每个项目都可用.claude/agents/:项目级,可随代码提交、团队共享--agents:CLI 级,临时测试用,不落盘
一个最小化示例:
---
name: code-reviewer
description: Reviews code for quality and best practices
tools: Read, Glob, Grep
model: sonnet
---
你是一个代码审查员,被调用时分析代码,
针对质量、安全和最佳实践提供具体、可操作的反馈。
⚠️ 易踩的坑:省略
tools字段 = 继承所有工具。为安全起见,务必显式列出允许的工具。
提示词要"精简",不要臃肿
来自中文社区进阶指南的关键观点:
子代理的提示词应保持精简。代码示例和风格指南应放在 Skills 里,而不是子代理里。结构应为:角色定义 → 工作流 → 输出格式 → 完成标准。
因为模型本来就知道如何写代码,塞一堆示例只会浪费上下文。
用模型分级控制成本
| 模型 | 适用场景 |
|---|---|
| Opus | 复杂审查、团队协调 |
| Sonnet | 主要开发、研究分析、代码审查 |
| Haiku | 高频轻量操作、快速探索 |
可通过环境变量 CLAUDE_CODE_SUBAGENT_MODEL 统一设置子代理使用的模型。
别为了并行而并行
避免为了并行而并行——10 个并行代理处理简单任务,反而浪费 Token 和协调成本。
三、提示词工程:从"能用"到"好用"
官方黄金比喻
Anthropic 官方文档里那句经典定义值得反复咀嚼:
“Think of Claude as a brilliant but new employee who lacks context on your norms and workflows.”
提示工程的本质不是"哄 AI"或"咒语学",而是把你脑子里那些"不言自明"的上下文,变成 Claude 能理解的明确指令。
几个高杠杆的实操要点
1. 说"该做什么",而非"不该做什么"
因为"不要做 X"需要模型先理解 X 再抑制它,而"做 Y"直接给出了一条清晰的路径。
2. 少样本示例给 3–5 个
在提示里提供多个"输入 + 期望输出"的范例,对处理复杂或边界(灰色地带)案例特别有效。
3. 预填回应(Prefill)
在提示词结尾预先填入 Claude 应开始的格式,例如一个开放的 XML 标签 <final_verdict>,能让模型直接遵循结构、避免多余开场白。
4. 让模型输出思考过程
始终让 Claude 输出其思考过程。如果不输出思考过程,就不会发生思考。
最基础的做法就是在提示里加一句 “Think step-by-step”。
Claude 4 时代的新变化
Anthropic 针对 Claude 4 的最佳实践特别强调:新模型指令遵循能力更强,因此需要更明确、具体的指令。
一句话总结这把双刃剑:
好消息是它"你说什么就做什么";坏消息是——如果你说的是模糊的废话,它也会非常忠实地执行那些模糊的废话。
内部工作坊还揭示了一个数据:大多数人写提示词时只用到 6 大核心元素中的 1–2 项,等于只发挥了 Claude 不到 3 成的潜力。一个好的 API 提示词,应该像一份完整的工作说明书,而不是聊天式的来回修正。
四、Agent SDK 与上下文工程:给智能体一台电脑
Claude Agent SDK 是什么
它是 Anthropic 官方的智能体构建框架(Python / TypeScript),暴露了驱动 Claude Code 的同一个引擎:工具循环、上下文管理、压缩都已内置。用它构建的智能体开箱即可读文件、跑命令、搜网页、改代码。
命名历史:Claude Code SDK 更名为 Claude Agent SDK,因为它早已超出编码范畴,在 Anthropic 内部被用于深度研究、视频创作、笔记整理等几乎所有智能体循环。
核心设计原则
给你的智能体一台电脑,让它们像人类一样工作。
通过赋予 Claude 运行 bash、编辑/创建/搜索文件的能力,它就能成为通用型智能体。
智能体的反馈循环
收集上下文 → 执行操作 → 验证工作 → 重复
上下文工程:文件结构就是上下文
一个反直觉但极重要的观点:智能体的文件夹和文件结构本身,就是一种上下文工程。
- 邮件智能体可以把历史对话存进
Conversations/文件夹,需要时再搜索 - 遇到大文件时,Claude 会用
grep、tail决定"以什么方式"把内容加载进上下文
关于搜索方式,Anthropic 的建议是:从智能体搜索(agentic search)开始,只在需要更快结果时才加语义搜索。因为语义搜索虽快,但准确性较低、更难维护、透明度也更差。
Agent SDK vs Client SDK:谁拥有循环?
这是最常见的混淆点:
| 谁拥有 agent loop | 你要做的事 | |
|---|---|---|
| Client SDK | 你 | 自己实现工具执行、重试、上下文管理、并行 |
| Agent SDK | Claude | 只描述任务和允许的工具,其余交给 SDK |
经验法则:如果你在手动编写工具执行循环,且需要的是文件/shell/搜索操作,用 Agent SDK;如果只需单次无工具响应、或必须控制循环每一步,用 Client SDK。
一个最常见的配置陷阱
从 SDK 加载项目的
CLAUDE.md不是自动的,它需要同时选择加入项目设置,并使用匹配的预设系统提示。漏掉任何一个,智能体就看不到你的约定。
这是"SDK 智能体忽略 Claude Code 会遵循的规则"的最常见原因。
十行代码起步
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="What files are in this directory?",
options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
一个可工作的智能体,本质就是"一个函数调用 + 一个选项对象",因为底层的一切都已经构建好了。
五、把这些观点串成一条工作流
如果把上面 10 篇文章的观点连起来,其实是一条清晰的进阶路径:
- 用
CLAUDE.md沉淀你的约定——空白的CLAUDE.md意味着你要永远重新解释;维护良好的它意味着 Claude 每次开局就懂你。 - 用项目级 MCP 接入外部世界——先装 3–5 个高频工具,用 Git 共享给团队。
- 用子代理隔离脏活——让繁杂检索在独立上下文里进行,主线程只收摘要。
- 用清晰的提示词表达意图——说"该做什么",给 3–5 个例子,让它输出思考过程。
- 用 Agent SDK 把这一切产品化——当你开始手写工具循环时,就该迁移到 SDK 了。
一句话收尾:Anthropic 的黄金法则是——把你的 prompt 给一个对任务毫无背景的同事看,如果他会困惑,Claude 也会。
参考出处(10 篇原文)
- Claude Code 最佳实践中文版(知乎)
- Claude Code MCP 完全指南(AtomGit 社区)
- 2026 年最新 MCP 协议从原理到实战(CSDN)
- Claude Code 十大必装 MCP 排行榜(CSDN)
- 图解 Claude Code 子智能体 Sub-agent(知乎)
- claude-code-insights:Subagent 最佳实践(GitHub)
- 提示工程概述(Claude 官方文档)
- Anthropic 发布 Claude 4 提示工程最佳实践(OSCHINA)
- Building agents with the Claude Agent SDK(Anthropic 官方) | 宝玉中文翻译
- Claude 的 Context Engineering 秘籍(Bojie Li)
声明:本文为观点提炼与整理,所有核心思想版权归原作者所有,如需完整细节请点击上方原文链接阅读。
更多推荐

所有评论(0)