不懂代码,也可以用cursor从0-1做一个微信小程序并部署上线。【万字长文教程】

 

之前小孩一直喜欢问我十万个为什么,但是好多内容我又不会,找大模型又觉得打开软件太复杂。

于是就想开发一个小程序来让娃自己用。同时也想挑战一下,不写一行代码,用cursor从0-1完成一个小程序项目。看看到底要用多长时间。那么接下来就开始我们的旅程吧。

当然,文字内容比较多,接近万字!想要完整阅读体验,后台回复:“小程序开发”,获取文章飞书链接。

架构选型

其实架构选项非常简单:

为了保证快速验证,在V1.0版本中我们都选择http接口请求。

二、开发小程序必备知识

下面介绍我们在开发小程序所需要的技术和工具,大家可以快速略过,直接进入到第三个章节。等到真正需要的时候,再回到这个章节去了解对应的部分即可。

1. Cursor的安装

cursor作为AI编程最火的工具。快速且优质的代码生成能力,逐渐成为编程的主力军。

目前软件下载有50次免费的额度,付费版本20美元/月。如果你是一个cursor深度用户,那么建议你充个会员,因为至少这样会减少你很多不必要的时间。

对于初学者,建议通过注册账号、试用50次,再删除账号用原始账号的方法再次注册的方式去了解cursor 。

具体使用方法就是:

网上有大量的免费使用cursor的方法,这里不再赘述

2.微信开发者工具安装

第一步:小程序的注册。

进入小程序官方网站:

点击小程序,就会出现一系列的注册步骤。注册之后进入后,就可以看到小程序的APPID了,这个作为小程序的唯一ID,后续有用。

第二步:小程序的下载,


第三步:软件的功能介绍

小程序开发的功能基本上分为下面5块内容。

区域1:微信小程序可视化界面,当我们在cursor中修改代码之后,会影响这一部分的生成。

区域2:代码的目录结构,基本上就是小程序可以执行的文件目录。

区域3:系统运行的错误日志以及调试信息,都可以在这里看到。

区域4:这里可以进行代码的编译以及手机运行调试,以及缓存信息的清理。

如果遇到不管如何改代码,就是不生效,那么你就要试一下“清除全部缓存”功能了。

区域5:上传、版本管理。

这里更多的是微信小程序的上线、发布功能。在后期想把小程序发布成产品才会用到!

3. 了解websocket

WebSocket是一种提供全双工通信的协议,与HTTP不同的是,HTTP是请求-响应模式且无状态,而WebSocket建立连接后可持续双向通信。

例子:聊天应用中,HTTP需要客户端不断发送请求检查新消息,而WebSocket允许服务器主动推送消息到客户端,实现即时通信。

譬如说文本转语音,如果按照http的接口方法,那么我们必须要

4.了解云开发?

云开发顾名思义就是在腾讯云上开发代码,可以直接运行。从而免去了服务器安装部署和运费以及数据库的的麻烦。

当然唯一的缺点,是收费的。1个月19.9元,也是一笔不小的开支。

云开发,可以参考微信官方文档:

那至于云函数就是在云开发中写具体的业务逻辑,如果不涉及到后台的存储,我们完全可以用云函数。

5.注册coze的帐户

coze作为字节跳动的agent产品,从去年推出就受到很大的推崇,同时coze也提供了更语音转文本的API。

具体方法是这样的:

https://www.coze.cn/open/playground/audio_transcriptions

如果我们要使用coze的API,我们需要获取coze的token。获取token的路径如下:

https://www.coze.cn/open/oauth/pats

如果不确定要要选择哪些,就点击全选一定没错。

点击确定后,会弹出一个token的页面,记得保存。

6. 注册硅基流动的帐户

硅基流动,相当于自己有很多很多的算力资源,然后部署各个厂商的大模型对外提供服务。

通过注册硅基流动的账号,拿到官方的api key,我们就可以使用各个厂商的大模型。

像:阿里的qwen模型、deepseek模型、文本转语音的模型,在上面都有。

最主要的是免费。

当然,新注册的用户可以免费领取2000万token来使用。

具体的注册地址如下:

https://cloud.siliconflow.cn/i/E5bQxmxP

tips:现在如果想用在线的大模型,都必须实名认证,不然的话每天只有100次模型调用的机会。

