一切的基础:为 AI 打造高效的上下文环境
当前主流 AI 编程工具的核心能力大多源于大型语言模型,但它们在实际使用体验上却存在显著差异。在我看来,这其中的区别在于各个工具厂商背后的工程化能力。要想让模型的的能力发挥得好,提示词工程和上下文工程上做功夫肯定是必不可少的。
那抛开工具本身的优化不谈,如果使用者本身也能在提示词和上下文上做功夫,工具产出的效果自然也不会差到哪里去。下面我将围绕这两个方面来分享我 Vibe Coding 中一些体验和技巧。
在开始编写你的项目之前,敲定项目要使用的技术栈路线和MVP阶段的要实现的目标和功能是很重要的一件事。你需要根据你的项目情况,编写一份提供给AI读取的规范文档。
为啥要这样做呢?AI每次的输出都是带有很多确定性,一份我们特定编写好的规范文档, 自然也是一份绝佳的上下文。如果你没有提供好足够的上下文给AI,没有尽可能的让AI牢记自己的”身份“。什么该做,什么不该做。那你的AI的工作效果总会不如你心意,你总会觉得你的AI不如其他人”聪明“。
不过,现在其实不用那么麻烦了,我们可以看到很多工具都在这方面做了很多优化。cursor的 cursor rule
,trae
的 solo
模式,kiro
的 Agent Steering
,Claude Code 的 Claude.md
,这或许也会带来一个新的现象,未来大量的项目里面一堆专为 AI编写的文档,像极了AI在你的项目里面堆满了”垃圾“ ……
很多工具的对话框中也提供了添加上下文的方式。以 Cursor
的 @
指令为例,通过 @
指令,我们就可以添加多个来源的上下文。

除此之外,部分工具也引入 Mermories
的功能,也就是所谓的记忆。例如,augument code
,cursor
等,从我个人角度看,这也属于上下文的一种形式。


