导读
由于大模型自身原因,不可能掌握最新的框架和库,因此在编程中经常会出现陈旧、过时的接口或者生造一个不存在的接口导致代码生成不正确。
因此,有效利用各类文档资源,为 AI 提供高质量、实时的上下文,是克服这一挑战、充分发挥其潜能的关键,为此我们介绍了 context7 这样的工具。
实际上,类似功能早就出现在 Cursor 中了,但因为不好用不会用,一直不被开发者重视。
今天,笔者将给大家带来 Cursor 在这方面的官方建议[1],帮助大家如何更好地利用文档交互特性,为 AI 提供精准上下文,进而提升大模型编程精准性。
Cursor 提供了三个工具,分别处理外部公开文档和私有内部文档。
工具 | 定位与功能 |
---|---|
@Docs | 类似于直接查阅和浏览官方技术文档。 |
@Web | 类似于在互联网上广泛搜索解决方案和前沿资讯。 |
MCP | 类似于访问和利用您组织内部的私有文档和知识库。 |
1. 使用@Docs:获取权威官方信息
@Docs功能将 Cursor 直接连接到众多流行工具和框架的官方文档。当您需要以下类型的权威信息时,@Docs是首选:
API 参考:精确查找函数签名、参数定义、返回值类型等。
入门指南:快速了解工具的安装、配置和基础使用方法。
官方最佳实践:获取源头推荐的编码模式和设计原则。
框架特定调试:参考官方提供的故障排除步骤和常见问题解答。
通过@Docs,开发者可以直接在 Cursor 环境中获取并应用最可信赖的技术信息。
注意:使用前,需要将常用的文档添加到cursor中。
2. 使用@Web:探索广泛的社区与网络资源
@Web功能赋予 Cursor 实时搜索互联网的能力,以获取最新的博客文章、社区讨论和教程。
以下场景适合使用@Web:
近期教程与代码示例:查找由社区贡献的最新学习资源。
技术方案对比:阅读分析不同方法或工具优劣的文章。
追踪最新动态:了解非常近期的技术更新、版本发布或行业公告。
获取多方视角:参考不同开发者对同一问题的多种解决方案和观点。
@Web扩展了信息获取的边界,尤其适用于快速变化的技术领域和需要多元视角的场景。
3. 使用 MCP 访问内部文档
企业内部文档,如内部 API 规范、公司编码标准、专有系统说明和特定业务逻辑,是 AI 模型在标准训练过程中无法接触到的。这些信息对保障项目质量和团队协作至关重要。
模型上下文协议 (Model Context Protocol, MCP) 是 Cursor 提供的一套标准化方法,旨在将企业的私有文档和内部系统安全、高效地整合到 AI 的认知范围内。MCP 充当 Cursor 与企业内部资源之间的桥梁。
集成方案 | 访问内容范围 | 应用示例 |
---|---|---|
Confluence | 企业内部 Confluence 空间 | 查阅架构设计文档、内部服务 API 技术规范、编码标准与指南、项目流程文档等。 |
Google Drive | 共享的企业云端硬盘文档与文件夹 | 获取项目需求规格书、会议记录与决策文档、系统设计文档、团队知识库条目等。 |
Notion | Notion 工作区内的数据库与页面 | 浏览项目管理文档、团队维基页面、知识库文章、产品需求定义、技术规格说明等。 |
自定义集成 | 组织内部的其他系统与数据库 | 对接专有 API 接口、遗留文档管理系统、定制化知识库、特定业务工具与工作流等。 |
对于具有特殊内部系统或独特文档管理需求的企业,可以构建自定义的 MCP 服务器。
这是一个例子(实际上context7就是类似实现):
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; import TurndownService from "turndown"; // Create an MCP server for scraping internal docs const server = new McpServer({ name: "internal-docs", version: "1.0.0" }); const turndownService = new TurndownService(); // Add tool to scrape internal documentation server.tool("get_doc", { url: z.string() }, async ({ url }) => { try { const response = await fetch(url); const html = await response.text(); // Convert HTML to markdown const markdown = turndownService.turndown(html); return { content: [{ type: "text", text: markdown }] }; } catch (error) { return { content: [{ type: "text", text: `Error scraping ${url}: ${error.message}` }] }; } } ); // Start receiving messages on stdin and sending messages on stdout const transport = new StdioServerTransport(); await server.connect(transport);
这允许企业根据自身情况,实现对内部网站、专有数据库、自定义文档系统或内部知识库等资源的灵活接入。
另外,文档的价值在于其准确性和时效性。Cursor 不仅支持消费现有文档,还具备协助开发者创建和更新文档的能力,促进知识的沉淀与共享。官方为此也给出了两点建议,
从代码生成文档:开发者可以选中代码片段,利用 Cursor 快速生成注释、功能描述或初步的 API 文档框架,减轻文档编写负担。
请为选中的 Python 函数生成标准的文档字符串 (docstring),说明其功能、参数和返回值。
从对话中提取并结构化信息:在与 Cursor 协作解决复杂问题或完成某项设计后,可以指示 Cursor 将交互过程中的关键信息、决策逻辑和代码示例总结成结构化的文档或备忘录。
例如,可以提示:
请将我们刚才关于[特定模块]的讨论内容,整理成一份技术说明,包括主要设计点、遇到的问题、解决方案以及相关的代码示例。
小结
模型能力越来越强,能够正确完成一项编程任务,很多时候模型不是瓶颈,关键取决于是否能够给其提供高质量的上下文。
Cursor 通过@Docs、@Web和MCP等功能,为开发者提供了一套强大而灵活的文档交互工具集,辅以动态文档生成能力,有效地弥合了 AI 模型固有知识与项目实际需求之间的鸿沟。
熟练运用这些高级文档技巧,开发者可以显著提升与 Cursor 协作的效率和质量,也是未来程序员水平高低的重要衡量标准之一。