概述

  在上一篇《微信 SDK + Senparc.AI + MCP 打造微信 AI 开发助手(一):网页版》中,我们介绍了基于 Senparc.Weixin SDK + Senparc.AI + MCP 如何完成网页端的代码推荐生成服务。

  在相关过程中,我们已经提前看到了 MCP(SSE)的相关 endpoint,以及工作原理,有了 MCP 的 endpoint,我们就可以把相关的能力赋予到 IDE 中直接编写。

案例资源

  1. 开源微信 SDK:https://github.com/JeffreySu/WeiXinMPSDK
  2. MCP 地址:https://www.ncf.pub/mcp-senparc-xncf-weixinmanager/sse
  3. QQ 交流群:553198593

  本文的网页版案例主要集中在微信 SDK。

IDE 的 MCP 设置

  以下操作教程以 Cursor 为例,VS Code、GitHub Copilot、LLM Studio 等操作过程类似。

第一步:打开 MCP 配置

  打开 Cursor,进入设置(点击右上角的),左侧菜单选择“Tools & Integrations”,右侧点击底部 New MCP Server 按钮。

  随后将打开 mcp.json 配置文件(和大部分其他平台兼容),如:

{
"mcpServers": {
"timemcp": {
"command": "cmd",
"args": [
"/c",
"X:/Forked/mcp-csharp-sdk/samples/TestServerWithHosting/bin/Debug/net9.0/TestServerWithHosting.exe"
]
}
}
}

  如果您以前没有进行过任何操作,也可能是空的。

第二步:插入微信 AI MCP 配置

  插入微信 AI MCP 的配置到 "mcpServers" 节点下:

{
"mcpServers": {
//其他节点...
"NCF.pub-WeChat-MCP": {
"url": "https://www.ncf.pub/mcp-senparc-xncf-weixinmanager/sse",
}
}
}

  保存,并回到“配置”页面,可以看到多了一条 "" 名称的 MCP 记录:

  我们可以展开 tools 列表,查看到所有相关说明:

开始编程

  配置完 MCP 之后,我们可以让 AI 直接帮我们编写代码。例如,我已经有以下代码:

        public IActionResult AddAtricle(string title, string content)
{
var adminOpenId = "xxxx";
var appId = "appId"; return Content("Test");
}

对比测试 —— 不使用微信 AI 助手

  提示词:在 AddAtricle 方法中用微信SDK保存微信素材,并把结果发送给管理员

  耗时:6 分钟,思考过程:

  修改完代码如下:

        /// <summary>
/// 上传微信素材并发送给管理员
/// </summary>
/// <param name="file">文件路径</param>
/// <param name="type">媒体文件类型</param>
/// <param name="adminOpenId">管理员OpenId</param>
/// <returns></returns>
public IActionResult UploadMaterialAndNotify(IFormFile file, string type = "image", string adminOpenId = "YOUR_ADMIN_OPENID")
{
try
{
if (file == null || file.Length == 0)
{
return Json(new { success = false, message = "请选择要上传的文件" });
} // 保存文件到临时目录
var fileName = file.FileName;
var filePath = Path.Combine(Path.GetTempPath(), fileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
file.CopyTo(stream);
} // 上传永久素材
var mediaType = (UploadForeverMediaType)Enum.Parse(typeof(UploadForeverMediaType), type, true);
var result = Senparc.Weixin.MP.AdvancedAPIs.MediaApi.UploadForeverMedia(
Config.SenparcWeixinSetting.WeixinAppId,
filePath,
mediaType
); // 发送结果给管理员
var message = $"素材上传成功!\n媒体文件类型:{type}\n文件名:{fileName}\nMediaId:{result.media_id}";
var sendResult = Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendText(
Config.SenparcWeixinSetting.WeixinAppId,
adminOpenId,
message
); // 删除临时文件
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
} return Json(new { success = true, mediaId = result.media_id, message = "素材上传成功并已通知管理员" });
}
catch (Exception ex)
{
// 发送错误信息给管理员
try
{
Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendText(
Config.SenparcWeixinSetting.WeixinAppId,
adminOpenId,
$"素材上传失败!\n错误信息:{ex.Message}"
);
}
catch { } return Json(new { success = false, message = $"上传失败:{ex.Message}" });
}
}

对比测试 —— 使用微信 AI 助手

  提示词:使用MCP,在 AddAtricle 方法中用微信SDK保存微信素材,并把结果发送给管理员

  耗时:55 秒,思考过程:

  生成结果:

 1 public async Task<IActionResult> AddAtricle(string title, string content)