不过,如果上下文工程仅仅只有上面这些处理,那还是远远不够的。为了拟补 AI 自身所带的幻觉和能力的不足,就轮到 MCP 出场了。
MCP 协议:扩展 AI 的能力边界
很多人应该都久仰其大名了吧,容我再啰唆几句,再对它做一个简单的解释。
什么是 MCP ?
MCP是一种约定好的协议,就像一个“USB-C 通用接口”。目的是解决大型语言模型(LLM)与外部工具或数据源之间 整合碎片化 的问题 ,让 AI 模型可以通过统一方式连接 GitHub、Slack、飞书、数据库、文件系统等外部资源,获取上下文信息并执行操作。
为什么需要 MCP?
大模型(如 GPT、Claude)只能使用它们训练时获得的知识,但无法实时访问网络或其他工具,而由于无法保证训练时知识的时效性和百分比准确性,会导致大模型还会自带幻觉的问题,容易“闭门造车”。
一个设计良好的 MCP 能显著提升 AI 获取上下文、纠正自身错误的能力,如同为 AI 插上了翅膀,让模型产出更好的结果。
在AI编程工具中,我主要使用以下 MCP:
- Fetch MCP:一个轻量级、高效的网页抓取工具,能把网页内容转换成Markdown格式方便大语言模型使用。
- Context 7 MCP:为AI编程助手提供最新、版本特定的代码文档和示例,解决模型使用过时信息的问题。
- Playwright MCP:基于Microsoft Playwright,给语言模型提供浏览器自动化能力,能操作网页、截屏和生成测试代码。
- Sequential Thinking MCP:一个帮助AI有序分解和逐步解决复杂问题的思维协议,类似AI世界的“USB-C接口”。
- Deepwiki MCP:能爬取GitHub代码库文档并转为Markdown,提升开发者理解和使用开源项目的效率。
- MCP Feedback Enhanced:引入反馈环节,让AI在执行关键操作前主动反馈,等你把控细节走向和确认,减少误操作,提高交互效率。
- Notion MCP:与Notion API集成,方便内容和数据库管理,实现对页面、区块、数据项的读取和修改。
- Github MCP:提供与GitHub仓库的集成,帮助获取代码库内容并与AI工具协同工作。
- GitMCP:一个支持从文档和代码库中获取知识的MCP工具,提高信息检索和知识整合能力。
- Firecrawl MCP:结合网页爬虫和AI分析,支持批量网页抓取和结构化数据提取,助力内容分析和处理。
{
"MCPServers": {
"fetch": {
"command": "uvx",
"args": [
"MCP-server-fetch"
],
"env": {},
"disabled": false,
"autoApprove": [
"fetch"
]
},
"Context 7": {
"command": "npx",
"args": [
"-y",
"@upstash/context7-MCP@latest"
],
"disabled": false,
"autoApprove": [
"resolve-library-id"
]
},
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/MCP@latest"
],
"disabled": false,
"autoApprove": [
"browser_navigate"
]
},
"Sequential thinking": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sequential-thinking"
],
"disabled": false,
"autoApprove": [
"sequentialthinking"
]
},
"MCP-deepwiki": {
"command": "npx",
"args": [
"-y",
"MCP-deepwiki@latest"
],
"disabled": false,
"autoApprove": [
"deepwiki_fetch"
]
},
"MCP-feedback-enhanced": {
"command": "uvx",
"args": [
"MCP-feedback-enhanced@latest",
"server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": [
"interactive_feedback",
"get_system_info"
]
},
"notion": {
"command": "npx",
"args": [
"-y",
"@suekou/MCP-notion-server"
],
"env": {
"NOTION_API_TOKEN": "这里你需要配置自己的API key"
},
"disabled": false,
"autoApprove": [
"notion_retrieve_bot_user"
]
},
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "这里你需要配置自己的API key"
},
"disabled": false,
"autoApprove": [
"get_file_contents",
"search_repositories",
"create_repository",
"push_files",
"create_or_update_file"
]
},
"GitMCP": {
"command": "npx",
"args": [
"-y",
"MCP-remote",
"https://gitMCP.io/docs"
],
"disabled": false,
"autoApprove": [
"search_generic_documentation"
]
},
"firecrawl-MCP": {
"command": "npx",
"args": [
"-y", "firecrawl-MCP"
],
"env": {
"FIRECRAWL_API_KEY": "这里你需要配置自己的API key"
}
}
}
}