当然可以选择其他不用实名登记的模型,譬如deepseek官方、以及GPT这类的模型,大家可以按照自己的需求去灵活调整。

访问硅基流动模型的key如下:

https://cloud.siliconflow.cn/account/ak

7.注册讯飞语音输入【可选】

讯飞作为老牌的语音处理厂商,其中的识别率和速度还是很不错的。而且1年免费额度是5000次机会调用,因此作为初级开发用户,基本上毫无压力。

https://www.xfyun.cn/services/voicedictation

点击免费使用,就会让我们进行注册和领取免费额度。不过这里要注意点:如果要使用讯飞的开放API,还是要身份证实名认证。

等做好这一切,我们就可以进入控制台,看到1年50000多次的服务调用。同时还有APPID和APISecret以及APIKey,相当于访问讯飞的钥匙,后续会用到。

当然讯飞的文本转语音也是需要免费领取的。

点击这个网址:

https://www.xfyun.cn/services/online_tts#anchor4503211

注册的时候按照官方要求的步骤完成接口。最终你会在控制台中看到下面的内容:

至于具体的使用,我们在第五章2.0版本优化部分详细介绍。

8. iconfont来获取项目图标图片

界面的图标我们基本上都是从iconfont中找。

官方网址:https://www.iconfont.cn/

在这个输入框中,我们可以输入关键词,找到自己感兴趣的icon。

可以通过“加入购物车”或者“下载”操作来完成图标的引入。

  • • 直接下载,用途:单个图片的下载。

一般来说,下载是针对单个图标的下载,我们可以选择下载图片的格式以及颜色。

  • • 加入购物车,用途:将所有的图标打包在一起,通过字体图标方式统一下载。提高微信的请求效率。

首先要新建一个项目,目的是将所有的项目都打包成一个文件夹。

因为微信不支持ttf等字体图标,因此我们必须将下载的图标转化为base64。具体的操作

选择base64.

接下来,我们在图标市场,直接将图标加入购物车。点击下载到本地即可。

9. git代码提交

因为AI的不确定性,每一次生成代码,谁知道是不是魔丸?那么有效的解决办法就是git管理,针对特别重要的节点,进行提交上线。就是可以随时还原之前的代码。

git通俗的理解:一根绳子在重要的地方打个结,然后可以通过这个结回到之前的地方。

对于windows用户,可以通过:https://git-scm.com/downloads/win来下载git客户端。

对于mac用户,一般是默认安装git,网上关于git的资料都很多,可以自行去了解。

https://blog.csdn.net/weixin_45277161/article/details/134709441

不管是新手还是老手,都会面临git命令太多的问题,那么不用担心,我们有了cursor,可以直接在agent模式告诉cursor:

提交代码

拉取最新代码。

cursor就像你的小助手一样,快速去获取或者提交你最新的代码。

三、1.0版本mvp小程序-前置工作

不管是开发什么软件,必须要有一个可以执行的小版本,就是我们俗称的mvp版本,只有这样,才能不断正反馈,最终完成我们想要的功能。

1.原型生成

因为目前claude3.7已经非常智能了,可以根据需求直接生成一个html的原型页面,这样我们就可以直接打开了。

我们这样对cursor说:

作为资深产品经理兼UX/UI设计专家,请为"十万个为什么"小程序创建高保真原型设计。您需发挥专业设计能力,将概念转化为视觉化界面。


项目需求:

1. 核心功能实现:首页类似微信对话界面,点击开始录音,松开发送声音;我的界面有个人设置【设置年龄、性别、小名的功能】还有历史对话功能。

2. 产品面向的对象是4-6岁的小朋友。因此界面需要适当好看一点。

3. 使用HTML在一个界面上生成所有的原型界面(此要求不可变更)


技术规范:

1. 集成FontAwesome以及iconfont或其他开源图标库,提升UI专业度

2. 设计符合当前移动应用设计标准,注重视觉层次与交互逻辑

3. 提供足够完善的界面细节与状态展示

4. 确保原型界面达到可直接用于开发的质量标准

5. 可以用tailwindcss风格来进行css页面的修改和管理。


请基于以上要求,设计出直观、美观且功能完整的小程序原型,使开发团队能够无缝对接实现。

(1)新建一个项目文件:askAnything,用cursor打开。

