• Cursor 技巧 1:Interactive Feedback MCP

    在使用 Cursor 时,用户会面临着每月 500 次 “快车道” 请求的限制,一旦用超,需要排队等待或者额外付费。 一个名为 “Interactive Feedback MCP” 的开源项目为Cursor用户提供了一种创新的节省快速请求的方式:旨在通过在单次Token消耗周期内实现无限轮次的追问和反馈,从而大幅提升付费额度的使用效率。其核心原理是在Cursor准备结束当前对话时拦截该信号,并允许用户输入新的反馈或指令,使对话在保持完整上下文的情况下继续进行,而不是开启新的、消耗额外Token的会话。 什么是 Interactive Feedback MCP Interactive Feedback MCP (MCP: Model-Coordinator-Provider) 是一个本地运行的服务,它与Cursor的MCP协议集成,充当用户与AI模型之间的交互协调者。当AI完成一次响应后,此MCP会介入,询问用户是否需要进一步修改或有新的问题,并将用户的反馈无缝地融入当前对话流中。这意味着最初的一次请求所消耗的Token可以支持后续多轮的迭代优化,据称能将500次请求有效交互扩展数倍。 项目地址:https://github.com/noopstudios/interactive-feedback-mcp 安装步骤 依赖软件 Python 3.11 或更新版本。 uv(Python包管理器)。安装方法如下: Windows: pip install uv Linux/Mac: curl -LsSf https://astral.sh/uv/install.sh | sh 获取代码 clone interactive-feedback-mcp 仓库: 下载源代码也可以 下载完成后进入到代码目录。 安装 mcp 在 interactive-feedback-mcp 代码目录下执行如下命令: 该指令会创建一个虚拟环境并安装各种包(因此执行耗时也比较长)。 执行完成后,执行如下指令运行 MCP 服务器(还是在interactive-feedback-mcp 代码目录下): 在 Cursor 中配置 MCP 通过 Settings > Tools & MCP > Add Custom MCP 添加 MCP : 我这里安装后MCP没能立即启动,将 Cursor 退出重启后才会执行成功。执行成功后会有绿色状态标识。 在 Cursor 中配置 Rule 因为期望 Cursor 在每次请求结束前自动调用 MCP 服务,需要配置下 Cursor 的 Rule (Settings > Rules, Skills, Subagents > Rules > New User Rule ): 总结 通过拦截 Cursor 工作结束信号,在结束时调用 Interactive Feedback MCP 服务,允许用户在 Interactive Feedback 的交互窗口进行追问。 使得追问和修改都在同一个请求会话中进行,达到减少请求 Cursor 次数的效果。 注意: 随着会话上下文拉长,Cursor 会变得很蠢,需要适时的关闭交互窗口结束对话。 END!!!

    [阅读更多...]
  • Spring AI 智能体模式 2 : Anthropic 智能体 Skill

    Spring AI 新增了对 Anthropic 智能体 Skill 的支持 — 这类模块化能力可让 Claude 直接生成实际文件,而非单纯的文本描述。启用该 Skill 后,Claude 能生成可直接下载使用的 Excel 电子表格、PowerPoint 演示文稿、Word 文档和 PDF 文件。 局限性说明 Anthropic Skill 的实现方案仅适用于其自研的 Claude 系列模型,存在以下局限性: 无移植性: 该 Skill 依赖 Anthropic 的代码执行能力和 Files API 基础设施,无法在其他大模型平台(OpenAI、 Gemini 等)使用; 专属类依赖: 需使用 AnthropicChatOptions 、 AnthropicSkill 、 AnthropicSkillsResponseHelper 等 Anthropic 专属类,而非 Spring AI 的通用接口; 模型限制: 仅 Claude Sonnet 4、Sonnet 4.5 和 Opus 4 模型支持该 Skill ; 文件有效期: 通过 Anthropic Files API 生成的文件,24 小时后会自动过期; 公测功能属性: Skill API 需携带公测版本请求头,且接口规范仍可能持续迭代。 Anthropic Skill 与通用智能体 Skill 的选型建议 Spring AI 支持两种不同的智能体 Skill 实现方案,可根据业务需求选择: 选择 Anthropic 原生Skill API 的场景 需使用预构建的文档生成能力,支持 Excel、PowerPoint、Word、PDF 等格式; 希望 Skill 在沙箱化的安全云端环境中运行; 需实现团队共享的、工作空间级别的 Skill; 业务已确定基于 Claude 系列模型开发; 希望由 Anthropic 负责管理 Skill 的执行基础设施 选择通用智能体 Skill (spring-ai-agent-utils) 的场景 需要让 Skill 适配多款大模型(OpenAI、 Anthropic、 Gemini 等); Skill 需要访问本地资源、网络或自定义软件包; 希望将 Skill 与应用代码一起打包,进行版本控制; 需要对 Skill 的执行环境拥有更高的控制权; 优先考虑方案的可移植性,避免厂商锁定。 能否同时使用两种方案? 可以。在同一应用中,可通过 Anthropic 原生 Skill 实现文档生成,同时借助通用智能体 Skill 完成其他可移植的业务能力开发。二者定位不同、功能互补,可协同使用。

    [阅读更多...]
  • Spring AI 智能体模式 1 : Agent Skills – 模块化,可复用的能力

    独立于大模型,可在自有环境运行的 Skills。 Agent Skills 是由 指令、脚本和资源构成的模块化文件夹。 AI Agent 可以发现并按需加载 Skills。相较于将知识硬编码到 prompts 中 或者为每个任务开发专用工具,Skills 提供了一种灵活扩展智能体能力的实现方式。 Spring AI 的相关实现将 Agent Skills 引入到了 java 生态,实现了大模型的可移植性 — 只需定义一次 Agent Skills,即可在 OpenAI、Anthropic、Google Gemini 及其他所有得到支持的大模型中复用。 什么是 Agent Skills? Agent Skills 是模块化的能力,表现为以 yaml 格式封装的 markdown 文件。 每个 Skill 对应一个文件夹,文件夹中需要包含一个 SKILL.md 文件。在 SKILL.md 中至少需要配置 名称 和 描述 两类元数据,同时还包含指导 Agent 完成特定任务的指令。此外 Skills 文件夹中还可以整合脚本(scripts)、模板(templates)和参考文档(references)等内容。 其中的前置元数据不仅支持简单的字符串值,还支持复杂的 yaml 结构(列表和嵌套对象等)以支持高级使用场景。 Skills 采用渐进式披露机制实现上下文的高效管理: 发现阶段: Agent 启动时,仅加载所有可用 Skill 的名称和描述,保留能够判断 Skill 相关性的核心信息即可; 激活阶段: 当待执行任务与某一 Skill 的描述匹配时,Agent 才会将 Skill 的 SKILL.md 文件中的全部指令加载到上下文中; 执行阶段: Agent 按照指令完成任务,并根据具体情况按需加载引用文件或者执行内置代码 通过这个机制,即使注册上百个 Skill , 也能保证上下文窗口的轻量化,避免资源冗余。 Tips: 关于 Agent Skills 的更多内容可以参考 Skill 官方指南 为什么要在 Spring AI 中使用 Agent Skills 无缝集成 只需要注册少量工具,即可将 Agent Skill 集成到现有 Spring AI 应用中 — 且无需对架构做任何修改。 可移植、独立于模型,无厂商锁定 与绑定特定大模型平台的实现方案不同,Spring AI 的 Agent Skill 可以适配多家大模型服务商,切换模型时无需重写代码或重构 Skill。 可复用、可组合 Skill 可以在不同的项目间共享,与业务代码一起进行版本控制。多个 Skill 可以组合实现复杂工作流,还能通过辅助脚本和参考文档进行功能扩展。同时,Spring AI 的 Skill 还可以无缝兼容已有的 Claude Code

    [阅读更多...]
  • SpringAI 01 – AI概念

    模型 Model 模型是旨在处理和生成信息的算法,通常模仿人类认知功能。通过从大型数据集中学习模式和洞察力,这些模型可以进行预测、生成文本、图像或其他输出,增强各行业的应用。 当前有许多不同类型的 AI 模型,每种模型会适配特定的用例。虽然 ChatGPT 及其生成式 AI 功能通过文本输入和输出吸引了用户,但许多模型和公司提供了多样化的输入和输出。在 ChatGPT 之前,许多人对 Midjourney 和 Stable Diffusion 等文本到图像的生成模型着迷。 下表根据输入和输出类型对几种模型进行了分类: Spring AI 目前支持将输入和输出处理为语言、图像和音频的模型。上表中的最后一行,即接受文本作为输入并输出数字的那行,通常被称为嵌入文本,代表 AI 模型中使用的内部数据结构。Spring AI 支持嵌入(Embedding)以支持更先进的用例。 像 GPT 这种模型的独特之处在于它们的预训练性质,正如 GPT(Chat Generative Pre-trained Transformer)中的 “P” 所表示的。这种预训练特性将 AI 转变为一种通用开发工具,但不需要更多的机器学习或模型训练背景。 提示 Prompt 提示是基于语言的输入的基础,用于引导 AI 模型产生特定输出。对于熟悉 ChatGPT 的人来说,可能提示看起来只是输入到对话框中并发送到 API 的文本。然而,它远不止于此。在许多 AI 模型中,提示的文本不仅仅是一个简单的字符串。 ChatGPT 的 API 在一个提示中会有多个文本输入,每个文本输入都被分配了一个角色。例如,有系统角色,它告诉模型如何表现并设置交互的上下文。还有用户角色,通常就是用户的输入。 创建有效的提示既是科学也是艺术。ChatGPT 是为人类对话而设计的。这与使用 SQL 等特定的数据库查询语言来进行 “提问” 有很大不同。与 AI 模型进行交流必须要像与另一个真实的人交谈一样。 这种交互方式非常重要,以至于出现了像 “提示工程” 这样类似一门学科的名词。有大量提高提示有效性的技术正在涌现。花时间精心设计提示可以极大地改善最终输出的结果。 共享提示已成为一种常用的做法,并且在这个主题上正在进行积极的学术研究。作为创建有效提示可能有多违反直觉的一个例子(例如,与SQL比较),最近的一篇研究论文发现,最有效的一个提示可以用这样的语句开头: “深呼吸,一步一步地做这个”。这应该可以让你了解为什么语言如此重要。不幸的是我们还不完全理解如何最有效地利用这项技术,即使是在之前的迭代版本中(如 ChatGPT 3.5),更不用说正在开发的新版本了。 提示模板 Prompt Template 创建有效提示涉及建立请求的上下文,并将请求中指定的部分内容替换为让用户输入的值。 这个过程使用传统的基于文本的模板引擎进行提示创建和管理。Spring AI 为此使用了 OSS 库中的 StringTemplate。 例如下面就是一个简单的提示模板: Tell me a {adjective} joke about {content}. 在 Spring AI 中,提示模板可以类比为 Spring MVC 架构中的 “视图”。提供一个模型对象(通常是 java.util.Map)来填充模板中的占位符。这样“渲染” 后的字符串就成为提供给 AI 模型的提示内容。 发送给模型的提示的具体数据格式有很大差异。最初是简单的字符串,现在提示已经发展到包括多个消息,一条消息中的每个字符串代表模型的一个不同角色。 嵌入 Embedding 嵌入是文本、图像或视频的数值表示,用于捕获输入之间的关系。 嵌入通过将文本、图像和视频转换为浮点数数组(称为向量)来工作。这些向量被用来捕获文本、图像和视频的含义。嵌入数组的长度称为向量的维度。 通过计算两段文本的向量表示之间的数值距离,应用程序可以确定用于生成嵌入向量的对象之间的相似性。 作为探索 AI 的 Java 开发人员,不需要理解这些向量表示(vector representations)背后的复杂数学理论或具体实现,只需要对它们在 AI 系统中的作用和功能有基本的了解就足够了,特别是当你将 AI 功能集成到应用程序中时。 嵌入在像检索增强生成(RAG Retrieval Augmented Generation)模式这样的实际应用中特别相关。它们使数据能够表示为语义空间中的点,这类似于欧几里得几何中的二维空间,但维度更高。这意味着就像欧几里得几何中平面上的点根据其坐标可以近或远一样,在语义空间中,点的接近程度反映了含义的相似性。对应相似主题的语句在这个多维空间中位置更接近,就像图形上彼此靠近的点一样。这种接近有助于进行文本分类、语义搜索甚至产品推荐等任务,因为它允许 AI 根据它们在这个扩展的语义景观中的 “位置” 来识别和分组相关概念。

    [阅读更多...]