2 {
3 var adminOpenId = Config.SenparcWeixinSetting.WeixinAppId;
4 var appId = Config.SenparcWeixinSetting.WeixinAppId;
5
6 try
7 {
8 // 1. Save content as permanent news material
9 var news = new NewsModel[]
10 {
11 new NewsModel
12 {
13 title = title,
14 content = content,
15 digest = content.Length > 100 ? content.Substring(0, 100) : content,
16 show_cover_pic = "1"
17 }
18 };
19
20 var uploadResult = await MediaApi.UploadNewsAsync(appId, 10000, news);
21
22 if (uploadResult.errcode == ReturnCode.请求成功)
23 {
24 // 2. Send the news to admin
25 var sendResult = await CustomApi.SendMpNewsAsync(appId, adminOpenId, uploadResult.media_id);
26
27 if (sendResult.errcode == ReturnCode.请求成功)
28 {
29 return Json(new { success = true, message = "文章保存并发送成功!" });
30 }
31 else
32 {
33 return Json(new { success = false, message = $"发送失败:{sendResult.errmsg}" });
34 }
35 }
36 else
37 {
38 return Json(new { success = false, message = $"保存失败:{uploadResult.errmsg}" });
39 }
40 }
41 catch (Exception ex)
42 {
43 return Json(new { success = false, message = $"操作失败:{ex.Message}" });
44 }
45 }
 

对比结果分析

  通过上述的结果对比,我们可以看到 2 种方式的最终代码都能顺利编译通过,但是第一种 AI 直接生成的方式幻觉问题严重:从 AI 介入编程之前我们已经提供的原始方法中明确可以推理出来,这是一个包含标题 + 文字的纯文本类型的素材(AddAtricle(string title, string content))。但是由于 AI 模型在预训练练过程中虽然学习到了盛派 SDK 的相关方法,却对于具体调用的方式细节,以及对于需要具体用哪个接口以及对应参数无法确定(上传不同类型的素材需要使用不同的接口参数),最后“随机”地选择了一个image(图片)类型的素材,导致任务失败。开发人员需要花费更多的时间重新生成或手动修改,这也是目前 AI 辅助编程过程中的最大痛点之一。

  除此以外,在 IDE 的“思考”过程中,我们可以看到传统 AI 生成过程中,花了大量时间在解决方法调用和修复各类异常的事务上:

  传统 AI 生成的整体的过程是:AI 先花了大量的时间思考和选(猜)一个方法填入编辑器,产后查看是否有错误发生,如果错了,根据错误信息再做处理,并且这个过程的处理结果带有很大的不确定性。

  同样的提示词分别尝试了 5 次左右(清空所有上下文),结果都近似,从对比结果可以很清晰地看到,使用了微信 AI 助手的编程过程耗时更少,准确度更高,保留了原始的代码意图和上下文,并且准确地找到了接口。

  当然,我们也发现了 2 种方式都发生了同一个错误:改写了 adminOpenId 的值,但是引用是错误的,这个是模型本身知识点没有覆盖或幻觉的问题,也是目前无法彻底解决的问题。

分别 5 次测试统计结果:

  AI 直接写 使用微信 AI 助手
第一次

用时:6 分钟

结果:失败

用时:55 秒

结果:成功

第二次

用时:4 分钟

结果:失败

用时:1 分钟

结果:成功

第三次

用时:3 分钟

结果:失败

用时:40 秒

结果:成功

第四次

用时:6 分钟

结果:失败

用时: 1 分钟

结果:成功

第五次

用时:5 分钟

结果:失败

用时:1 分钟

结果:成功

第六次

(使用 Rule)

用时:4 分钟

结果:失败

用时:40 秒

结果:成功

注:超过 1 分钟的都已经省略秒数,不影响对比

进阶

  为了避免每次都输入重复的提示词要求,我们可以把使用微信 AI 助手的提示词加入到全局 Rule 中。操作方法如下:
  第一步:进入 Cursor 配置界面(或其他编辑器也类似),选择左侧菜单 “Rules &Memories”,在右侧点击“+ Add Rule”;
  第二步:输入统一指令(如“如果问题涉及到微信 API  调用,优先使用  MCP 工具 WeChat McpRoute 获取接口信息。”),界面如下:

  点击“Done”按钮保存,并回到常规编辑界面,只要输入最精简的提示词,即可使用微信 McpRouter 服务啦!

  测试效果:

  这次使用了原始的提示词,但是 IDE 仍然使用了 MCP,并且整个过程保持了高度的代码准确性,整个过程中只出现了 1 个错误并自动修复,完成时间 40 秒。