(2)选择一个“new chat”,模式选择“ask”模式,模型选择“claude-3.7-sonnet”。这个时候就等待cursor生成代码。

tips:为什么不选择agent模式,因为agent模式想象力太高,会生成很多代码,为了保证代码的可控性,先通过ask模式生成代码。

(3)待生成完毕,拉到上面,点击apply旁边的复制按钮。

(4)在左侧新建一个index.html文件,将刚才的文件复制进来。

这个时候,我们回到具体的页面就可以打开index.html文件了。

当然这个是第一版本,是不是很丑,没关系,我们继续优化。而且并没有按照我们的要求生成多张原型图。

(5)我们可以这样对cursor说:界面太丑了,给我优化一个新的版本。记得模型选择“claude thinking”模式。

这个是最终的界面结果:

(6)当然,我们是还不满足的,譬如我们想要一个蓝色的版本。继续和cursor对话,去调整,直到满意为止。

这就是最终的结果:

总之一句话,除了提示词写得好之外,我们还要一直不断的微调,根据我们的想法继续优化代码。

2. 用微信开发者工具来构建一个新的项目

(1)在微信开发者工具打开。创建一个小程序的初始项目:chatWithchild。APPID的查找办法参考第二章第二个章节。

点击创建之后,界面就如下图所示:

虽然丑一点,但是毕竟也算的是一个微信小程序的初始项目。

(2)用cursor打开我们刚才的项目,也就是这个小程序的目录。接下来咱们所有的开发都在cursor中进行。

3. 添加小程序开发的doc文档

通过添加 在线 doc 文档,相当于给 cursor 添加知识库,来补充大模型的未知领域。

官方文档的地址如下:

然后点击“setting”->Features->add new doc,将上面的代码一个一个添加进去。当网址前面出现绿色,代表添加成功。

4. cursor-rules生成

所谓的rules的意思就是通过一定的规则来约束cursor的生成代码的方式。

在cursor0.47版本之后,支持cursor-rules的项目级别编写。因为我们不涉及到后端,所以这里只需要写微信小程序调用接口的mdc文件。

打开cursor->setting->rules->add new rule这个工具进行rule文件的添加。

此时记得ruleType选择“agent requested”,Description描述改为:“语音转文本、文本调用大模型、根据文本生生成语音”都可以参考。

将下面的内容复制进去:



 



大模型调用以及语音生成文本、文本生成语音 务必参考下面的方法:

----------------

1、语音转文本的调用。


参考api代码:


```

curl -X POST 'https://api.coze.cn/v1/audio/transcriptions' \

-H "Authorization: Bearer {token}" \

-H "Content-Type: multipart/form-data"

```

说明:

其中header的token为coze的 token

Body params 支持音频文件的上传,支持格式是ogg、mp3 和 wav。


参考的地址:https://www.coze.cn/open/playground/audio_transcriptions 


2、大模型调用API


参考api代码:


```

curl --request POST \

--url https://api.siliconflow.cn/v1/chat/completions \

--header 'Authorization: Bearer <token>' \

--header 'Content-Type: application/json' \

--data '{

  "model": "Qwen/QwQ-32B",

  "messages": [

    {

      "role": "user",

      "content": "What opportunities and challenges will the Chinese large model industry face in 2025?"

    }

  ],

  "stream": false,

  "max_tokens": 512,

  "enable_thinking": false,

  "thinking_budget": 512,

  "min_p": 0.05,

  "stop": null,

  "temperature": 0.7,

  "top_p": 0.7,

  "top_k": 50,

  "frequency_penalty": 0.5,

  "n": 1,

  "response_format": {

    "type": "text"

  },

  "tools": [

    {

      "type": "function",

      "function": {

        "description": "<string>",

        "name": "<string>",

        "parameters": {},

        "strict": false

      }

    }

  ]

}'

```

说明:

header中的token 为硅基流动的token。


3、文本转语音的,可以参考这个api。


curl --request POST \

  --url https://api.siliconflow.cn/v1/audio/speech \

  --header 'Authorization: Bearer <token>' \

  --header 'Content-Type: application/json' \

  --data '{

  "model": "FunAudioLLM/CosyVoice2-0.5B",

  "input": "Can you say it with a happy emotion? <|endofprompt|>I'\''m so happy, Spring Festival is coming!",

  "voice": "FunAudioLLM/CosyVoice2-0.5B:alex",

  "response_format": "mp3",

  "sample_rate": 32000,

  "stream": true,

  "speed": 1,

  "gain": 0

}'


