翻了下项目记录第一次用个人微信API还是2022年的事。那时候想法很简单就是想自动发个消息省得客服复制粘贴。没想到这三年下来我们的微信应用从一个小工具愣是演变成了整个运营体系的平台底座。今天就聊聊这3次升级是怎么过来的。第1次升级·工具化2022年单点突破解决重复劳动2022年那会客服团队每天要手动发几百条订单通知人手不够用老板让我想办法。当时搜了一圈找到了Eyun看Eyun开发文档里的sendText接口示例半小时就跑通了。那时候的架构很简单订单系统定时轮询数据库调Eyun的sendText接口发消息Webhook接收用户回复打印日志完事标志特征单个接口独立使用用完就拉倒。那时候我们甚至都没封装SDK直接HTTP请求拼JSON调通就行。Eyun API能力主要用了sendText、sendImage这两个发消息接口加Webhook收回复。RESTful API格式很标准参数清晰上手确实快。应用复杂度一颗星。代码量不到500行一个人半天搞定。业务价值客服发消息效率提升了80%虽然只是个工具但确实解决了痛点。老板那天给我买了杯奶茶说小伙子可以啊。第2次升级·中台化2023年能力组合形成业务中台2023年业务扩张了光发消息不够用了。客户要拉群、要做群欢迎语、要自动打标签、要做数据统计。如果每个需求都单独写代码那代码库就成屎山了。于是我们搞了个消息中台把Eyun的100多个接口按模块封装成SDK引入消息队列做削峰填谷每个微信实例wId独立配置Token鉴权统一管理加了日志、监控、告警三件套标志特征多个接口组合使用不再是零散调用而是形成了可复用的能力层。其他业务线要接微信功能调我们中台的SDK就行不用重复造轮子。Eyun API能力这时候基本把Eyun平台的全套接口都用上了——消息收发、联系人管理、群聊操作、朋友圈、标签管理。每个接口返回JSON格式解析起来很顺手。应用复杂度三颗星。项目代码量破2万行3个人的小团队维护。业务价值这一步价值最大。以前接个新需求要一周现在半天搞定。去年双11期间我们中台一天处理了20多万条消息稳稳的没崩。第3次升级·平台化2024-2025年接口编排AI数据闭环2024年AI火了老板又来画饼能不能让AI自动回消息能不能根据用户画像自动推送能不能做AB测试优化转化率这次我们的思路是把Eyun的能力当底座往上做接口编排和AI层接口编排引擎把多个Eyun API拼成一个业务流程不用写代码可视化配置AI接入层大模型接进来先让AI处理消息处理不了再转人工数据闭环用户行为、消息触达、转化数据全打通自动优化发送策略应用生态开放给第三方业务线他们自己拼能力不用找我们开发标志特征不再是API的简单封装而是有了编排引擎、数据反馈、生态扩展能力。Eyun的接口是砖我们的平台是盖楼的施工队。Eyun API能力Eyun就是我们的底层能力底座。wId实例管理帮我们撑住了30微信号的规模Token鉴权机制稳定Webhook回调没掉过链子。没有这个稳的底座上面的AI和编排全是空谈。应用复杂度五颗星。代码量10万团队7个人。业务价值这个不好量化但直观感受是以前运营要找开发排期现在自己在后台拖拖拽拽就配置好了。AI自动回复覆盖率到了65%人工客服少招了4个人这成本就省下来了。3次升级路径图ASCII2022 工具化 2023 中台化 2024-2025 平台化 ┌─────────┐ ┌──────────────┐ ┌──────────────────────┐ │ sendText │ │ 能力封装SDK │ │ 接口编排引擎 │ │ sendImage│ ───▶ │ 消息队列MQ │ ───▶ │ AI接入层 │ │ Webhook │ │ 监控告警 │ │ 数据闭环分析 │ └─────────┘ │ wId多实例 │ │ 第三方应用生态 │ 单点接口 └──────────────┘ └──────────────────────┘ 代码量500 代码量~2万 代码量10万 复杂度★ 复杂度★★★ 复杂度★★★★★代码示例从中台化到平台化的接口编排器import json from typing import Callable, Dict, Any class EyunOrchestrator: def __init__(self, eyun_sdk): self._sdk eyun_sdk self._steps {} def register_step(self, name: str, func: Callable): self._steps[name] func def execute_flow(self, wid: str, flow_config: Dict[str, Any], context: Dict[str, Any]): context[wid] wid for step in flow_config[steps]: step_name step[action] params {k: self._resolve_value(v, context) for k, v in step.get(params, {}).items()} if step_name in self._steps: result self._steps[step_name](**params) else: result getattr(self._sdk, step_name)(**params) if step.get(store_as): context[step[store_as]] result if step.get(condition) and not self._check_condition(step[condition], context): break return context def _resolve_value(self, val, ctx): if isinstance(val, str) and val.startswith(${) and val.endswith(}): return ctx.get(val[2:-1]) return val def _check_condition(self, cond, ctx): return eval(cond, {__builtins__: {}}, ctx) orchestrator EyunOrchestrator(eyun_sdk_instance) flow { steps: [ {action: getUserInfo, params: {userId: ${userId}}, store_as: user}, {action: sendText, params: {wId: ${wid}, userId: ${userId}, content: 你好${user.nickname}}, condition: ${user.is_vip}} ] } orchestrator.execute_flow(wId_abc123, flow, {userId: user_001})最后说两句回头看这三年每次升级不是因为技术想炫技都是业务逼到份上了。但有一点没变Eyun这个底座一直很稳。从最开始的一个sendText接口到现在30多个wId实例的编排平台Eyun开发文档和接口本身没让我操过心。如果你也在做微信相关的应用我建议别一开始就想做平台先从工具开始解决一个具体痛点。业务跑起来了中台和平台化是水到渠成的事。