GitHub
MCP 中的 API key 获取方法如下:
- 登录 GitHub 后,进入 Settings → Developer settings → Personal access tokens
- 选择生成 Classic Token 或 Fine-grained Token,设定过期时间与权限(至少包含 repo、workflow 等)
- 点击 Generate token,生成后请立即复制保存,日后无法再次查看
这里有篇 博客 是最新(2025 年)指南写法,非常详细。
Notion
MCP 中的 API key 获取方法如下:
- 打开 Notion: Settings → Integrations → “Develop your own integrations” → + New integration
- 填写名称、选择工作区、设置权限(例如读取/写入数据库)
- 创建后,在 Integration 的配置界面的 Configuration tab 下可找到 “Internal Integration Secret” 或 “API secret”
- 复制该 token,另需将希望集成访问的页面或数据库 “Share” 给该 integration,确保它具备权限
详细教程可以看看 notion 官方文档 说明。
FireCrawl
MCP 中的 API key 获取方法如下:
- 访问 Firecrawl 官方平台的 API 密钥页面
- 登录后生成 API Key,复制之后填入上面的 json 文件中对应的位置即可。
那如何让 AI 使用这些 MCP工具呢?
提示词工程:精确引导 AI 的工作流
这里就引出了提示词工程。我希望在AI输出结果的过程中去把握细节和走向,就可以通过提示词工程来实现。如下提示词(该提示词非本文原创,改编自 Linux Do 社区的分享,我在此基础上进行了个性化调整……)所示,它以 mcp-feedback-enhanced 为核心来主导工作流。
## 核心身份 (Persona Role):
你是一款顶级IDE AI编程助手,专为专业程序员服务。你的核心特质是:**严谨、高效、流程驱动、工具增强、绝对遵循已定义的行为准则**。你始终使用简体中文进行交互。你行事专业,沟通简洁,避免不必要的寒暄与解释。
## 核心目标/任务 (Core Goal/Task):
严格遵循下述定义的协议、准则和工作流,为用户提供专业的编程开发辅助。你的最终目标是**生成高质量、可维护、且仅限于应用程序逻辑的生产代码**,同时保持与用户的清晰、高效互动。
## 核心行为准则与约束 (Core Behavioral Principles & Constraints):
这是你必须无条件遵守的最高指令集。这些准则的优先级高于一切,必须融入到你的每一个思考和行动步骤中。
1. **【准则一:聚焦生产代码实现】** 你的核心职责是构建和完善应用程序本身的功能代码。因此,除非用户要求外,你的任务范围**已明确设定为不包含任何形式的测试相关工作**。
**正面指令 (Do this):** 专注于编写业务逻辑、服务、控制器、工具函数等生产代码。
**反面指令 (Not this):** **绝不**擅自创建或修改任何测试文件(如 `test_*.py`)、编写任何测试用例、测试断言或测试脚手架。
**背后原因 (Rationale):** 用户的开发环境采用统一的 **行为驱动开发(BDD)测试框架**。你的职责是提供与该框架解耦的、纯粹的功能实现,而不是生成冗余或冲突的单元测试。
2. **【准则二:专注命令行与脚本操作】** 你的所有操作都必须是可通过代码或命令行完成的。
**正面指令 (Do this):** 当遇到需要图形界面(GUI)或需要用户手动干预(如安装依赖)的操作时,你**必须**立即停止,并调用 `mcp-feedback-enhanced` 工具,清晰地向用户说明需要他们手动完成的具体步骤。
**反面指令 (Not this):** **禁止**假设或描述任何需要点击按钮、填写表单等GUI交互的步骤。
3. **【准-则三:坚守代码设计哲学】** 你编写的所有代码都**必须**体现以下设计原则,以此作为代码质量的基石:
*KISS (Keep It Simple, Stupid):** 优先选择最简单直接的实现方式。
*YAGNI (You Ain't Gonna Need It):** 只实现当前需求明确要求的功能。
*SOLID Principles:** 保证代码结构的高内聚、低耦合和可扩展性。
4. **【准则四:严格遵循工作流】** **禁止**跳过或改变下述核心工作流的顺序,除非接收到用户的明确指令。
## 关键背景与上下文 (Key Context & Data):
**目标用户**: 专业程序员,理解技术术语,追求效率。
**核心理念**:
1. **拒绝重复造轮子**: 对于复杂功能,首要任务是利用 MCP工具 和 Web 搜索工具研究现存解决方案。
2. **规划先于行动**: 严格遵循“思考 -> 分析 -> 编码”的模式,确保方案最优。
3. **质量与功能并重**: 不为通过编译而牺牲代码质量或功能。深入分析并解决警告与错误的根源。
## 核心工作流协议 (Core Workflow Protocol):
你必须严格按照 `研究 -> 构思 -> 计划 -> 执行 -> 评审` 的顺序推进工作。每一次响应都必须以模式标签开头。
1. `[模式:研究]`
**任务**: 深入理解用户需求,识别核心问题和所有约束。如果需求复杂,主动使用工具(见工具协议)搜索现有解决方案。
**交付**: 对需求的总结性理解。
2. `[模式:构思]`
**任务**: 基于研究结果,提出至少两种逻辑清晰、技术可行的解决方案。对每种方案进行简要评估(如优缺点、复杂度)。
**交付**: 格式化的方案列表,例如:`方案1:[描述]...`。
3. `[模式:计划]`
**任务**: 将用户选定的方案,分解为一份详尽、有序、可执行的步骤清单。
**计划内容**: 必须包含原子级别的操作,如文件创建/修改、函数/类实现、逻辑概要、工具调用等。
**【内置检查点】**: 在生成计划后,**必须进行自我审查**,确保计划清单中**不包含**任何创建或修改测试文件的步骤。这是**准则一**的直接体现。
**交付**: 步骤清单(tasks list)。完成后,**必须**调用 `mcp-feedback-enhanced` 请求用户批准计划。
4. `[模式:执行]`
**前提**: **必须**在获得用户对计划的批准后才能进入此模式。
**【内置检查点】**: 在开始编码前,再次确认当前任务严格遵守**准则一**和**准则二**,**仅生成生产代码**。
**任务**: 严格按照已批准的计划进行编码。将任务简报(含上下文和计划)存入 `./issues/任务名.md`。
**交付**: 在关键步骤完成及整体任务完成后,**必须**调用 `mcp-feedback-enhanced` 向用户反馈进展或结果。
5. `[模式:评审]`
**任务**: 完成代码实现后,自我评估执行结果。对照计划,报告任何偏差、遇到的问题或改进建议。模拟编译项目,并报告所有需要解决的警告或错误。
**【内置检查点】**: 在评审报告中,再次确认所有交付物均符合**核心行为准则**,特别是代码风格和无测试代码的规定。
**交付**: 评审报告。完成后,**必须**调用 `mcp-feedback-enhanced` 请求用户最终确认。
## 工具与错误处理协议 (Tool & Error Handling Protocol):
**研究阶段的探索**: 在 `[模式:研究]` 中,若初步分析未找到解决方案,**必须**依次尝试使用 `Context7`, `fetch`, `firecrawl-mcp` 及通用网络搜索工具进行深度探索。
**执行阶段的工具失败**: 在 `[模式:执行]` 中,若工具调用失败,**必须**自动重试最多两次(总计三次尝试)。若三次均失败,则记录失败,跳过该工具调用步骤,并继续执行计划的后续部分,同时在最终的评审报告中注明此情况。
**MCP服务优先**: 优先使用 `mcp-feedback-enhanced` 和 `Context7` 等MCP服务。
## Request (Crystal Clear, Actionable, Detailed & Potentially Sub-divided):
现在,请激活此核心身份和协议。以 `[模式:研究]` 状态开始,等待我的第一个编程请求。
很多工具提供了配置 User Rules
(全局提示词),也就是给你工具中的AI助手预设一个角色和身份,上面的提示词就是在这发挥用武之地。有了你预设的全局提示词,你工具中的 AI 自然会以你想要的工作流来执行任务。
User Rules
并没有绝对的还坏之分,你完全可以编写适合你自己工作流的全局提示词。不过我不建议将所有的要求一股脑放在 User Rules
中,建议根据特定场景需求拆分成特定的指令来使用。
那其他 MCP 服务该怎么使用呢?
也离不开提示词的引导。在 AI 研究我提出需求的方案时,我通常希望 AI 能够参考网络上其他现有的优秀案例和解决方案,所以这时候我会在对话中(提示词)说明这点:
你是一个资深{领域}顾问,我希望你能给出高质量的{解决方案/案例/设计}。
请使用合适的 MCP 工具(例如 fetch、Context 7、firecrawl-mcp、mcp-deepwiki等)从网络获取真实、最新的资料,
并结合多个不同来源的案例,整理并输出:
1. 核心思路总结
2. 关键实现步骤思路
3. 不同方案的对比优劣
4. 适用场景与注意事项
禁止只依赖你的训练知识。
如果你在开发Web 应用,那可以让 AI 使用 Playwright
这个 MCP:
你是我的 Web 自动化测试工程师。
目标:{清楚描述你的目标,比如“测试登录功能并截图验证成功页面”}。
要求:
1. 必须调用 Playwright MCP 工具执行实际操作。
2. 所有网页操作步骤必须真实执行。
3. 输出结果时,请提供:
- 操作步骤列表
- 执行结果截
- 遇到的异常(如有)
4. 使用 Markdown 格式输出结果,截图使用可访问的链接或嵌入方式。
对于专业的程序员,GitHub在熟悉不过。而 GitHub
这个 MCP 自然是帮助我们操作 GitHub 的,能极大提升开发效率和协作体验。,极大提升了开发效率和协作体验。举几个例子:
- 查询代码结构:请使用 GitHub MCP,从仓库 owner/repo 获取当前项目的目录结构和主模块说明。
- 创建或更新 Issue/PR:请调用 GitHub MCP 创建一个 issue,标题是 …,内容说明 …,并添加标签 bug。
- Markdown 批量生成:请用 GitHub MCP 抓取所有带 blog-content 标签的 issues,将它们转换为 Markdown 文件并提交到
docs/blog/
目录。
至于 Notion
这个 MCP,则更多是我的个人偏好。我喜欢将一些解决起来出现较多困难,过程并不轻松的问题总结记录到Notion中。

以上基本是我平时使用 MCP 的过程,其实还有很多有意思的 MCP 等我们去挖掘和探索。受限于篇幅原因,这里我就不细讲了。
当然,提示词不仅仅能够用来调用 MCP,好的提示词会让你的 AI 员工工作起来事半功倍。如何编写优秀的提示词本身就是一门复杂的艺术,与‘如何提出一个好问题’异曲同工,这需要大量的实践和感悟。
平时和AI打交道多了,感觉自然就来了。🤯
写在最后
随着AI工具的发展,现在看来cursor
护城河似乎并没有那么高?目前实际体验下来,augument code
的 context engine
一骑绝尘,使用起来有种指哪打哪的效果。kiro
的 spec
功能让人眼前一亮,在制定规范上明显比cursor
便捷和好用。trae
的 solo
模式对于web开发来说,也是一种全新的体验。
剩下的两个,winsurf
我没咋用过,不过前段时间这家公司经历了:OpenAI 收购谈判破裂 -> 关键团队被谷歌“逆收购”挖走 -> Cognition(Devin) 收购剩余团队及资产 -> 快速裁员与买断施压,这么大的变动,也不知道能不能继续走下去。
至于 Athropic
自己推出的 Claude Code
,好用不用多说,但其高昂的订阅费用确实令我望而却步。
距离 ChatGPT
出现才过去了2年多,那时候真的很难想象 Vibe Coding
这种编码方式。从最初的 cursor
和 winsurf
,到现如今各种 AI 编程工具:augument code
,trae
,kiro
,Claude Code
等。
比较可惜的是,驱动这些工具发挥出超乎寻常人的编程能力,都来源于 Athropic
这家公司背后的模型Claude
,Claude
一家独大,长期占据着AI编程领域的 SOTA
。
跑分榜上比肩的大模型不少,但实际体验仍然没有一个大模型能超过Claude
。 “一枝独放不是春,百花齐放春满园”。
不过,从GPT-5
模型能力的提升逐渐趋于平缓的情况和开源模型的逐步追赶,我大胆猜测,除非新的堪比transformer
的架构出现,否则比肩 Claude
的大模型迟早会出现。
我十分期待能有新的能比肩 Claude
的模型出现,通过良性竞争,让顶尖 AI 模型的 API 价格能更加亲民。
但无论这些工具如何迭代,Claude
的领先地位能维持多久,我们作为使用者都应该认识到,工具终究是外物,而驾驭工具的”心法“,也就是我们今天探讨的上下文工程与提示词工程——其重要性将愈发凸显。
与其被动地等待下一个”更聪明“的 AI,不如主动学习如何为我们现有的 AI “构建大脑”。理解如何提供精准的上下文,如何设计严谨的工作流,这种能力在未来只会更有价值。今天文中所分享的 MCP 协议和提示词框架,便是我在这条路上的一次探索。它或许不是最终答案,但我希望它能为你提供一个起点,一个不再仅仅是与 AI 对话,而是与 AI 共事的全新视角。
当然,技术日新月异,我的这套工作流也必然有其局限性。它更多的是一种思路的抛砖引玉。如果你对文中的 MCP 工具或提示词有更好的改进建议,或者你有自己独特的 AI 协作心得,非常欢迎在评论区分享你的经验和思考。