header中的token 为硅基流动的token。

四、1.0版本mvp小程序-AI编码

那么接下来就是进入具体的小程序开发。我们的策略就是:cursor生成代码, 通过小程序开发工具进行预览。

1.初始化语句

首先要编写instruction.md编辑,告诉cursor我们的需求。

 

你现在是一个小程序的开发专家,我需要开发一个小程序。

底部有两个固定按钮:分别是对话和我的功能。对话功能就是首页。


实现一个小孩和小程序对话,问问题。

1. 核心功能实现:首页类似微信对话界面,点击开始录音,松开发送声音;我的界面有个人设置【设置年龄、性别、小名的功能】还有历史对话功能。


那么对应的后台。

1、声音转文字,首先要生成本地音频文件,然后去调用coze的API。 coze的调用token为:pat_xl9wQWSF13IfWNRhCAXNXXX

2、和大模型对话调用硅基流动的api,将转化为文字的语音,结合个人设置信息,整理成prompt告诉大模型,给生成结果。

其中 token 为:sk-cgleharpzlvivwXXmx


3、结果转化为语音在界面展示。也是调用硅基流动的API,其中token为:

sk-cgleharpzlvivwkazqnfohbdcbXXxtmx

4.务必记住:所有 api 的调用参考 rules 中的 api.mdc

第二步:快捷键“ctrl+i”或者“commnd+i”生成具体的代码,我们可以这样对cursor说。按照要求生成代码。

这个时候会给我们选择,是前端直接请求还是要调用云函数。为了简单起见,我们使用直接前端请求。

tips:这里的模型选择claude-3.7,会比较好一点。

2.界面美化

那么经过第一步操作,竟然生成这么丑的微信小程序。

那么突然发现是我忽略了在生成代码的时候,忘记告诉cursor添加我们生成的原型图。那么亡羊补牢,还是不晚的。

我们将第三章第一节生成的html语句复制到项目根目录下,然后这样对cursor说:

必须通过@file 去引用index.html的代码,这样cursor才能真正的去理解和识别。当然结果不是很理想,很多东西调整的乱七八糟。

于是,我再一次加重了我的措辞:

这样就告诉cursor,如果冲突,就直接选择index.html的风格。

3.功能细节的调试

当然,上面的版本已经实现了语音转文本以及文本转语音的功能。那么就这样就可以交差了吗?远远不够!

目前界面遇到的问题:




1、图标问题:底部导航栏没有图标;按住说话区域也没有图标对话框也没有图标;个人信息也没有图标 ;年龄:左右两侧少了+ -的图标。

2、缺少默认值,譬如:小名默认:小明;年龄默认:4岁;性别:默认男孩;

3、二级菜单的返回值太靠上,界面不美观

4、提示词写的不够好,大模型回答的内容回答废话很多。

问题1解决方案:关于图标,其实cursor已经帮我生成文件放在assets中,但是为什么没有显示呢?

原因就是cursor生成的图标有问题,都是0字节。那么我们要做的就是去iconfont重新去下载对应的图标,来替换即可

对于剩下的图标,我们统一用iconfont的字体图标进行统一的配置。

将下载的iconfot.css文件改成iconfont.wxss文件,放到根目录下。

然后修改app.wxss的全局引用。

那么具体的界面可以让cursor帮我们调整。

下面就是添加完图标的界面,是不是清爽了很多!

问题2解决方案:缺少默认值,譬如:小名默认:小明;年龄默认:4岁;性别:默认男孩;

这个很简单,告诉cursor即可。

问题3解决方案:“二级菜单的返回值太靠上,界面不美观”的修改。

我们需要cursor满足下面的条件:modal-header 距离顶部100rpx,底部22rpx,添加左侧图标:icon-back。点击的时候返回到上一步。这块功能做成通用二级功能,其他模块都按照同样的方式引用。

到这里,可能要有人有疑问了:大瑜,你是怎么知道要距离顶部100rpx。这里要涉及到前端知识。无非就是通过客户端不断的调试。鼠标选中区域,点击对应的元素,不断的修改数字,直到样式保持一致。

