- 智能任务分析:将自然语言指令自动分解为可执行步骤
- 视觉界面识别:精准识别微信界面元素和状态
- 自适应执行:根据界面变化动态调整操作策略
- 动态任务队列:基于复杂指令(如"给张三发消息")自动构建任务清单(TODO List),将大目标拆解为"查找联系人" -> "进入对话" -> "输入内容" -> "发送消息"等原子操作。
- 闭环状态反馈:每一步操作后实时校验界面状态,确认执行成功后再推进下一步,确保任务链路的完整性。
- 自适应任务刷新:根据执行过程中的意外弹窗或网络延迟,动态调整后续任务队列,具备极强的容错能力。
任务队列主要由以下三类基础任务动态组合而成:
-
👁️ 感知与决策 (Perception & Decision)
- 截图分析:实时截取屏幕画面,提取关键信息。
- AI 决策:调用大模型分析当前状态,判断任务进度,并生成下一步的 Action。
-
🖱️ 鼠标交互 (Mouse Interaction)
- 定位点击:移动鼠标到指定坐标执行左键/右键点击。
- 拖拽与滚动:模拟人类的长按拖拽或滑轮滚动操作。
-
⌨️ 键盘输入 (Keyboard Input)
- 文本录入:在激活的输入框中键入消息内容。
- 快捷指令:执行回车发送、复制粘贴等组合键操作。
- 单次命令执行:
npm run start "给张三发送消息你好"或者启动后支持 MCP API 调用 - 鼠标操作:精确点击、输入、拖拽等
- 批量任务:支持复杂的多步骤操作流程
- 模块化模板:提示词与代码分离,易于维护优化
- 变量替换:支持动态参数和条件渲染
- 操作确认:重要操作前可设置确认步骤
- 错误恢复:完善的异常处理和重试机制
- 日志记录:完整的操作日志和错误截图
- Node.js 18.0.0 或更高版本
- Windows 操作系统
- 微信客户端(需放置在屏幕左半部分)
主要的技术选择包括:
- Node.js
- TypeScript
- RobotJS
npm install因为多模态大模型在识别截图中按钮的精确位置(X 和 Y 坐标)不准确, 所以采用固定窗口大小(850*720), 这样各个按钮的位置就是确定的:
- 主菜单
- 微信消息按钮, (36,90)
- 通讯录按钮, (36,140)
- 收藏按钮, (36,190)
- 朋友圈按钮, (36, 240)
- 小程序按钮, (36, 290)
- 手机按钮,(36, 625)
- 更多按钮, (36, 675)
- 消息发送界面
- 发送按钮, (770, 680)
- 复制配置文件模板:
cp config/config.zhipu.example.json config/config.json- 编辑
config/config.json,设置您的 API 密钥:
{
"api": {
"apiKey": "your-zhipu-api-key",
"model": "glm-4v"
}
}- 启动电脑版本的微信, 并登录
- 将微信窗口拖动到屏幕的左半部分
- 打开命令行, 进入项目目录, 运行
npm run start "请给朋友圈的第1条动态点赞"
# 分析微信界面状态
npm run start
# 使用自定义提示词分析
npm run start "请给朋友圈的第1条动态点赞"本项目完整支持 Model Context Protocol (MCP) 标准,可作为 Tool Server 无缝接入 Claude Desktop、Cursor 等现代 AI 工具链。
- 标准支持:
send_message,get_unread_summary,view_moments等业务化工具。 - 配置指南: 详细 API 定义请参考 MCP API 文档。
配置示例 (Claude Desktop):
{
"mcpServers": {
"wechat-agent": {
"command": "node",
"args": ["path/to/wechat-agent/dist/index.ts", "--mcp"] // 注意:开发环境使用 ts-node 或编译后的 js
}
}
}为了确保自动化操作的稳定与安全,本系统采用了工业级的 Agent 设计架构:
系统摒弃了脆弱的"盲操作"脚本模式,引入了视觉反馈闭环:
- 微观 UI 环:每一次鼠标点击或键盘输入后,系统会自动截屏比对操作前后的界面差异(如按钮高亮变化、弹窗出现),未检测到预期变化会自动重试。
- 宏观 任务环:在完成一系列动作后(如"发送消息"),系统会 OCR 识别聊天区,确认出现"发送成功"标识或新消息气泡,确保业务目标达成。
- 敏感操作拦截:系统内置红线列表。涉及"转账"、"删除好友"、"清空记录"等高风险操作时,会自动挂起并弹窗请求人工二次确认。
- 紧急制动机制:在运行过程中,一旦检测到用户大幅度移动鼠标或按下
Ctrl+C,Agent 会立即释放控制权并终止当前任务,确保人类拥有最高优先级。
系统内部维护着一个微信界面的状态图(Graph)。
- 上下文感知:Agent 清楚自己当前是在"通讯录列表"还是"朋友圈详情页"。
- 非法路径阻断:如果当前处于"朋友圈",而任务是"发送消息",系统会先规划路径导航回"聊天窗口",而不是在当前页面胡乱点击。
wechat-agent/
├── src/ # 源代码
│ ├── core/ # 核心功能模块
│ ├── services/ # 服务层
│ ├── types/ # TypeScript 类型定义
│ ├── utils/ # 工具函数
│ └── index.ts # 主入口文件
├── prompts/ # 提示词模板
├── config/ # 配置文件
│ ├── config.example.json # 配置模板
│ └── config.zhipu.example.json # 智谱 AI 配置模板
├── docs/ # 文档
├── logs/ # 日志文件
└── dist/ # 编译输出
# 开发模式运行(支持热重载)
npm run dev
# 构建项目
npm run build
# 运行测试
npm run test
# 代码检查
npm run lint- 在
prompts/目录下创建模板文件 - 使用 Markdown 格式编写
- 定义变量和示例
- 在代码中引用
示例:
# 自定义分析模板
分析目标: {{target}}
详细程度: {{detail}}
欢迎提交 Issue 和 Pull Request!
- Fork 项目
- 创建功能分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'Add amazing feature' - 推送分支:
git push origin feature/amazing-feature - 提交 Pull Request
- 使用 TypeScript 进行类型安全开发
- 遵循 ESLint 规则
- 添加必要的注释和文档
- 编写单元测试
-
截图失败
- 确保微信窗口在屏幕左半部分
- 检查屏幕权限设置
-
AI 分析失败
- 验证 API 密钥是否正确
- 检查网络连接
- 确认 API 配额充足
-
任务执行失败
- 查看错误截图
- 检查界面是否有变化
- 调整任务间延迟时间
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- 作者:fugui
- GitHub:@fugui
如果这个项目对您有帮助,请给个 ⭐ Star 支持一下!