这次我们来看一个很有意思的实践:我把AI Agent和微信小程序开发串成了一个完整的Skill,从你输入一句话需求,到最终在微信开发者工具里跑起来,中间所有环节——需求分析、原型设计、页面结构、逻辑代码、云开发配置、甚至首次运行的调试——全部由AI自动完成。
这不是一个概念演示,而是一个可以实际落地的工作流。我把它封装成了一个可复用的Skill(基于LangChain + Codex),你只需要提供需求描述,剩下的交给AI。如果你也在研究AI辅助编程、自动生成小程序、或者想减少重复造轮子的时间,这篇文章可以直接收藏。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | AI Agent 自动化工作流(Skill) |
| 目标平台 | 微信小程序(原生 + 云开发) |
| 启动方式 | 命令行 + 配置文件运行 |
| 支持需求输入 | 自然语言描述(1-3句话) |
| 输出产物 | 需求文档、页面设计图(描述)、wxml/wxss/js/json代码、云函数代码、app.json配置 |
| 依赖环境 | Python 3.9+、Node.js 16+、微信开发者工具、OpenAI API Key(或兼容接口) |
| 显存占用 | 无需GPU,纯API调用,本地仅需内存(约500MB-1GB) |
| 是否支持批量任务 | 支持,可批量处理多个小程序需求,自动生成独立的项目目录 |
| 是否支持接口API | 支持,可通过HTTP API触发任务,返回项目路径和日志 |
| 适合场景 | 快速原型验证、MVP开发、内部工具小程序、教学演示、代码辅助生成 |
2. 适用场景与使用边界
2.1 适合谁
- 产品经理 / 需求分析师:快速将想法转化为可运行的小程序原型,减少沟通成本。
- 独立开发者:一个人完成从需求到上线的全流程,AI辅助写代码,你只需要做审核和调整。
- 教学场景:给学员演示从零到一的小程序开发过程,AI生成代码后讲解逻辑。
- 企业内部工具:快速生成管理后台、审批流、数据展示等轻量级小程序。
2.2 能解决什么问题
- 需求文档自动生成:不再需要手动写PRD,AI根据需求描述自动产出结构化的需求文档。
- 代码自动生成:页面结构、样式、逻辑、云函数一键生成,减少重复劳动。
- 配置自动设置:app.json、project.config.json、sitemap.json等自动处理。
- 首次运行保障:自动调用微信开发者工具CLI,打开项目并进行预览。
2.3 不适合什么场景
- 复杂业务逻辑(如电商支付、多级权限、实时通信):AI生成的代码需要大量人工修改。
- 需要高度定制UI的C端产品:AI生成的样式较为基础,需要手动调整。
- 安全敏感场景(如金融、医疗):AI生成的代码需严格审计,不建议直接用于生产。
- 无网络环境:依赖OpenAI API,需要稳定的网络连接。
2.4 使用边界与合规提醒
- 生成的代码仅作为参考,请务必在提交前进行代码审查和功能测试。
- 涉及用户隐私、数据采集的小程序,必须遵守微信小程序平台规范及相关法律法规。
- 不要将AI生成的代码直接用于商业产品,除非你已确保所有依赖和组件都有合法授权。
- 使用前请确保你拥有微信开发者工具的使用权限,并已注册小程序AppID。
3. 环境准备与前置条件
3.1 操作系统
- Windows 10 / 11(推荐,微信开发者工具对Windows支持最好)
- macOS 12+(微信开发者工具也支持,但CLI调用略有不同)
- Linux(需自行配置,微信开发者工具没有原生Linux版,但可用Wine或Docker方案,不推荐新手)
3.2 软件依赖
| 软件 | 版本要求 | 说明 |
|---|---|---|
| Python | 3.9 - 3.11 | 推荐3.10,用于运行Skill主程序 |
| Node.js | 16+ | 用于微信开发者工具CLI调用 |
| 微信开发者工具 | 1.06.2307260+ | 必须安装并配置CLI路径 |
| Git | 2.30+ | 用于版本管理,非必须但推荐 |
| OpenAI API Key | 有效 | 可以使用GPT-4或GPT-3.5-turbo,推荐GPT-4以获得更高质量代码 |
3.3 Python环境
建议使用虚拟环境,避免依赖冲突。
# 创建虚拟环境 python -m venv skill_env # 激活(Windows) skill_env\Scripts\activate # 激活(macOS/Linux) source skill_env/bin/activate3.4 微信开发者工具CLI配置
微信开发者工具安装后,需要在设置中开启“服务端口”(默认已开启)。然后确认CLI路径:
- Windows:
C:\Program Files (x86)\Tencent\微信web开发者工具\cli.bat - macOS:
/Applications/wechatwebdevtools.app/Contents/MacOS/cli
将路径添加到系统环境变量中,方便调用。
验证方法:
# Windows cli.bat --version # macOS cli --version如果输出版本号,说明配置成功。
3.5 磁盘空间
- 每个小程序项目约占用10-50MB(含云函数)。
- 缓存模型文件等不需要,因为AI模型是远程调用。
- 建议预留至少500MB空闲空间用于日志和临时文件。
4. 安装部署与启动方式
4.1 获取Skill源码
假设我们将Skill命名为wx-skills,它包含以下核心文件:
wx-skills/ ├── main.py # 主入口,接收需求并启动工作流 ├── config.py # 配置文件,包含API Key、项目目录等 ├── agents/ │ ├── requirement_agent.py # 需求分析Agent │ ├── design_agent.py # 页面设计Agent │ ├── code_agent.py # 代码生成Agent │ └── deploy_agent.py # 部署与运行Agent ├── templates/ │ └── weapp_template/ # 小程序基础模板(空项目骨架) ├── outputs/ # 生成的项目存放目录 ├── logs/ # 运行日志 ├── requirements.txt # Python依赖 └── README.md克隆或下载源码后,安装Python依赖:
pip install -r requirements.txt依赖核心包括:langchain,openai,pydantic,requests,colorama等。
4.2 配置API Key
在config.py中填写你的OpenAI API Key:
# config.py OPENAI_API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" OPENAI_BASE_URL = "https://api.openai.com/v1" # 可选,默认即可 MODEL_NAME = "gpt-4-turbo" # 推荐gpt-4-turbo或gpt-4o WEIXIN_DEVTOOL_PATH = "C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat" # Windows示例 OUTPUT_DIR = "./outputs"4.3 启动方式
方式一:单次命令行运行
python main.py --requirement "一个简单的待办事项小程序,用户可以添加、删除任务,任务列表显示在首页"运行后,Skill会依次执行:
- 需求分析:将一句话需求拆解为功能列表、页面结构、数据模型。
- 设计生成:输出页面布局描述(非图片,而是结构描述)。
- 代码生成:生成wxml、wxss、js、json文件,以及云函数代码(如果需要)。
- 部署运行:自动创建项目目录,写入文件,调用微信开发者工具CLI打开项目。
最终你会看到类似输出:
[INFO] 需求分析完成,共生成3个功能模块 [INFO] 页面设计完成,包含首页、添加页、详情页 [INFO] 代码生成完成,共生成8个文件 [INFO] 项目已创建至 ./outputs/todo_app_20250315 [INFO] 正在打开微信开发者工具... [INFO] 打开成功,请检查项目预览。方式二:HTTP API服务模式
如果你需要集成到自己的系统或批量处理,可以启动API服务:
python main.py --server --port 8080启动后,通过POST请求触发任务:
curl -X POST http://127.0.0.1:8080/generate \ -H "Content-Type: application/json" \ -d '{ "requirement": "一个简单的待办事项小程序", "project_name": "todo_app" }'返回结果包含项目路径、状态、日志地址。
方式三:批量任务模式
在config.py中设置BATCH_MODE = True,并提供一个包含多个需求的JSON文件:
[ {"requirement": "一个计算器小程序", "project_name": "calc"}, {"requirement": "一个天气预报小程序", "project_name": "weather"} ]然后运行:
python main.py --batch requirements.jsonSkill会按顺序生成每个项目,并自动命名目录。
5. 功能测试与效果验证
5.1 测试需求示例
我们用一个简单的需求来测试整个流程:
需求:一个可以记录日常开支的记账小程序,用户可以添加收支记录,查看总收入和总支出,以及按类别筛选。
5.2 运行过程
执行命令:
python main.py --requirement "一个可以记录日常开支的记账小程序,用户可以添加收支记录,查看总收入和总支出,以及按类别筛选。"观察日志输出。以下是关键阶段:
阶段1:需求分析
AI会输出结构化的需求文档要点:
功能模块: - 添加记录(类型、金额、类别、备注、日期) - 首页展示总收支与近期记录 - 筛选功能(按类别筛选) - 统计展示(饼图或条形图,可选) 页面结构: - 首页:总收支卡片 + 记录列表 + 筛选按钮 - 添加页:表单 - 统计页:图表(可选) 数据模型: - records: {id, type, amount, category, note, date, createTime} - categories: [{name, icon}]阶段2:生成代码
AI开始生成每个页面的文件。以首页为例,生成的wxml可能如下:
<!-- pages/index/index.wxml --> <view class="container"> <view class="header"> <view class="total-income"> <text>总收入</text> <text class="amount">¥{{totalIncome}}</text> </view> <view class="total-expense"> <text>总支出</text> <text class="amount">¥{{totalExpense}}</text> </view> </view> <view class="filter"> <picker mode="selector" range="{{categories}}" bindchange="onCategoryChange"> <text>{{currentCategory || '全部'}}</text> </picker> </view> <scroll-view class="record-list" scroll-y> <view wx:for="{{records}}" wx:key="id" class="record-item"> <text>{{item.category}}</text> <text>{{item.amount}}</text> <text>{{item.note}}</text> </view> </scroll-view> <view class="add-btn" bindtap="onAdd">+ 添加记录</view> </view>对应的wxss:
/* pages/index/index.wxss */ .container { padding: 20rpx; background: #f5f5f5; min-height: 100vh; } .header { display: flex; justify-content: space-around; background: #fff; border-radius: 16rpx; padding: 30rpx; margin-bottom: 20rpx; } .total-income .amount { color: #4CAF50; font-size: 36rpx; } .total-expense .amount { color: #f44336; font-size: 36rpx; } ...阶段3:云函数(如果需要)
如果需求包含“数据持久化”,AI会自动生成云函数代码。例如:
// cloudfunctions/addRecord/index.js const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { const { type, amount, category, note, date } = event try { const result = await db.collection('records').add({ data: { type, amount: parseFloat(amount), category, note, date, createTime: db.serverDate() } }) return { code: 0, data: result._id, msg: 'success' } } catch (e) { return { code: -1, msg: e.message } } }阶段4:部署运行
AI自动创建项目目录,写入所有文件,然后调用微信开发者工具CLI打开项目。
cli.bat open --project C:\Users\xxx\wx-skills\outputs\account_book_20250315如果CLI路径正确,微信开发者工具会自动打开并加载项目。
5.3 效果验证
- 项目结构:检查
outputs/account_book_20250315目录,应有完整的pages,cloudfunctions,app.js,app.json,project.config.json等。 - 开发者工具预览:在微信开发者工具中,点击“预览”,手机扫码即可看到真实效果。
- 功能可用性:测试添加记录、查看总收支、筛选功能是否正常。注意:云函数需要先上传并部署才能使用,AI生成的代码默认包含云函数,但需要手动部署(或通过CLI自动部署,这个功能可以后续扩展)。
- 代码质量:目测代码结构清晰,变量命名规范,注释到位。但需要人工检查逻辑漏洞(如数据校验、异常处理)。
5.4 常见失败原因
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 生成的项目无法打开开发者工具 | CLI路径错误或未安装工具 | 执行cli.bat --version测试 | 确认路径并添加到环境变量 |
| 云函数上传失败 | 未登录微信开发者工具 | 登录开发者工具 | 手动登录后再尝试 |
| 页面样式错乱 | 生成的wxss与wxml不匹配 | 检查wxss中的类名 | 手动调整或重新生成 |
| API调用超时 | OpenAI API响应慢或网络问题 | 检查日志中的API响应时间 | 更换模型或增加超时时间 |
| 生成代码中有语法错误 | AI生成不严谨 | 检查控制台错误信息 | 手动修正或重新生成该文件 |
6. 接口 API 与批量任务
6.1 API接口说明
启动HTTP服务后,暴露以下端点:
| 端点 | 方法 | 描述 | 请求参数 |
|---|---|---|---|
/generate | POST | 触发单个小程序生成 | requirement(string, 必填),project_name(可选) |
/batch | POST | 批量生成多个小程序 | requirements(array, 必填) |
/status | GET | 查询任务状态 | task_id(string, 必填) |
/logs | GET | 获取任务日志 | task_id(string, 必填) |
6.2 调用示例
单个生成
curl -X POST http://127.0.0.1:8080/generate \ -H "Content-Type: application/json" \ -d '{ "requirement": "一个简单的待办事项小程序,支持添加、删除、标记完成", "project_name": "todo_app" }'返回示例:
{ "task_id": "task_20250315_001", "status": "running", "project_path": "./outputs/todo_app", "message": "任务已提交,请稍后查询状态" }查询状态
curl http://127.0.0.1:8080/status?task_id=task_20250315_001返回示例:
{ "task_id": "task_20250315_001", "status": "completed", "project_path": "D:/outputs/todo_app", "created_at": "2025-03-15 10:00:00", "completed_at": "2025-03-15 10:02:30", "files": ["app.js", "app.json", "pages/index/index.wxml", ...] }6.3 批量任务
在批量模式下,Skill会按顺序处理每个需求,并生成独立的项目目录。API批量调用示例:
curl -X POST http://127.0.0.1:8080/batch \ -H "Content-Type: application/json" \ -d '{ "requirements": [ {"requirement": "一个计算器小程序", "project_name": "calc"}, {"requirement": "一个天气预报小程序", "project_name": "weather"}, {"requirement": "一个记账本小程序", "project_name": "account"} ] }'返回每个任务的ID,之后可以单独查询状态。
6.4 批量任务的注意事项
- 每个任务顺序执行,避免API限流。如果使用GPT-4,建议间隔至少5秒。
- 输出目录使用
project_name或自动生成唯一名称。 - 每个任务有独立的日志文件,方便排查问题。
- 如果某个任务失败,不会影响后续任务,但会记录错误日志。
7. 资源占用与性能观察
7.1 本地资源占用
| 资源 | 占用情况 | 说明 |
|---|---|---|
| CPU | 约5%-10% | 主要运行Python主程序,不涉及模型推理 |
| 内存 | 约500MB-1GB | 取决于LangChain上下文管理和日志缓存 |
| 磁盘 | 每个项目10-50MB | 代码文件、临时文件、日志 |
| 网络 | 每次API调用约100KB | 请求和响应体积,主要取决于模型返回的代码量 |
7.2 API调用次数与耗时
- 每次生成通常需要4-6次API调用(需求分析、页面设计、代码生成、配置文件生成、云函数生成等)。
- 每次调用耗时约5-15秒(取决于模型和返回代码长度),总计约30-90秒完成一个中等复杂度的项目。
- 如果使用GPT-3.5-turbo,速度更快(总计约15-30秒),但代码质量会下降。
7.3 如何降低资源占用
- 使用本地模型替代API?目前不推荐,因为本地模型在代码生成能力上远不如GPT-4,且需要显存(至少8GB),违背了“无需GPU”的设计初衷。
- 减少API调用次数:可以将多个步骤合并到一次调用中,但生成的代码质量会下降。Skill默认采用分步调用以保证质量。
- 控制代码长度:在提示词中限制每个文件的最大行数,避免生成过长代码导致API超时。
7.4 如何观察性能
- 在日志中查看每个阶段的耗时,例如
[TIMING] request_agent took 12.3s。 - 使用
time命令包裹整个运行过程:time python main.py --requirement "xxx"。 - 监控API响应时间:可以在
config.py中设置LOG_LEVEL=DEBUG,查看每个API请求的响应时间。
8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 安装依赖失败 | Python版本不兼容或网络问题 | 查看错误日志,检查pip源 | 使用国内镜像源:pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple |
| 运行时提示"OpenAI API Key not found" | 未配置config.py或环境变量 | 检查config.py中的OPENAI_API_KEY | 在config.py中填入有效Key,或设置环境变量OPENAI_API_KEY |
| 生成的项目目录为空 | 权限问题或磁盘空间不足 | 检查outputs目录权限,查看磁盘空间 | 修改config.py中的OUTPUT_DIR为有写入权限的路径 |
| 微信开发者工具无法打开项目 | CLI路径错误或工具未安装 | 执行cli.bat open --help看是否有帮助信息 | 确认CLI路径正确,并确保工具已安装且登录 |
| 云函数编译失败 | 云函数目录缺少依赖 | 查看云函数目录下的package.json | 手动在云函数目录执行npm install,然后重新上传 |
| 页面白屏或报错 | 生成的代码有语法错误 | 在开发者工具中查看控制台错误 | 定位错误行,手动修正代码,或重新生成该页面 |
| 批量任务中途停止 | API限流或网络中断 | 查看日志中的错误信息 | 增加请求间隔,设置time.sleep(5),或使用重试机制 |
| 生成的代码不符合预期(如页面布局混乱) | 需求描述不够详细 | 审查生成的需求文档,对比原始需求 | 重新描述需求,增加更多细节约束(如“使用flex布局,顶部导航栏,底部tab栏”) |
8.1 通用排查步骤
- 检查日志文件:
logs/目录下按时间命名的日志,记录详细的调用过程和错误堆栈。 - 确认API Key的有效性:单独用Python测试API调用。
- 确认微信开发者工具CLI可用:在命令行中直接调用
cli.bat open --help。 - 检查项目目录权限:输出目录是否有写入权限。
- 如果问题持续,尝试重新生成或使用更简单的需求测试。
9. 最佳实践与使用建议
9.1 第一次使用前
- 先用最简单的需求(如“一个显示Hello World的小程序”)测试整个流程,确保所有环节通畅。
- 保留一套最小可运行配置:config.py中只填写必要信息,其他保持默认。
- 记录每次生成的日志,方便后续对比和排查。
9.2 需求描述技巧
- 越具体越好:指出页面数量、功能要点、交互方式(如“点击按钮弹出表单”)。
- 给出约束:例如“使用云开发作为后端”、“底部tab栏包含首页和我的”、“所有列表使用scroll-view”。
- 避免歧义:不要用“好看”、“简单”等主观词汇,而是用“使用Material Design风格”、“配色为蓝色系”。
9.3 管理生成的项目
- 建议在
outputs目录下按日期建立子文件夹,例如2025-03-15/。 - 每个项目生成后,用Git进行版本管理,方便后续修改。
- 定期清理不需要的项目,避免占用磁盘空间。
9.4 批量任务注意事项
- 批量任务顺序执行,最好在夜间或低峰期运行。
- 每个任务之间留出足够时间间隔,避免API限流。
- 批量任务完成后,检查每个项目的输出目录,确保没有遗漏。
9.5 合规与安全
- 版权:AI生成的代码版权归属有争议,建议仅用于学习和原型验证,商用前需进行版权审查。
- 隐私:不要在需求描述中包含敏感信息,因为需求文本会发送到OpenAI API(数据可能会被用于训练,请查看OpenAI的隐私政策)。
- 微信小程序审核:AI生成的代码可能不符合微信小程序审核规范(如缺少必要的隐私政策、用户协议等),正式发布前必须完善。
- 数据安全:如果使用云开发,注意云函数的安全配置,避免未授权访问。
9.6 扩展建议
- 可以集成到CI/CD流水线:利用API接口,在代码提交时自动生成小程序原型。
- 结合TTS接口:生成语音播报功能(如记账本中的语音输入)。
- 支持多轮迭代:允许用户对生成的代码进行修改后,再次输入需求让AI调整。
10. 总结与下一步
这个Skill的核心价值在于:把“从需求到跑起来”这个最耗时的阶段,从几小时压缩到几分钟。你不需要先写PRD、画原型、设计数据库、写代码、配置项目,只需要一句话,AI就能帮你完成大部分工作。它的门槛极低——不需要GPU,也不用装深度学习框架,只要一个Python环境和一个API Key。
最先应该验证的功能:单次命令行生成一个简单页面。比如“一个显示Hello World的小程序”,如果这一步能跑通,后面的复杂需求基本没问题。
最容易踩的坑有两个:微信开发者工具CLI路径配置和API Key有效性。建议先把这两个基础环境确认好,再开始跑复杂需求。
后续可以继续扩展的方向包括:
- 支持更多小程序框架:如Taro、uni-app、mpvue。
- 增加UI定制能力:通过描述让AI生成更美观的样式,或者接入设计稿解析。
- 自动部署云函数:在生成云函数后,自动调用CLI进行上传和部署。
- 多轮对话式开发:允许用户和AI交互,逐步修改生成的项目,而不是一次性生成。
这个Skill目前还是原型阶段,但已经能跑通基本流程。如果你对AI辅助小程序开发感兴趣,或者想减少重复劳动,不妨从本文的步骤开始试一下。建议收藏备用,后续我会继续更新,比如增加对uni-app的支持、优化代码质量等。