Eyad Khrais 是 Amazon、Disney 和 Capital One 的前资深软件工程师,在七年的职业生涯中,他开发的代码服务过数百万用户。在 Claude Code 系列教程里,第一部分讲的是常见误区和基础知识,反响不错。如果还没读过,建议先去翻翻那篇,因为这篇要基于那些基础,聊聊怎么通过掌握底层系统,把 Claude Code 从入门级用到专业级。
在 102 教程中,Eyad 深入剖析了 Claude Code 的技能(skills)、子袋里(subagents)和 MCP 连接器(MCP connectors)这些核心机制,能帮开发者更高效地构建生产级软件。
上下文窗口问题
在聊高级功能前,有个基本问题会影响其他一切。如果你用过多个 AI 编码工具,你可能以为它们处理上下文的方式都一样——剧透一下,其实不是。根据 Qodo 工程团队的详细对比,Claude Code 提供“更可靠且明确的 200K 令牌上下文窗口”,而 Cursor 的“实际使用往往达不到理论上的 200K 限制”,因为“内部截断以管理性能或成本”。系统应用内部保护措施,默默减少你的有效上下文。第一部分的文章已经详细解释了为什么上下文这么重要。
虽然 Cursor 的这些限制可能让人不爽,但得明白不同工具针对不同工作流做了优化。如果你在处理大型、相互连接的代码库,需要模型理解你的身份验证系统如何连接到 API 路由,再连接到数据库 schema,那上下文就很关键。对于更大的项目,直接推荐用 Claude Code,它始终如一地提供完整的 200K。
这也是为什么后面要讲的功能在 Claude Code 中特别有效——技能、子袋里和 MCP 连接都受益于可预测的上下文。
Skills:教 Claude 你的特定工作流程
Skill 是一个 Markdown 文件,用来教 Claude 怎么做你工作中特定的事。当你问 Claude 与技能目的匹配的内容时,它会自动应用。结构非常简单。
创建一个文件夹,里面放一个 SKILL.md 文件:~/.claude/skills/your-skill-name/SKILL.md
或者对于项目特定的 Skill,想跟团队共享:.claude/skills/your-skill-name/SKILL.md
每个 SKILL.md 以 YAML 前置事项开头:
---
name: code-review-standards
description: Apply our team's code review standards when reviewing PRs or suggesting improvements. Use when reviewing code, discussing best practices, or when the user asks for feedback on implementation.
---
描述至关重要。Claude 用它来决定何时应用 Skill。描述要具体,写明触发条件。你也可以明确告诉 Claude “利用 x 技能”,它就会照做。但目标是让 Claude 自己识别出需要用到 Skill 的场景。
在前置事项下方,用 Markdown 编写实际指令。下面是一个最小示例:
---
name: commit-messages
description: Generate commit messages following our team's conventions. Use when creating commits or when the user asks for help with commit messages.
---
# Commit Message Format
All commits follow conventional commits:
- feat: new feature
- fix: bug fix
- refactor: code change that neither fixes nor adds
- docs: documentation only
- test: adding or updating tests
Format: `type(scope): description`
Example: `feat(auth): add password reset flow`
Keep the description under 50 characters. If more context is needed, add a blank line and then the body. It’s awkward to write in this format at first (since writing normally-sounding English sentences is your usual), but the difference in quality is noticeable.
关键架构原则是渐进式披露。Claude 在启动时只预加载每个已安装 Skill 的名称和描述(每个大约 100 个令牌)。完整的指令只在 Claude 确定相关 Skill 时才加载,这意味着你可以有几十个 Skill,而不会撑爆上下文。
你可以把支持文件加到 Skill 文件夹里。如果有广泛的参考材料,单独放一个文件,在 SKILL.md 里引用它。Claude 只在需要时读取。
另外,Skill 不限于代码。有工程师为以下内容构建 Skill:
- 特定于其模式的数据库查询模式
- 公司使用的 API 文档格式
- 会议笔记模板
- 甚至个人工作流程,如膳食规划或旅行预订
这种模式适用于任何你发现自己反复向 Claude 解释相同上下文或偏好的情况。
要查看当前加载的 Skill,直接问 Claude:“你有哪些 Skill 可用?”它会列出它们(或者去设置 → 能力 → 向下滚动,你会看到 Skill)。
Subagents(子袋里):带有隔离上下文的并行处理
Subagents(子袋里)是一个单独的 Claude 实例,有自己的上下文窗口、系统提示和工具权限。这是 Claude Code 架构真正脱颖而出的地方。当 Claude 委托给子袋里时,该子袋里独立运行,并把摘要返回主对话。
重要的一点:上下文退化在上下文窗口的 45% 左右就会发生。子袋里允许你把复杂的研究或实现任务卸载到新鲜的上下文中,只带回相关结果,这样主对话保持干净。
Claude Code 包括三个内置子袋里:
- Explore:一个快速的只读袋里,用于搜索和分析代码库。Claude 在需要理解代码而不做修改时委托给它。使用时,可以指定彻底性:快速、中等或非常彻底。
- Plan:一个研究袋里,用于计划模式期间在呈现计划前收集上下文。它调查代码库并返回发现,以便 Claude 做出明智的架构决策。
- 通用:一个强大的袋里,用于需要多个依赖步骤或复杂推理的复杂、多步骤任务。Claude 在任务需要多个依赖步骤或复杂推理时委托给它。
创建自定义 Subagents(子袋里)
就像需要自定义技能一样,强烈推荐创建自己的自定义子袋里。在 Claude Code 中运行 /agents 查看所有可用子袋里并创建新袋里。
要手动创建一个,把 Markdown 文件加到 ~/.claude/agents/(用户级,所有项目可用)或 .claude/agents/(项目级,与团队共享)。
一个示例结构:
---
name: security-reviewer
description: Reviews code for security vulnerabilities. Invoke when checking for auth issues, injection risks, or data exposure.
tools: Read, Grep, Glob
---
You are a security-focused code reviewer. When analyzing code:
1. Check for authentication and authorization gaps
2. Look for injection vulnerabilities (SQL, command, XSS)
3. Identify sensitive data exposure risks
4. Flag insecure dependencies
Provide specific file and line references for each finding. Categorize by severity: critical, high, medium, low.
tools 字段控制子袋里能做什么。对于只读审查者,限制为 read、grep 和 glob 命令。对于实现袋里,包括 write、edit 和 bash 命令。
Subagents(子袋里)如何通信
这是大多数人忽略的部分。子袋里不会直接与其他子袋里共享上下文,因为它们是隔离运行的。通信通过委托和返回模式发生:
- 主袋里识别适合委托的任务
- 主袋里用特定提示描述任务来调用子袋里
- 子袋里在自己的上下文窗口中执行
- 子袋里将发现/动作的摘要返回给主袋里
- 主袋里整合摘要并继续
摘要是关键。设计良好的子袋里不会把整个上下文倒回来。所以子袋里的描述和系统提示需要明确输出格式。
对于复杂的工作流程,可以链式子袋里。主袋里协调:
Main Agent
│
── Delegates research to Explore subagent
│ └── Returns: "Found 3 relevant files: auth.py, middleware.py, routes.py"
│
── Delegates implementation to custom implementer subagent
│ └── Returns: "Added password reset endpoint, updated 2 files"
│
└── Delegates testing to custom test-runner subagent
└── Returns: "All 12 tests passing, coverage at 94%"
每个子袋里为其特定任务获得新鲜上下文。主袋里只持有摘要,而不是完整的探索历史。这防止了那种拖死长编码会话的上下文污染。
一个重要约束:子袋里不能生成其他子袋里。这防止了无限嵌套并保持架构可预测。
实际的 Subagents(子袋里)模式
- 大型重构:让主袋里识别所有需要更改的文件,然后为每个逻辑组启动一个子袋里。每个子袋里处理其范围并返回摘要。主袋里永远不需要同时持有每个文件的完整上下文。
- 代码审查管道:创建三个子袋里:style-checker、security-scanner、test-coverage,并并行运行它们针对 PR。每个返回一致格式的发现,主袋里合成为一个单一审查。
- 研究任务:当需要理解代码库不熟悉的部分时,用特定问题委托给 Explore。它返回相关文件和模式的精炼地图,保持主上下文专注于实际实现工作。
MCP 连接器:永不离开 Claude
MCP(Model Context Protocol)是一种标准化方式,让 AI 模型通过统一接口调用外部工具和数据源,不再需要为每个工具做自定义集成。你不需要进入 GitHub、Slack、Gmail、Drive 等。通过 MCP 服务器,AI 可以通过 Claude 接口“对话”所有这些系统。
添加连接器的命令:
# HTTP 传输(推荐用于远程服务器)
claude mcp add --transport http
# 示例:连接到 Notion
claude mcp add --transport http notion https://mcp.notion.com/mcp
# 带认证
claude mcp add --transport http github https://api.github.com/mcp --header "Authorization: Bearer your-token"
如果想在 Web 应用中使用更简单的方法,设置 → 连接器 → 找到你的服务器 → 配置 → 授予权限,就设置好了。
以下是 MCP 服务器在过去 6 个月中实际做到的一些事:
- 从问题跟踪器实现功能:“添加 JIRA 问题 ENG-4521 中描述的功能”
- 查询数据库:“从我们的 PostgreSQL 数据库中找到上周注册的用户”
- 集成设计:“基于新的 Figma 设计更新我们的电子邮件模板”
- 自动化工作流程:“创建 Gmail 草稿,邀请这些用户参加反馈会议”
- 总结 Slack 线程:“工程频道中关于 API 重新设计的团队决定了什么?”
力量不在于任何一个单一的集成。一个过去需要五次上下文切换的工作流程(检查问题跟踪器、查看设计、审查 Slack 讨论、实现代码、更新票据),现在发生在一个连续会话中。全天候处于心流状态。
推荐连接以下 MCP 服务器:
- GitHub:仓库管理、问题、PR、代码搜索
- Slack:频道历史、线程摘要、消息搜索
- Google Drive:文档访问,用于实现期间的参考
- PostgreSQL/数据库:直接查询,而不离开 Claude
- Linear/Jira:问题跟踪集成
要查看当前的 MCP 连接,在 Claude Code 中运行 /mcp。
第三方 MCP 服务器未经 Anthropic 验证,所以要有安全意识。对于敏感集成,审查服务器的源代码或使用服务提供商的官方连接器。
复合效应
这就是一切结合的地方。一个知道代码库模式的技能 + 一个处理测试的子袋里 + 到问题跟踪器的 MCP 连接 = 一个无与伦比的系统。
技能编码团队惯例,不必担心上下文。子袋里在处理复杂子任务时保持主对话干净。MCP 连接消除碎片化注意力的上下文切换。
从 Claude Code 中获益最多的工程师,不是将其用于一次性任务,而是把它当作一个系统来倍增工作能力。他们投入时间配置技能、定义子袋里、连接服务。这种投资在后续每个任务中都会合理地产出回报。
如果不知从何入手,可以先从一个技能开始,用于反复解释的内容。或者创建一个单一袋里。然后测试,再继续。没必要一次尝试全部,把自己压垮。
TLDR
上下文窗口并不平等。Claude Code 始终如一地提供 200K 令牌。Cursor 在实践中往往截断到 70-120K,由于内部保护措施。这对大型代码库很重要。
技能教 Claude 你的特定工作流程。创建 ~/.claude/skills/skill-name/SKILL.md 带有 YAML 前置事项(名称、描述)和 Markdown 指令。Claude 在相关时自动应用它们。
子袋里为复杂任务提供隔离上下文。每个获得自己的 200K 窗口。内置:Explore、Plan、通用。创建自定义的在 ~/.claude/agents/。它们通过委托和摘要通信,而不是共享上下文。
MCP 连接器消除上下文切换。连接到 GitHub、Slack、数据库、问题跟踪器。将通常需要五个标签的工作流程链式到一个连续会话中。命令:claude mcp add --transport http
这些功能复合起来:技能编码模式,子袋里处理子任务,MCP 连接服务。一起,它们构建一个随着使用不断改进的系统。