当然,我们开发cursor这么久了,能不写代码就不写代码,直接丢给cursor。

问题4解决方案:大模型处理不够好。我看到系统默认的提示词是这样写的:

你是一个专为儿童设计的AI助手,名叫"十问"。你的回答应该友好、有趣、安全且适合儿童理解。使用简单的语言,避免复杂术语,并尽量以鼓励和支持的方式回应。

这个提示词写的太简单了。也没有关联历史记录。所以我们优化了一下。

# 角色设定

你是一个专为儿童设计的AI助手,名叫"智多星"。


# 回答调整

- 根据用户的性别和年龄调整回答方式

- 所有回答必须友好、有趣、安全且适合儿童理解

- 使用简单的语言,避免复杂术语

- 保持科学准确性,不能因简化而导致意思偏差

- 以鼓励和支持的方式回应用户问题


# 回答限制

- 所有回答控制在200字以内


# 重点原则

- 简单易懂但科学准确

- 积极鼓励的态度

- 安全适龄的内容

同时,对于用户的年龄以及性别也要添加到提示词中,同时需要带上最近5条的历史记录。这种描述很清楚的请求,对cursor来讲根本不是事情。

那么经过了这4个功能细节的优化,目前的小程序已经可以顺利运行,效果如下所示:

4.错误的处理

一般我们在开发的过程中,要多看console这里是否有错误。只有看到报错信息,才能真正去思考解决问题。

错误情况1:合法域名的配置

如果我们没有配置域名,那么会报错下面的问题。

具体的设置,进入微信开发者工具页面,点击“管理-开发管理-服务器域名”,点击修改,进行域名的添加。

五、上线部署

在我们完成1.0的时候,那么恭喜你,基本上的功能已经完成了,这个时候你就可以让你的小孩来体验一下了。

但是我们之前做的工作也只能在开发者的手机上进行模拟,并没有上线的资格。

1.小程序认证

小程序认证之后就可以进行一些高级功能的设置了,譬如支付和转发分享等操作。

小程序的认证分为个人和企业认证。其中个人认证只需要30元和身份证即可。企业认证需要企业营业执照和300元的认证费用。

在认证的时候,一般是腾讯外包第三方公司进行认证,可能需要一些认证信息的核对。因此要保证在认证期间的电话畅通。

2.小程序备案

小程序的备案,可以参考下面的操作:

3.添加小程序的分享和转发按钮。

小程序必须经过认证才能分享和转发。不然就是下面的这个页面。

至于解决的办法也很简单,这样告诉cursor即可。

这个时候,转发和分享功能已经可以了。

  1.    提交代码,正式上线

第一步:真机调试,一般来说这个是小程序登陆的管理员微信号,点击确定,打开手机微信就可以测试了。

第二步:上传代码。点击右上角的“上传”按钮。

这里一般就按照要求去填写即可。

第三步:网页端确认

进入网站:


记得要点击提交审核,快的话差不多半天就通过了。

六、2.0版本优化【高阶省钱版本】

经过前5个章节,相信你已经完成了小程序的初级功能。但是你会遇到下面的问题:

1、coze的语音转文字的额度太少了,500额度/每天(会员是1000额度)没有调试几下就用完了。

2、apikey直接暴露在用户侧,直接通过抓包就能获取,安全性无法保证。

那么有没有解决办法?问了就是有!这一个章节,我们重点讲解讯飞语音转文本内容。

整体架构如下:

第一步:了解讯飞的 api 调用文档

相对来说,讯飞的文档还是比较复杂的,啰啰嗦嗦一大堆。下面是官方的说明:

https://www.xfyun.cn/doc/asr/voicedictation/API.html#%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E

我反正是没有耐心去看,那么我的核武器就是:kimi。直接将这个链接丢给kimi,让kimi帮我分析处理。

其实用了这么久了,还是kimi对链接的读取和识别比其他大模型要好很多。

我让kimi帮我生成对应的rules。

具体的rule文件如下所示,添加到cursor的rules规则中。

# 讯飞语音听写(流式版)云函数开发规则


## 项目背景

- 本项目的目标是通过微信小程序云函数调用讯飞语音听写(流式版)API,实现音频数据的实时转写。

- 该功能适用于需要将语音实时转换为文本的场景,例如语音助手、会议记录等。