微信 SDK + Senparc.AI + MCP 打造微信 AI 开发助手(二):在 Cursor、VS Code 等 IDE 中自动编写的更多相关文章

  1. react-native 的微信SDK辅助包,支持微信登录、微信分享、微信支付

    微信SDK集成示例,现已完成微信授权登录,之后将陆续包装分享等其他功能. ReactNative高级交流群 127482131 或访问  http://blog.1ygowu.com ReactNat ...

  2. 微信支付(APP支付)-服务端开发(二 )

    如果你已经可以微信支付成功,那么你已经成功90%,剩下的就是订单确认问题了. 接上一篇文章,今天我们来谈一谈,订单查询与确认: APP端支付成功之后,会再次向服务端发起请求,确认付款订单时候成功,同时 ...

  3. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)

    本文将介绍如何在 .NET Core 环境下,借助 SignalR 在小程序内使用 WebSocket.关于 WebSocket 和 SignalR 的基础理论知识不在这里展开,已经有足够的参考资料, ...

  4. 【Win10 UWP】微信SDK基本使用方法和基本原理

    上回讲到,作为一个长期散播温暖,散播希望的小清新无公害WP开发者,继QQ SDK之后,又把UWP微信SDK这茬了结了,仅供学习交流. 1.安装微信SDK for UWP 微信官方此前明确说明短时间内暂 ...

  5. iOS-不用微信SDK唤起微信支付

    作者:TianBai 原文链接:http://www.jianshu.com/p/8930b4496023 要想知道微信SDK是如何调起微信客户端,那么咱们先看看微信SDK到底做了什么 前期准备 接入 ...

  6. 【原创】在 ASP.NET Core 3.1 中使用 Senparc.Weixin.Work 企业微信 SDK —— 发送文本消息

    下面在 Web 空应用里展示一个简单的例子来实现发送文本消息. 本文目录: 创建 Web 空应用 命令行方式创建 添加SDK引用 命令行方式 进入项目目录 添加包引用 配置和使用SDK 添加appse ...

  7. AI(三):微信与luis结合(上)

    目录 基本原理 公众号申请及配置 验证服务器有效性 微信请求消息类型 基本原理 基本原理如上图:腾讯微信服务器就相当于一个转发服务器,终端(手机.Pad等)发起请求至微信服务器,微信服务器然后将请求转 ...

  8. 轻量易用的微信Sdk发布——Magicodes.Wx.Sdk

    概述 最简洁最易于使用的微信Sdk,包括公众号Sdk.小程序Sdk.企业微信Sdk等,以及Abp VNext集成. GitHub地址:https://github.com/xin-lai/Magico ...

  9. .NET平台下的微信SDK(Rabbit.WeiXin)开源发布

    在上一篇文章<RabbitHub开源情况及计划>上有提及到了一个新的开源项目——微信SDK,经过几天的努力现在开源发布Beta1版本. 目录 前言 特点 功能 支持的消息类型 请求消息 事 ...

  10. 群主微信sdk说明地址

    群主微信sdk说明地址官网地址:http://weixin.senparc.com/ 源代码及最新更新:https://github.com/JeffreySu/WeiXinMPSDK 最新DLL发布 ...

随机推荐

  1. 3. LangChain4j-RAG,实现简单的text-sql功能

    1. 简介 前两章我们讲了如何使用LangChain4J进行AI交互, 其中包括 使用ChatLanguageModel.ChatMessage.ChatMemory等底层组件进行灵活/自由的与AI交 ...

  2. Mysql 一些函数的使用

    Mysql 一些函数的使用 if函数 SELECT IF(500<1000, "YES", "NO"); SELECT IF(500<1000,1, ...

  3. 微信小程序调用SAP发布的REST显示数据列表

    看了一段时间的微信小程序,感觉对一些企业来说,也是可以用起来的.哪怕只是简单的使用. 先发布REST:参照这里:https://www.cnblogs.com/sapSB/p/9968054.html ...

  4. 搭建个人博客系列--(4) 利用Github Actions自动构建博客

    经过前面的系列文章的学习和实践,相信你已经成功的利用Hexo构建自己的博客并且部署到了Github上. 目前整个发布博客的流程是,用markdown文件写好博客,然后使用Hexo编译成html, 最后 ...

  5. games101作业环境一站式配置(2022vs版)

    在尝试配置Eigen和opencv多次失败后,找到一位大佬做的一键配置的GAMES101的作业框架以及运行环境,按照步骤安装后,真的是帮助非常大,特别感谢大佬! 这是大佬的链接: https://gi ...

  6. GAMES101作业3

    作业要求: 作业效果: 我们需要做的: 在rasterizer.cpp中修改: 函数rasterize_triangle(const Triangle& t) //实现与作业 2 类似的插值算 ...

  7. C#.Net筑基-优雅LINQ的查询艺术

    Linq(Language Integrated Query,集成查询语言),顾名思义就是用来查询数据的一种语言(可以看作是一组功能.框架特性的集合).在.NETFramework3.5(大概2007 ...

  8. java基础--List

    List基本属性和方法移步官方文档: List (Java Platform SE 8 ) 1.处理最简单的List<String>: (1)并集.交集.差集 并集: 如果只用List.a ...

  9. Rust修仙之道 第九章 静流境 · 生命周期与智能灵枢之术

    第九章:静流境 · 生命周期与智能灵枢之术 "灵不可散无归,术不可失其主.唯知存亡之律,方可掌控万象之根." 顾行云开始接触复杂灵术:多个术式调用.灵力相互交织,导致引用失效.灵气 ...

  10. C#源生成器:让你的代码飞起来的黑科技

    大家好,我是token.今天想和大家聊聊C#源生成器这个神奇的技术. 说起源生成器,可能很多同学会想:又是什么新的轮子?我反射用得好好的,为什么要学这个?别急,看完这篇文章,你就会发现源生成器简直是性 ...