02-VibeCoding小程序-Openclaw互通实战VibeCoding实战合集 · 第 02 篇前言这是VibeCoding实战的第二篇。第一篇讲的是怎么用2.5天做一个旅行小程序,那次重在开发流程和产品设计思路。这篇不一样。这篇想聊的是:我在做Terra这个产品时,遇到的一个很具体的技术问题——小程序和AI之间,数据怎么打通?不是讲概念,不是讲趋势,就是讲这个问题我是怎么想清楚的。中间踩了一些坑,纠结过几个方案,最后选了一个看起来有点土但确实管用的办法。如果你也在做小程序+AI方向,或者对"两端数据打通"这个课题感兴趣,这篇可能会有点参考价值。一、问题的产生Terra旅行路书这个产品,有两个端。第一端是微信小程序。用户在这管自己的旅行偏好、看历史行程、生成路书。数据都在微信体系里,用户是真实的。第二端是OpenClaw。我天天用它来聊天、查资料,写东西。它挺聪明,但有个根本问题——它不知道"我是谁"。OpenClaw是匿名的。它不知道用户在微信里的身份,不知道偏好,不知道之前生成过什么行程。这就尴尬了:小程序里的画像,AI用不了。AI挖的攻略,落不到用户账号。两边的行为,完全割裂。两个信息孤岛。二、第一个思路:让AI直接调小程序接口一开始我想的是,既然小程序有数据,那让OpenClaw直接调接口不就行了?思路很简单:用户在小程序授权OpenClaw拿到凭证拿着凭证调小程序API拿到数据,AI就能用了听起来挺顺,对吧?但仔细一想,问题一堆。三、为什么第一个思路走不通问题1:小程序后端没考虑对外暴露Terra后端是个典型的Spring Boot应用,接口都是给小程序自己用的,没想过对外提供。要对外加接口,就得新增Controller、加鉴权,写文档、考虑限流安全。这不是简单加几个接口的事,是对已有系统动刀。风险大,维护成本高。问题2:微信登录态没法给AI用微信小程序的登录流程是:code换session_key,再换openid。session_key有时效,而且不能存服务端。要让AI持续访问,有几个选项:每次都让用户操作一遍授权 → 体验没法看用openid换长期token → 微信没这功能自己维护一套账号体系 → 又回到注册公司的问题问题3:数据存哪?AI拿到画像数据,处理完了,存在哪?存OpenClaw侧?用户下次打开小程序看不到。存小程序侧?OpenClaw没写入权限。这是个死胡同。四、灵光一现:换个角度想那段时间我在研究OpenClaw的Skill机制。Skill是让AI调用外部工具的方式——AI识别到需求,调用工具,工具返回结果。然后我就想:能不能做个"工具",让AI直接查数据库?不是调接口,是让AI通过MCP直接连数据库。数据库是两边共用的,存那里,AI能读,用户也能读。关键转变:从"AI调接口"变成"AI连数据库"。但马上又有问题:数据库里的数据怎么和用户对应?小程序表里有user_id,这是微信openid映射过来的。OpenClaw是匿名的,它不知道这个user_id是谁。需要一个桥梁,把OpenClaw会话和微信user_id关联起来。五、绑定码模式的诞生这个想法,是从OAuth来的灵感。OAuth的流程是:用户授权 → 第三方拿code换token → 调API拿信息。但我的场景不太一样。OAuth是"第三方获取微信身份"。我需要的是"让AI知道用户在微信里的身份"。能不能反过来?小程序生成一个一次性的"绑定码"。用户把码复制给OpenClaw。OpenClaw拿码去数据库查,查到了就说明这个OpenClaw会话和对应微信账号绑定成功了。流程是这样的:小程序:生成绑定码(30分钟有效,一次性) ↓ 用户把绑定码复制到OpenClaw ↓ OpenClaw:拿绑定码去数据库查 ↓ 数据库找到了,返回一个长期凭证(bindRef) ↓ OpenClaw存好bindRef,以后拿这个查数据,就是用户A的数据核心逻辑:谁持有绑定码,谁就证明了自己