## 编码规范

- 使用 Node.js 编写云函数代码。

- 遵循 ES6+ 语法规范。

- 使用 `async/await` 处理异步逻辑。

- 使用模块化设计,将鉴权、WebSocket 通信和结果处理分别封装为独立模块。

- 代码中添加详细的注释,说明每个模块和函数的功能。


## 文件结构

-`index.js`:云函数入口文件,负责接收请求、调用核心逻辑并返回结果。

-`utils/auth.js`:生成鉴权参数的工具模块。

-`utils/websocket.js`:封装 WebSocket 通信逻辑的模块。

-`config.js`:存储常量配置,如 API Key、API Secret 和 WebSocket URL。


## 依赖管理

- 使用 `npm` 或 `yarn` 管理依赖。

- 需要的依赖包括:

  -`ws`:用于 WebSocket 通信。

  -`crypto`:用于生成 HMAC 签名。

  -`base64`:用于 Base64 编解码。


## 代码示例


### `config.js`

```javascript

module.exports = {

  apiKey: 'your_api_key', // 替换为你的讯飞API Key

  apiSecret: 'your_api_secret', // 替换为你的讯飞API Secret

  host: 'iat-api.xfyun.cn',

  requestLine: 'GET /v2/iat HTTP/1.1',

};

第三步:开发云函数,调用讯飞API,我们可以这样对cursor说。

这时候在跟目录会生成一个文件:cloudfunctions。

同时需要在project.config.json中加入下面的指令。

 "cloudfunctionRoot": "cloudfunctions/",

接下来配置对应的key。

然后去微信开发者小程序,开启云函数的调试。

第五步:微信小程序录音,调用云函数。

这个时候访问,大概率会报错这个

因为云函数默认的处理时长是3s,超过3s就会报错。

进行超时时间的配置,改为30S。

语音转文字就搞定了,近乎免费的额度。

七、3.0版本优化【流式返回结果】

让我缓缓,这个后期再优化吧!!!!

八、其他小技巧

1.如何美化页面

如果我们觉得界面太丑,切记这样问 cursor:“ 太丑了,帮我优化一下!”。那么我可以告诉你,大概率你是会失望的。

这里有几个小技巧供参考:

  • • 指定具体的问题:直接告诉cursor,什么功能,什么地方有什么问题,需要什么改进。
  • • 指定具体的文件夹:直接告诉cursor,那个文件夹有问题,如果熟悉代码的话,也可以选定指定的代码,给cursor去分析,便于cursor缩小范围。
  • • 换一种模型,cluade负责全局,可以用gemini来负责具体的实践。

2.cursor生成的时候总是失败

在cursor生成代码的时候,一定要注意“generating”的字段。点开,里面有黄色的点、绿色的原点、红色的叉号、以及绿色的对号这四种状态。

  • • 黄色代表等待、繁忙
  • • 绿色代表正在生成
  • • 红色代表生成失败
  • • 绿色对号代表生成成功。

一般来说,只有所有是绿色对号的状态,才代表真正生成完成。

遇到“网络故障”、“大模型繁忙”等会导致出现各种各种的问题。

处理方式也是很简单:点击错误的文件,会出现一个“刷新”的图标,重新生成一次即可。如果实在不行,可以用手机热点试试,通过换个网络的方式或许能够解决问题。

3.如果cursor修改很多次但是不生效

很多时候,一个问题,cursor改了很多次,但是没有生效,到最后,cursor甚至告诉你没有问题。

那么这个时候,很大概率就是缓存的问题,清除缓存可以解决你的很多问题。

4.如果cursor给我们生成不是想要的代码

点一点“restore checkpoint”,就会会退到这次代码生成前的内容。

5.ask模式很好用

在我们对输出没有确定性的时候,可以先用ask模式(cmd+l)来试试。

九、写在后面的话

也许你看到这里,真的是一个真爱粉。当然在里面也会遇到很多问题,也想和大瑜一起交流。

为了避免广告党,我设定了一个额度,随手转我一杯咖啡的钱,我拉你进群,提供为期2周的指导!

我是大瑜!一个工作十年的程序员!AI编程的实践者!

 


(文:大瑜聊AI)

发表评论

×

下载每时AI手机APP

 

和大家一起交流AI最新资讯!

立即前往