网易首页 > 网易号 > 正文 申请入驻

网页聊天不是"页面",是"渠道":1个架构错误如何浪费3天

0
分享至

我原以为网页聊天是整个产品里最简单的入口。

Telegram、飞书、钉钉这些第三方集成才叫复杂。网页聊天不过是仪表盘里的一个功能,同浏览器、同服务器、同应用,能出什么问题?


结果问题大了。

从UI看,这个bug毫无规律。任务从网页聊天界面正常启动,运行时会话存在,对话存在,任务存在,日志看起来也健康。然后交付管道尝试往对话里发送后续更新时,却报错:conversation_not_found。

这说不通——对话明明存在,我刚用过。这种bug最耗时间,因为每个子系统单独看都半对半错。

真正的症结在于:我把网页聊天当成"页面"来设计,而非"渠道"。

CliGate的架构里早就有渠道模型。Telegram是渠道,飞书是渠道,钉钉是渠道。这些入站消息走同一套监管与交付机制:对话存储、调度器、交付发送器、助手编排、运行时会话绑定。但网页聊天却慢慢滑向了一条特殊路径。

起初这感觉无害。网页聊天活在同一个应用里,给它一点自定义状态、几个便利包装,很容易。这就是 mistake。

实际崩坏的是这里:旧版 chat-ui/conversation-store.js 导出了自己独立的 store 实例,而交付与编排路径用的是共享的渠道对话 store。两边都在读写"对话",但不是同一个内存数组。

结果是:聊天UI能创建对话,路由处理器能看见,运行时能绑定,但调度器之后就是找不到。修复注释比我讲得更直白——chat-ui 和 agent-channels 各持有一份独立的内存 conversations 数组,尽管两边都往磁盘同一个JSON文件写。服务器启动后,运行时创建的 chat-ui 对话对 chat-ui-route 可见,对 message-service 却不可见,于是调度器投递命中 conversation_not_found,通知被静默丢弃。

这就是"小UI捷径"悄悄分叉领域模型的典型后果。

修复并不复杂。我不需要新抽象,只需要单一真相源。生产环境不再导出专用的 chat-ui 对话 store,而是把聊天专用助手挂到渠道系统用的共享单例上:

installChatUiHelpers(agentChannelConversationStore);

export const chatUiConversationStore = agentChannelConversationStore;

这一改动比看起来更重要。现在网页聊天不再假装与渠道系统相邻,它就是渠道系统的一部分。

改变的不只是交付。一旦停止把网页聊天当作特殊页面,其他决策也清爽多了。chat-ui 对话现在表现得像真正的渠道对话:同样的持久化语义、同样的调度保证、同样的可观测性。之前为"网页聊天特例"写的防御代码可以删掉。测试覆盖不再需要两套断言。

最意外的收获:这个修复让多设备场景自然成立。同一个用户登录两台浏览器,现在看到的是同一份对话状态——因为状态不再困在某个UI组件的内存里,而是活在渠道系统的共享存储中。

回看这个bug,它暴露了一个设计惯性:我们太容易把"同一台服务器上的东西"当成"同一个系统"。网页聊天和渠道后端确实共享进程,却各用各的状态管理,等于在进程内部又造了一次分布式系统的经典难题。

单一真相源不是新道理,但"渠道"这个抽象迫使你认真对待它。Telegram、飞书、钉钉这些外部渠道没有给你"特殊处理"的选项,它们强迫你走统一管道。网页聊天之所以出问题,恰恰因为它看起来太"近",让人误以为可以偷懒。

现在网页聊天终于和其他渠道平起平坐。代码少了,行为对了,边界清了。有时候,把一个东西从"例外"还原为"规则",就是最好的架构决策。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
中方严肃定性,16国加入联合军团,共同围剿俄罗斯,日本已经介入

中方严肃定性,16国加入联合军团,共同围剿俄罗斯,日本已经介入

影孖看世界
2026-06-01 23:22:26
黄仁勋台北闭门会议讲话录音泄露:中国会赢得AI竞争

黄仁勋台北闭门会议讲话录音泄露:中国会赢得AI竞争

CNMO科技
2026-06-02 17:08:23
官网公布FMVP排行榜:文班居首布伦森第二 卡斯尔第四哈珀第六

官网公布FMVP排行榜:文班居首布伦森第二 卡斯尔第四哈珀第六

罗说NBA
2026-06-03 06:20:55
文旅项目陷倒闭潮,20亿古城游客稀少亏损超10亿

文旅项目陷倒闭潮,20亿古城游客稀少亏损超10亿

落梅如雪乱飞
2026-06-02 12:59:47
浙江一保洁员因井盖塌陷掉污水池中,消防员下井搜救竟发现池内还有一人:此前保安贸然施救也被困;消防提醒:请勿盲目施救

