我一直在想:如果AI能真正深入普通人的生活,成为生活的一部分,会是怎样的体验?
适逢国庆假期也是我的婚礼,大家都知道婚礼是个极其繁琐的活动,涉及各种事项的安排,加上外地很多朋友来参加,几乎事无巨细所有的信息都会汇总到我这个新郎官这。于是,我做了一个小实验——在微信里做一个“传话筒”。
这个微信小程序的界面非常简单,就像一个普通的聊天窗口。但它背后接入了一个我自己搭建的知识库,能回答所有与我的婚礼相关的问题。你可以问它:
这些答案都不是凭空生成的,而是我提前写好的内容、上传到知识库里,再由AI做结构化处理、自然语言理解,然后通过小程序回答宾客的提问。
简单来说,它是一个懂“我”的AI传话筒。结合微信这个平台,更是让这个AI嘴替唾手可得,随时点开随时用。后来有很多外地的朋友来参加我的婚礼,在我应接不暇的时候这个小程序很好地帮我缓解了机械性的信息回复,把我解放出来,才给伴侣带来了一场美满的婚礼。当然接亲当天忘记带捧花这种事情AI确实爱莫能助,如果未来有个实体化的机器人,它应该能识别到我没带捧花吧。
小程序 + 知识库 + 智能问答
// index.jsconst defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'Page({data: {question: "",messages: [],scrollToId: "",recorder: null,voiceMode: false,recording: false,socket: null,currentAnswerId: null, // 正在打印的 assistant 消息 id},onInput(e) {this.setData({ question: e.detail.value });},onSend(e) {const q = e.detail.value.trim();if (!q) return;// 1. 显示用户消息this.addMessage("user", q);this.setData({ question: "" });// 2. 预留一条空的 assistant 消息const answerId = this.addMessage("assistant", "");this.setData({ currentAnswerId: answerId });// 3. 建立 WebSocket 连接(每次问问题新建连接即可)const socket = wx.connectSocket({url: "wss://api.不告诉你.com/ws/chat", // 换成你后端的 wss 域名success: () => console.log("WebSocket connecting..."),fail: (err) => {console.error("WebSocket error:", err);this.updateAnswer(answerId, "连接失败");}});socket.onOpen(() => {console.log("WebSocket connected");socket.send({ data: JSON.stringify({ query: q }) });});socket.onMessage((msg) => {console.log("收到分片:", msg.data);if (msg.data === "[END]") {socket.close();this.setData({ currentAnswerId: null });return;}// 匀速打印this.appendAnswer(answerId, msg.data);});socket.onClose(() => {console.log("WebSocket closed");});socket.onError((err) => {console.error("WebSocket error:", err);this.updateAnswer(answerId, "服务异常");});this.setData({ socket });},// 添加消息addMessage(role, text) {const msg = { id: Date.now() + Math.random(), role, text };this.setData({messages: [...this.data.messages, msg],scrollToId: "m" + msg.id});return msg.id;},// 更新消息内容updateAnswer(id, text) {const msgs = this.data.messages.map(m => {if (m.id === id) m.text = text;return m;});this.setData({ messages: msgs, scrollToId: "m" + id });},// 匀速打印:把流式分片拼接到当前 assistant 消息里appendAnswer(id, chunk) {const msgs = this.data.messages.map(m => {if (m.id === id) {m.text = (m.text || "") + chunk;}return m;});this.setData({ messages: msgs, scrollToId: "m" + id });},// 切换语音输入toggleVoice() {this.setData({ voiceMode: !this.data.voiceMode });},startRecord() {const recorder = wx.getRecorderManager();this.setData({ recorder, recording: true });recorder.start({ format: "mp3" });wx.showToast({ title: "录音中…", icon: "none" });},stopRecord() {const recorder = this.data.recorder;this.setData({ recording: false });if (!recorder) return;recorder.stop();recorder.onStop(res => {wx.showToast({ title: "录音结束", icon: "none" });this.setData({ question: "(语音识别结果)" });});}});
<view class="container" style="background-image: url('https://不告诉你.com/assets/wx-background.jpg');"><scroll-view class="chat" scroll-y="true" scroll-with-animation scroll-into-view="{{scrollToId}}"><block wx:for="{{messages}}" wx:key="id"><view id="m{{item.id}}" class="bubble {{item.role}}"><text>{{item.text}}</text></view></block></scroll-view><view class="inputBar"><!-- 小语音按钮 --><view class="voiceBtn" bindtap="toggleVoice"><image src="../images/mic-dark.jpg" mode="aspectFit" /></view><!-- 输入框 --><textarea wx:if="{{!voiceMode}}"class="input"placeholder="输入文字或点击语音"auto-heightconfirm-type="send"bindinput="onInput"bindconfirm="onSend"value="{{question}}" /><!-- 语音模式:按住说话 --><view wx:if="{{voiceMode}}" class="voiceBox"><button class="holdBtn"bindtouchstart="startRecord"bindtouchend="stopRecord">按住说话</button><!-- 波纹动画 --><view wx:if="{{recording}}" class="ripple"></view></view></view></view>
.container {display: flex;flex-direction: column;height: 100vh;background-image: url('../images/bj.jpg');background-size: cover;background-position: center;}.bg {position: absolute;top: 0;left: 0;width: 100%;height: 100%;z-index: -1;}.overlay {position: relative;height: 100%;display: flex;flex-direction: column;}/* 聊天区域:撑满剩余空间 */.chat {flex: 1;padding: 24rpx;overflow-y: scroll;box-sizing: border-box;}.bubble {max-width: 80%;margin: 16rpx 0;padding: 16rpx 20rpx;border-radius: 18rpx;line-height: 1.6;background: rgba(255,255,255,0.8);}.bubble.user { background: rgba(217,247,190,0.9); align-self: flex-end; }.bubble.assistant { background: rgba(255,255,255,0.9); border:1px solid #eee; align-self: flex-start; }/* 输入区域始终固定在底部 */.inputBar {display: flex;align-items: center;padding: 12rpx;border-top: 1px solid #eee;background: rgba(255,255,255,0.95);}.voiceBtn {width: 60rpx;height: 60rpx;border-radius: 50%;display: flex;align-items: center;justify-content: center;margin-right: 12rpx;}.voiceBtn image {width: 36rpx;height: 36rpx;}.input {flex: 1;min-height: 72rpx;max-height: 240rpx;border: 1px solid #ddd;border-radius: 12rpx;padding: 12rpx;background: #fff;}/* 按住说话按钮:浅灰色 */.holdBtn {flex: 1;height: 80rpx;display: flex;align-items: center; /* 垂直居中 */justify-content: center; /* 水平居中 */background: #f2f2f2;color: #333;border-radius: 12rpx;border: 1px solid #ccc;font-size: 28rpx;}/* 录音时闪动动画 */.holdBtn.recording {animation: pulse 1s infinite;}@keyframes pulse {0% { background-color: #e6e6e6; }50% { background-color: #d0d0d0; }100% { background-color: #e6e6e6; }}/* 底部语音盒子 */.voiceBox {position: relative;flex: 1;display: flex;justify-content: center;align-items: center;}/* 按住说话按钮 */.holdBtn {flex: 1;height: 80rpx;line-height: 80rpx;text-align: center;background: #f2f2f2;color: #333;border-radius: 12rpx;border: 1px solid #ccc;z-index: 2;}/* 波纹效果 */.ripple {position: absolute;width: 120rpx;height: 120rpx;border-radius: 50%;border: 4rpx solid #07c160;opacity: 0.6;z-index: 1;animation: rippleAnim 1.5s infinite;}@keyframes rippleAnim {0% {transform: scale(0.8);opacity: 0.8;}50% {transform: scale(1.4);opacity: 0.4;}100% {transform: scale(2.0);opacity: 0;}}
起初,我只是想让宾客能方便地获取信息。但在搭建过程中,我发现这件事的意义远超想象——AI真正的力量,不在于多智能,而在于多“贴心”。
它能让复杂的沟通变得简单,让信息的传递更温柔。
比如,活动组织者可以让AI成为信息小秘书;企业可以用它做FAQ助理、活动报名问答;家庭可以用它做家务备忘录、旅游顾问;甚至个人,也能让它成为“数字分身”,回答那些重复却重要的问题。
在这个“人人都是创作者”的时代,AI完全可以成为“人人的嘴替”——你的传话筒、导游、主持人、讲解员。
不需要复杂的模型训练,不需要昂贵的GPU。
只要一点点耐心、几行代码,你就能让AI替你表达、替你沟通。
当AI从高墙之上走进生活细节,它不再是技术的象征,而是人性的延伸。
它能让你在婚礼上更从容,也能让生活更温柔、更有秩序。
这篇文章只是《让AI深入生活》系列的第一篇。
我希望通过它,让更多人看到AI不是“高科技玩具”,而是一种新的生活方式。
它可以是仪式感的桥梁,是沟通的延伸,是信息的守门人。
后续我会继续分享AI在日常任务中的其他小巧思。
让我们一起,把AI请进生活里。

