WeChat Automation Skill 是 WeReply 项目中用于微信监听与自动化的专家指导技能,主要面向需要开发微信 Platform Agent 的开发者。
一、用途 该技能用于指导开发者构建平台专属 Agent,监控微信会话并控制微信输入框。当涉及微信监听、消息提取、Agent 开发、wxauto、Accessibility API、UI 自动化、输入框控制、Platform Agent、微信自动化、消息监控、WeChat monitoring 等主题时适用。
二、整体架构 WeReply 使用平台专属 Agent 监控微信会话并控制输入框:
- Windows Agent:Python 3.12 + wxauto v4
- macOS Agent:Swift + Accessibility API
- 通信方式:通过 stdin/stdout 的 JSON 协议与 Rust Orchestrator 通信
架构模式为:微信窗口经 UI Automation 进入 Platform Agent,Agent 负责定时轮询监听消息、提取消息内容、通过 stdout 以 JSON 发送到 Orchestrator,并通过 stdin 接收 JSON 命令,进而控制输入框写入建议。
三、Windows Agent(wxauto v4) 安装依赖命令为:pip install wxauto==4.0.0,并需确保微信已登录且窗口可见。 技能提供了消息监听模式代码,包含 WeChatMonitor 类,支持设置监听间隔(默认 500ms),通过 GetAllMessage 获取最新消息,生成消息唯一 ID 去重,并以 JSON 格式发送到 Orchestrator,消息格式包含 type、content、sender、timestamp 字段。 输入框控制模式提供 WeChatInputWriter 类,使用 SendMsg 写入内容、ClearMsg 清空输入框,并在失败时发送错误信息。 命令处理模式提供 AgentCommandHandler 类,通过独立线程从 stdin 读取命令,支持 WriteInput、ClearInput、HealthCheck 等命令类型,并返回 CommandResponse 或 HealthStatus。
四、macOS Agent(Accessibility API) 技能给出 Swift 实现模式,包含 WeChatMonitor 类,需请求 Accessibility 权限(AXIsProcessTrusted),通过 Timer 定时轮询,使用 AXUIElementCopyAttributeValue 等 Accessibility API 提取消息,并通过 bundleIdentifier com.tencent.xinWeChat 定位微信应用。输入写入使用 AXUIElementSetAttributeValue 设置输入框值。代码中部分实现为占位符,需根据微信 UI 层次结构进一步调整。
五、消息去重策略 提供基于时间的去重器 MessageDeduplicator,可设置去重时间窗口(默认 5 秒),通过记录已见消息 ID 并清理过期记录来避免重复处理。
六、性能优化
- 轮询间隔调优:AdaptiveMonitor 支持自适应间隔,有活跃消息时使用较短间隔(200ms),长时间无消息时逐渐增加到最大间隔(1000ms)。
- 内存优化:MemoryEfficientMonitor 仅保留最近 100 条消息,超出后清理旧消息并触发垃圾回收。
七、错误处理与恢复
- 优雅降级:RobustAgent 支持带重试的监听,最大重试 3 次,重试间隔 2 秒,失败过多则退出。
- 健康检查:HealthMonitor 每 10 秒发送一次心跳到 Orchestrator。
八、安全考虑
- 输入校验:validate_command 仅接受预定义命令类型(WriteInput、ClearInput、HealthCheck、Stop),并限制 WriteInput 内容长度不超过 10000 字符。
- 隐私保护:sanitize_message_for_logging 在日志中截断超过 50 字符的消息内容。
九、测试指南 提供单元测试示例,使用 unittest 与 mock,覆盖消息去重、监听器初始化等场景。
十、适用场景与限制 适用于开发微信消息监控、自动回复建议、Platform Agent 等场景。限制方面:Windows 端依赖 wxauto v4 与可见的微信窗口;macOS 端依赖 Accessibility 权限,且部分 UI 提取实现需根据微信实际 UI 结构调整;资料中未提供收费、价格、平台支持范围等更多信息。