浙江一保洁员因井盖塌陷掉污水池中,消防员下井搜救竟发现池内还有一人:此前保安贸然施救也被困;消防提醒:请勿盲目施救

洪观新闻
2026-06-02 14:03:52
东北华北等地有强对流 南方地区将有较强降水

东北华北等地有强对流 南方地区将有较强降水

中国气象局
2026-06-02 08:08:07
饿一天,多活40%?顶刊实锤:关键在吃回去时,乱饿等于慢性自杀

饿一天,多活40%?顶刊实锤:关键在吃回去时,乱饿等于慢性自杀

果壳
2026-06-02 19:25:13
3家保险公司进入破产程序!保单会作废吗?现在买保险还安全吗?

3家保险公司进入破产程序!保单会作废吗?现在买保险还安全吗?

老特有话说
2026-06-02 16:08:24
苹果紧急更新!新iPhone充电“饿死”、M5 Mac无故关机

苹果紧急更新!新iPhone充电“饿死”、M5 Mac无故关机

摸鱼算法
2026-06-02 03:23:55
河南民权发生一起交通事故致2人死亡

河南民权发生一起交通事故致2人死亡

新京报
2026-06-02 13:18:38
真为深圳太子湾K11着急!干净到零异味,却留不住客流,评论炸锅

真为深圳太子湾K11着急!干净到零异味,却留不住客流,评论炸锅

火山詩话
2026-06-02 10:53:19
你的低成本爱好是什么?这届网友居然就这样水灵灵的省下这么多钱

你的低成本爱好是什么?这届网友居然就这样水灵灵的省下这么多钱

夜深爱杂谈
2026-06-02 10:49:13
称逛山姆是托举后续!宝妈痛哭道歉,全家信息被扒,孩子不敢上学

称逛山姆是托举后续!宝妈痛哭道歉,全家信息被扒,孩子不敢上学

童童聊娱乐啊
2026-06-03 01:06:24
世体:由于美国移民局问题,恩博洛的入境许可暂未获得批准

世体:由于美国移民局问题,恩博洛的入境许可暂未获得批准

懂球帝
2026-06-02 23:26:32
女子离婚当晚被前夫杀害,被杀前让女儿离家并留下遗嘱,前夫逃亡17年落网

女子离婚当晚被前夫杀害,被杀前让女儿离家并留下遗嘱,前夫逃亡17年落网

环球网资讯
2026-06-02 14:32:55
湖北公务员拟录用5527人,这所大学霸榜第一!不是武大华科,而是它……

湖北公务员拟录用5527人,这所大学霸榜第一!不是武大华科,而是它……

老满说高考
2026-06-02 20:38:47
黄仁勋、Marvell CEO同台对谈:未来AI拼的不是算力是连接,“能用铜就用铜,必须用光才用光”!

黄仁勋、Marvell CEO同台对谈:未来AI拼的不是算力是连接,“能用铜就用铜,必须用光才用光”!

华尔街见闻官方
2026-06-02 15:37:33
人走了,产业也完了!印尼想赶走中方镍矿团队,算完账,全沉默了

人走了,产业也完了!印尼想赶走中方镍矿团队,算完账,全沉默了

小陆搞笑日常
2026-06-02 20:51:57
光通信涨爆了!网红:不买光模块是认知低,股评人:旭创剑指10万亿

光通信涨爆了!网红:不买光模块是认知低,股评人:旭创剑指10万亿

金石随笔
2026-06-03 00:07:56
太敢说了!魏建军直播直言被紧急叫停,部分汽车厂商惊出一身冷汗

太敢说了!魏建军直播直言被紧急叫停,部分汽车厂商惊出一身冷汗

火山詩话
2026-06-02 06:07:10
2026-06-03 07:24:49
字节漫游指南
字节漫游指南
有态度网友ytd
5775文章数 56关注度
往期回顾 全部

科技要闻

烧掉千亿后,美团、阿里、京东谁先止血?

头条要闻

演员魏宗万去世 曾在94版《三国演义》中饰演"司马懿"

头条要闻

演员魏宗万去世 曾在94版《三国演义》中饰演"司马懿"

体育要闻

1米74的业余联赛替补,在英超踢中卫

娱乐要闻

奚梦瑶何猷君补办婚礼超幸福

财经要闻

智元和宇树的“暗战”愈演愈烈

汽车要闻

星途神秘新车轮廓曝光 又一款性能SUV要来了?

态度原创

本地
旅游
时尚
艺术
公开课

本地新闻

用剪纸的方式,打开江苏扬州

旅游要闻

北京位列全球数字旅游引领型城市榜首

蓝色系下装看着清爽不闷,裤子、裙子都凉快,随便穿都不出错

艺术要闻

二十年前割麦的场景

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版