
微信操作发消息 / 加好友 / 拉群如果散落在代码各处新增一个操作就要改多处。指令系统的作用是统一注册、统一路由、统一执行、统一回收。一条指令从生到死有4个阶段本文按生命周期来讲Eyun项目里怎么搭这套系统。一、4个指令生命周期阶段1. 注册阶段指令登记入册每个指令注册时声明4要素——name指令名如 SendNotification、trigger触发条件定时 / 事件 / 手动、handler执行函数、timeout超时时间如30秒。注册后指令进入待命状态。大白话指令注册像新员工入职填表——姓名、岗位触发条件、技能handler、试用期超时填完归档待命。2. 路由阶段触发条件满足时分发到对应 handlertrigger 满足定时到点 / 事件到达 / 手动调用→ 指令系统查注册表找到匹配指令 → 把上下文触发数据 参数传给 handler → handler 开始执行。Eyun Webhook 回调是 trigger 的事件源之一消息事件触发回复指令、好友事件触发欢迎指令。按照 Eyun 开发文档 的回调规范4类事件回调消息 / 好友 / 群 / 状态可映射为4类指令 trigger。大白话触发条件满足后系统像调度中心一样把任务派给对应的人。3. 执行阶段handler 干活并反馈进度handler 执行业务逻辑调 Eyun 的 sendText 发消息 / 调业务系统 API 查数据→ 执行中可反馈进度处理中...→ sendText→ 执行完返回结果。按照 Eyun 开发文档的规范sendText 需要传 wId、toUser、content 三个必填参数。Eyun 的错误码体系保证执行可靠性1002 触发刷新、1004 退避重试5秒回调超时会重试3次。大白话handler 是干活的工人——干的过程中可以汇报进度干完交结果。4. 回收阶段指令执行完做收尾handler 返回结果后 → 指令系统记录执行日志指令名 触发时间 执行耗时 结果状态→ 释放占用的资源会话锁 / 临时文件→ 超时未完成的指令标记为超时并触发补偿逻辑。大白话活干完了要交工——记录干了什么、花了多久、成功没有然后收拾工具。二、4阶段对比生命周期阶段做什么触发条件关键技术点Eyun 接口大白话说明注册登记入册启动时4要素声明-新员工填表路由分发到 handlertrigger 满足注册表查找Webhook 回调调度中心派活执行handler 干活handler 调用进度反馈sendText工人干活回收收尾归档handler 返回日志资源释放-交工收拾工具三、4阶段指令系统框架registry {} def register(name, trigger, timeout30): # 注册阶段 def deco(handler): registry[name] {name, trigger, handler, timeout, 待命} return handler return deco def route(trigger_data): # 路由阶段 [execute(c, trigger_data) for c in registry.values() if c[trigger].match(trigger_data)] def execute(cmd, ctx): # 执行阶段 try: cmd[handler](ctx); recycle(cmd, 成功) # 干活反馈进度 except TimeoutError: recycle(cmd, 超时) # 触发补偿 def recycle(cmd, status): # 回收阶段 log(cmd.name, cmd.cost, status); release(cmd.lock) # 日志释放资源四、落地建议4个阶段让微信操作从散落调用变成统一管理——注册阶段集中登记、路由阶段统一分发、执行阶段规范反馈、回收阶段自动归档。好处是可观测每个指令什么时间被谁触发、执行多久、成功没有全有记录。新增操作时只写 handler 注册一行4阶段管理逻辑复用。进阶方向指令加优先级字段高优先级插队、加依赖声明A 指令依赖 B 指令先完成、加重试策略失败自动补偿。接口参数和回调规范见 Eyun 开发文档。