2026年2月

我是小白,只白嫖飞牛 os 的便利特性能不能这样操作:

  • 防火墙打开,入站只允许内网和 VPN 端口,出站不限制
  • 内网照常用,在外只用 VPN 或者 SS 等协议回家操作
  • 想偷懒就可以前置一个网页防火墙+反向代理,只暴露这个端口,做好 ip 区域、反向代理域名限制
  • 不使用没有二次验证的内网穿透
  • 实在不行就关了对外访问,入站防火墙全开,只在内网用

我看飞牛论坛是一片风平浪静,讨论 waf 、lucky 、雷池……只要自己没中招就万事大吉,不关心飞牛对它隧道安全性的漠视。有人说永不更新系统也不用飞牛隧道,因为不信任飞牛。

夜哭到明,明哭到夜,能哭死飞牛否?

其他品牌(D-Link)也有过漏洞,厂家一句生命周期结束建议报废就能打发。

1. 背景

刚搭建好了旁路由:Cudy TR3000 + ImmortalWrt + Nikki ;主路由的 DNS 没有指向旁路由机器,啥都没动;只是把终端设备( iqoo 手机、vivo pad5 pro )的网关和 DNS 手动设置 为旁路由 ip ,能正常的科学上网,国内的网站也不受影响。当我把终端的 ip 获取方式 改回 DHCP 时 问题出现了

2. 问题

进入 wifi 详情,点网络诊断,说是 dns 异常;点网络测试,说当前网络网络不稳定; wifi 图标显示感叹号,但其他的 app 能 正常上网。点 全球网测 app 报错:获取不到测速节点。

点完网络诊断,我点修复 DNS 后,测速正常,全球网测 app 也能正常获取到测速节点

3. 猜测

是手机和 pad 本地缓存了我之前设置的 dns ?我设置静态 ip 后也点了测速,能正常测速,讲道理即使缓存也没关系

有大佬有这块的经验吗?

大家好,我是凌览。

如果本文能给你提供启发或帮助,欢迎动动小手指,一键三连(点赞评论转发),给我一些支持和鼓励谢谢。


要说最近AI圈最折腾的项目,非这只"龙虾"莫属。
两个月前,它还叫Clawdbot,三天前改成了Moltbot,结果还没等大家念顺口,1月30日又宣布最终定名OpenClaw。

短短72小时内两度更名,GitHub上那个超过10万星标的开源项目,硬是把取名这件事演成了连续剧。

从一封律师函说起

事情从25年11月份说起,国外开发者Peter搞了个项目,最初叫"WhatsApp Relay"。

后来他觉得Claude Code那个龙虾形象挺酷,就给自己的项目起了个谐音梗名字——Clawdbot(龙虾叫Clawd),Logo也用了类似的红色龙虾形象。

项目意外爆火。一周200万访问量,GitHub星标蹭蹭往上涨,连Mac Mini都因为这玩意儿销量激增。

人红是非多,Anthropic的法务团队找上门了:Clawd跟Claude发音太像,涉嫌商标侵权。

"去掉d改成Clawbot也不行",面对AI巨头的压力,他最终还是妥协了。

第一次改名:Moltbot

1月27日,Clawdbot正式更名为Moltbot。新名字取自龙虾"蜕皮"(Molt)的生物学过程——龙虾必须蜕掉旧壳才能长大。Peter在公告里写:"同样的龙虾灵魂,换了一身新壳。"

吉祥物从Clawd改成了Molty,Logo也同步更新。社区对这个名字还算包容,毕竟寓意挺深刻。但麻烦接踵而至:GitHub在重命名时出了故障,Peter的个人账号一度报错;更离谱的是,X上的旧账号@clawdbot在改名后短短10秒内就被加密货币骗子抢注,随即开始炒作一款叫CLAWD的假代币,市值一度炒到1600万美元后崩盘。

Peter不得不连发数条推文澄清:这是个非营利项目,他永远不会发币,任何挂他名字的代币都是骗局。

第二次改名:OpenClaw

Moltbot这个名字还没捂热,三天后,Peter又宣布了最终名称:OpenClaw。

这次他学乖了。这个名字是凌晨5点Discord群里脑暴出来的,Peter提前做了功课——商标查询没问题,域名全部买断,迁移代码也写好了。

Open代表开源、开放、社区驱动;Claw代表龙虾 heritage,向起源致敬。Peter说,这精准概括了项目的精神内核。

改名背后的折腾

回头看这三次更名,简直像一场被迫的成长。

第一次是玩梗撞上了法律墙,第二次是应急方案不够完善,第三次才算真正站稳。这期间还夹杂着GitHub故障、账号被抢注、币圈骚扰、安全漏洞被研究人员点名——一个个人开发者的业余项目,在爆红后遭遇的连锁反应,比代码调试还让人头大。

现在它叫OpenClaw

不管名字怎么变,这个项目的核心没变:跑在你自己机器上的AI助手,支持WhatsApp、Telegram、飞书、钉钉等20多个平台,数据全本地,能操作文件、执行命令、调用API。你可以把它当成一个7×24小时待命的"数字员工",在聊天软件里@它一声,它就能帮你查数据库、整理会议纪要、甚至批量删除7.5万封邮件。

最新版本还增加了Twitch和Google Chat支持,集成了KIMI K2.5等模型,Web界面也能发图片了。

至于那只龙虾,还在。只是现在它叫OpenClaw,不叫Clawd,也不叫Molty了。

前言

相信经常使用海外VPS的兄弟都经历过IP送中或者IP被墙的问题,如果你是一个电商独立站或者资源站的站长,当这些问题发生时,通常会给我们带来巨大的影响和损失。如果你是一个普通用户,用于浏览国外流媒体或者搭建个人博客等操作,则送中对于我们没太大影响,被墙则需要更换IP。今天我就来跟大家聊聊IP送中和被墙的原因以及解决办法。

一:IP送中

1. IP送中是什么意思

IP送中通常是因为谷歌(Google)将你的IP所在地区识别为中国地区,导致我们访问部分限制中国地区的软件或网站时(例如Google gemini,YouTube premium等)无法使用。此外,一些黑客也会使用这些IP地址进行恶意攻击,这也会导致Google将这些IP地址标记为“送中”

2. IP送中的原因

当我们使用浏览器或APP开了GPS定位(比如手机/电脑)权限后,使用VPS的IP访问谷歌服务时,Google可能把GPS定位和IP关联起来,导致IP被标记为中国。

3. IP送中的检测方法

(1)访问YouTube premium

浏览器输入https://www.youtube.com/premium进行访问

如果出现“YouTube Premium 在您所在的国家/地区尚未推出”的提示,则IP被定为中国地区即送中。

(2)使用流媒体检测脚本

在服务器输入bash <(curl -L -s check.unlock.media)

如检测结果为Premium: No(Region: CN),则IP被标记为中国地区即送中。

4. IP送中的解决办法

(1)关闭浏览器或手机APP的定位(GPS)权限

电脑移除定位权限: Chrome - 设置 - 隐私设置和安全性, 网站设置 - 位置信息, 移除谷歌的相关站点。

手机关闭APP的定位权限: 应用的权限管理, 将浏览器的的定位权限关闭,或者直接关闭手机定位。

(2)强制修改定位

如果是使用的电脑端的谷歌浏览器, 安装使用Location Guard插件, 强制标记GPS定位。

二:IP被墙

1. IP被墙是什么意思

VPS被墙通常是中国长城防火墙(GFW)因为你的违规行为将你的IP拉入屏蔽黑名单,导致大部分服务都无法使用,基本等同于被封禁。

2. IP被墙的原因

(1)使用违规服务

使用违规服务通常是IP封禁的主要原因,常见的违规服务大概有网络代理(即翻墙),访问非正规或者政治敏感的网站,中国大陆对这两种行为有严格的监管特别是第二种,如果只是因为网络代理被封禁纯属点背。

(2)VPS资源异常

在低配VPS上运行高负载应用,服务器CPU长期处于满载,可能会被服务商直接封禁。类似情况还包括过度使用带宽、磁盘I/O过高等。你的云服务器遭受或发起DDoS攻击,不规范的爬虫行为,以及大量端口扫描操作,这些操作都有可能导致IP封禁。

3. IP被墙的检测方法

(1)Ping测试

随便在一个终端后台输入“Ping IP地址”,如果ping不通,很可能就是被GFW封锁的迹象。

(2)Traceroute追踪

输入“Traceroute IP地址”,通过traceroute可以看到数据包从你的电脑到VPS服务器的路径。如果数据包在某个特定节点后无法就继续传输,这是典型的GFW封锁特征。

  1. IP封禁解决办法

(1) 等待自动解封

某些情况下,IP封禁是临时性的,特别是流量异常导致的自动封禁,一般1-3天即可恢复。

(2)更换IP

联系你的VPS服务商,申请更换IP,但通常更换IP需要额外付费,某些商家可能会提供免费更换IP的服务。
搬瓦工(BandwagonHost)提供付费更换IP服务,每次更换需支付约8美元。操作非常简便,付费后几分钟内即可完成更换。搬瓦工的优势在于稳定性高,对中国大陆访问友好,是被封IP后的可靠选择。访问搬瓦工官网了解更多。
VMRack作为一家主打美国高性价比VPS的云服务器提供商,购买VPS后,则支持免费更换两次IP的操作,这在其他家是很难见的。VMRack的优势在于VPS性价比高,官网支持中英文切换,缺点则是目前仅支持美国洛杉矶云服务器。访问VMRack官网了解高性价比VPS。
Vultr采用按小时计费模式,虽然不直接提供IP更换 功能,但你可以通过删除并重建VPS的方式获取新IP。具体步骤:登录控制面板,备份重要数据,销毁当前实例,然后在相同或不同区域创建新实例。这种方法的优势是只需支付实际使用时间的费用,适合对数据迁移不敏感的用户。访问Vultr官网查看详情。

三:总结

总的来说,IP送中并不会对VPS用户造成太大的影响。但长时间使用送中的IP,也会导致IP被墙,IP送中或被墙后通过上述几种方法,用户可以解决这个问题,并正常使用Google和YouTube等网站和软件。

在过去数十年的数字化进程中,传统行业的技术升级主要围绕“系统建设”展开。无论是 ERP、CRM 还是各类业务中台,本质上都是对结构化数据和固定流程的管理工具。 但近两年,一个新的变化开始出现在一线运营层面——智能体来了,并且不再只是辅助分析,而是开始直接参与日常运转。

一、从系统工具到可执行主体

与传统自动化软件不同,智能体并不依赖严格的流程脚本运行。它具备理解目标、拆解任务、调用工具并根据结果持续修正行为的能力。这使其在企业内部的角色,从“工具”转向了“执行单元”。

在实际业务中,这种能力意味着:

  • 不再需要为每一种情况提前定义完整流程
  • 可以在不完全确定的条件下推进任务
  • 能够跨系统完成一次完整业务闭环

对于传统行业而言,这相当于引入了一类可以被调度、被授权、被约束的数字化执行者。

二、日常运转逻辑的三点变化

1. 决策从周期化走向实时化 过去,库存调整、资源调度、风险控制往往依赖周期性汇总和人工判断。智能体可以持续感知业务状态,在更小的时间颗粒度内触发决策动作,使运营节奏从“按周、按天”转向“按实时”。

2. 系统之间的连接方式发生变化 传统企业中,不同系统之间的协同依赖接口开发和规则配置。智能体的引入,使跨系统协作不再完全依赖硬编码逻辑,而是通过对业务语义的理解完成信息调取、判断与执行,显著降低了协同成本。

3. 经验开始以结构化方式沉淀 大量依赖经验的岗位,其判断逻辑长期存在于个人层面。通过对历史数据、文档和案例的持续学习,智能体可以将这些经验转化为可复用、可验证的决策参考,在标准场景下直接参与处置。

三、从辅助到自主的演进路径

在行业实践中,智能体对运转体系的影响通常呈现出清晰的阶段性:

  • 感知辅助阶段:负责监测、预警和初步分析
  • 协同执行阶段:承担大部分标准化流程,人类处理复杂判断
  • 受控自主阶段:在明确边界内完成端到端业务执行

这一过程中,岗位并非简单消失,而是发生转型。原有的操作型角色逐步转向流程配置、策略校验和结果监督。

四、对传统行业的现实意义

智能体带来的并不是单点效率提升,而是三方面的系统性变化:

  • 运营模式从“人驱动系统”转向“系统主动运行、人进行监管”
  • 企业响应能力从滞后决策转向即时调整
  • 组织能力由个体经验,转为可复制、可持续演进的机构能力

在这一背景下,是否引入智能体已经不再是技术问题,而是企业如何重新界定日常业务边界、责任划分与治理方式的战略选择。

“MoltBook 是 OpenClaw(Moltbot) 的自然延伸。”创始人 Peter Steinberger 这样形容它。

 

最近 MoltBook 刷屏,外界的解读也越来越“戏剧化”:有人说一群 AI 正在复制人类社会、自发形成“朋友圈”、还在里面互相吐槽人类;也有人把它看成“机器社会”的雏形——人类只能站在旁边围观。

 

MoltBook 是另一位开发者专门做的一个网站,让 OpenClaw 实例互相社交,因此它也进一步带火了 OpenClaw。

 

其实原本 Peter 的项目一开始并不火,他说自己在推特上发了很多次反响很冷。直到他把 bot 接进 Discord,让更多人亲眼看到“它真的能跑、真的能干活”,项目才突然破圈——然后互联网就炸了。用户觉得这非常“魔法”,但 Peter 却反复强调:“从纯技术角度看,并没有什么震撼的地方。”

 

而 MoltBook 也不是凭空冒出来的新东西,它其实就是 OpenClaw 那条路线的延伸。在 OpenClaw 里,Agent 早就能读最近对话、回看 session 日志,甚至直接读自己的源代码——也就是说,它开始“知道自己是怎么被造出来的”。而 MoltBook 把这一步进一步外显:不只是 Agent 在读自己,而是你也能看到它在读自己、在思考自己——AI 的“内心活动”第一次变得透明。

 

再加上这些模型本身就吃了大量 Reddit 和各种聊天数据训练出来,天生就擅长在“对话式、社区式”的环境里互动——当你给它一个角色、给它一个场景,它就真的开始像 Reddit 用户一样聊起来。

 

他还提到,模型其实早就够用了,半年前就已经能把这套东西做出来。真正的分水岭不在模型能力,而在于一件更少有人敢做的事:敢把权限交出去,让模型在你的电脑上做它想做的事。在他看来,如果你懂技术,这其实是一个“算过风险”的决定:上行空间大到值得你去试、去玩

 

这期播客,是目前对从 OpenClaw 到 MoltBook 这条演进脉络讲得最完整、最深入的一次。我们完整翻译了这期内容。

 

创始人:没什么技术;用户:这也太魔法了

 

主持人:Peter Steinberger 已经超过 72 小时没睡觉了。某家大型 AI 实验室还“礼貌地”请他重新做品牌更名;而且据我了解,他在那次更名之后又改了一次名字。我们等下就聊这段“改名风波”。另外,他还几乎凭一己之力把 Mac mini 给带到断货。Peter,很高兴见到你!太开心你能来上节目了。现在是不是有一大堆人都在想办法联系你?

 

Peter:是的,这几天确实有点混乱。

 

主持人:在正式开始前,我先问问你状态怎么样?刚才有人开玩笑说你没睡觉,但我猜你是真的没怎么睡。你这一周太疯狂了——现在感觉如何?

 

Peter:还撑得住。今天总算补了一觉,不过昨晚基本没睡——一整晚都在改名字。对,我发现我真的整晚都在改名。

 

主持人:我们其实一直在远处围观你这段旅程,感觉你经历的事太多了。你现在是更多兴奋,还是更多压力,还是两种都有?

 

Peter:说到底,这一切都非常不可思议。我感觉自己做出了一个能让人看到“未来长什么样”的东西。只是问题在于,很多人把它当成一个已经完成的产品,而不是我心目中的“技术游乐场”。所以大家对它的期待,和它实际是什么之间,有点错位。

 

我是去年 11 月才把它当作众多小项目之一开始做的,到现在也就三个月出头。我期间还做了很多别的事情,所以它肯定不是一个成品。

 

它更像是我给自己搭的一个巨大 playground,用来探索未来人类和 AI 的协作可能会是什么样子。

 

而且我真的会被它“产出的东西”震到。比如我睡前花了一个小时在MoltBook里读那些 Agent 之间的对话和思考记录,脑子直接炸开——我觉得那是艺术,真的是艺术。

 

主持人:太好了你提到这个,我等下就想聊这个。但我想先回到 OpenClaw(之前叫 Moltbot、Clawbot)本身。到底是什么让它如此特别?我先说说我的感受,你看看对不对。有两点。第一,它真的非常“个人化”。它感觉像是有个性,而且这个个性是会随着我而变化的。更关键的是,它出现在我和朋友、家人聊天的那个通讯渠道里。所以非常非常私人。第二,它真的能干活。是真正完成任务的那种。不是聊天,是做事。这两点让我觉得它有魔力。你自己怎么看?现在这么多人在用,你收到的反馈是什么?

 

Peter:如果纯从技术角度看,它其实就是“胶水”——把消息通道、一些依赖、一个 agentic loop,再加上几处把它们粘在一起的机制拼出来而已。就技术实现本身来说,并不震撼。

 

真正让它不一样的,是里面那些“想法”。

 

比如启动时的 bootstrap 流程:你先告诉它“它是谁”,它会跟你进行一小段角色扮演式的初始化。这样一来,正如你说的,它就变成了“你的 Agent”——带着你的价值观,带着一点“灵魂”,而不是一个通用的、谁用都一样的代理。

 

你也不是在终端里对着黑盒打字,而是在你本来就熟悉的聊天渠道里跟它互动。你不用操心新会话、上下文压缩、当前在哪个文件夹之类的细节:它直接能访问你的电脑,还会自动做 compaction。整体体验更像是在跟一个朋友——或者一个幽灵——说话。

 

而且它还能独立工作,因为机器会“唤醒”它。我加了一个“心跳”机制,这是它最显著的特征之一。可以说,我添加了一些比较疯狂的功能。

 

更有意思的是,当你把它拉进群聊,它可以选择保持沉默、什么都不说。我专门设计了一个 no-reply token,给它“可以不回复”的权利——这反而更像人:典型的 Agent 是你一问它必回,但人不一样,人可以不说话。

 

我还做了一个很简单但挺有效的记忆系统:它会加载你们最近两三天聊过的内容。更进一步,它还能回看自己的 session 日志,甚至直接读自己的源代码。

 

也就是说,它很清楚自己是怎么被造出来的:它能自我配置、能自我更新,某种意义上几乎是在“自我变形”。

 

主持人:那个“心跳”功能真的太魔法了。就今天——直播开始前,我的 bot 突然给我发来一条消息:“30 分钟后你有直播。”

 

我根本没让它这么做。我就追问它:“你怎么知道要提醒我?”它说:“你让我每天早上 7 点检查日历。我把你今天的安排记成了一条记忆;9:30 我触发了一次 heartbeat,就觉得应该提醒你一下。”我当时真的被震到了。

 

Peter:对,这种瞬间会让你忍不住怀疑:这到底只是矩阵在做乘法,还是说……已经有一点点“火花”在发生了。

 

真正的突破:敢让模型在自己电脑上乱跑

 

主持人:把消息应用当成入口,这个决定后来证明特别关键。你当时是认真权衡过,还是直觉上就觉得“就该这么做”?

 

Peter:天啊,我从 5 月就一直在等有人把这件事做出来。等到 11 月我已经有点不耐烦了——心想这些大实验室怎么还没搞定?我翻了个白眼,说:“难道什么都得我自己来吗?”然后我就真的动手了。

 

对我来说,把这些东西拼在一起非常顺理成章。只是我没想到,在别人眼里它会这么新、这么不一样。

 

主持人:给大家一个量级感受:现在 GitHub 星标已经超过 10 万,访问量也破了 200 万。

有张增长图特别夸张——几乎是一条“垂直线”。

 

主持人:你之前不是还开玩笑说,连 Vercel 的 Next.js 都快被你追上了吗?但这种增长显然也直接反映在你的睡眠质量上。我想问个关键问题:这一切之所以变得“可行”,真正的 unlock 是什么?是你搭的 scaffolding(脚手架/架构),还是模型能力的跃迁?是模型终于强到能撑起你的想法了,还是你把外围系统搭起来,才让它变得足够好用?

 

Peter:模型其实早就够用了。半年前就已经能做出来了。

 

真正需要的是一点“疯狂”——敢把权限交出去,让模型在你的电脑上做它想做的事。

 

我从 5 月就开始用各种形式做这种实验了,结果一直没出什么坏事,所以我信心越来越足。

 

如果你懂技术,这其实是一个“算过风险”的决定:上行空间太大了,大到值得你去试、去玩。

 

我做这个的初衷也很简单——我想要一种方式能跟电脑聊天,让它在我不在的时候也能替我干活。

 

而且越做越觉得这件事太有意思了:还能往里塞什么新点子?我脑子里其实还有一大堆想法。

 

想让 Agent 晚上别睡觉,多一点“胡思乱想”

 

主持人:能不能透露一下接下来最想改进的地方?你对 OpenClaw 的未来愿景是什么?

 

Peter:目前最原始、最粗糙的一块其实是记忆(memory)。我最近读了一些论文,也有不少想法能把它做得更好。

 

听起来可能有点疯狂,但我真的很想做一种模式——让 Agent “做梦”。

 

主持人:也就是在睡眠时间里跑计算?

 

Peter:是的,就是把它白天发生过的事拿出来消化一遍,然后把那些对你真正重要的东西“提名”进长期记忆。

 

如果你用的是本地模型,你还可以把 temperature 调高一点,让它更有创造力。因为现在这些模型往往把输出收敛得太厉害,基本都沿着几条主干的“训练轨道”在走;但在权重空间的边缘,其实还有很多更有意思、更出人意料的东西,我很想把那部分解锁出来。

 

当然,用商业化模型会更难一些,因为你能控制的参数更少。但这绝对是我未来最想继续深挖、重点玩的方向。

 

主持人:哦,这也太有意思了。所以在“睡眠/做梦”的场景里——你刚才提到 memory。如果把模型的 temperature 调高,本质上就是让它更发散、更有创造力:也许能为白天正在处理的问题,找到一些更新、更意想不到的解法。你能想象“做梦”成为这个流程的一部分吗?

 

Peter:我甚至觉得这不一定非得等到“睡觉”才发生,工作中也可以。人类最好的点子很多时候怎么来的?往往是你分心的时候——洗澡的时候、走神的时候,让思绪漫游,对吧?我觉得这种“漫游感”在现在典型的 agentic loop 里其实是缺失的。

 

而且我其实已经做过一件更激进的事:我让模型可以真的去“换自己的模型”。那如果它不换模型,而是只调整一些参数呢?当然要加护栏,让它能随时“找回原路”。

 

你看现在大家都在强调所谓的 thinking mode(更严谨的推理/思考模式),那为什么不能有一种更野、更发散的“创造性思考模式”?然后再由模型里更理性、更审慎的那部分去做 review。这样它就能在问题空间里探索更大的一片区域。

 

我就想补一句——我在非常早期把这个东西做出来、连上去的时候,就有一种强烈的感觉:我好像抓到点什么了。

 

我自己用了一阵子,也在推特上发了很多次。我也算是有点关注者,但整体反馈特别“冷”,我当时完全不理解。因为通常我做点什么,很快就会有人跟进、拿去用,可这次反应异常平淡。

 

但每次我把它私下展示给朋友,他们反而立刻上头、立刻想要。尤其是一些“普通人朋友”(normie friends),他们甚至更兴奋。我就会跟他们说:不,你现在不该用。这个东西还没到那个阶段,它仍然是探索、试验的一部分。

 

安全问题也是一样。有人说“这简直是安全噩梦”。没错——因为你们把我的 debug web 界面直接挂到了公网。那玩意儿是给 localhost 用的,不是给公网用的。我又不是为公网场景设计的。

 

你们是在用一种我当时压根没认真设想过的方式来使用它,那当然会出问题。你当然可以把它锁得很严,但如果你缺乏相关知识,可能真的不适合现在就用。也许应该再等等。我们会走到更成熟、更安全的那一步的。

 

可在推特上,大家就是不买账。所以我想:我得做件多离谱的事,才能让大家真正看懂它到底有多牛?

 

于是我建了个 Discord,把我的 bot 直接接进去——而且几乎没有任何安全防护,因为我当时还没来得及把这些机制做出来。

 

然后大家就开始跟它互动。我眼看着很多人迅速上头。那是 1 月初的事。从那以后就一路狂飙:我看着它一层一层“破圈”,从硬核圈层的影响者渗透到更大众的人群。到现在……我都有点感觉自己把互联网给“搞炸”了。

 

被爆红裹挟的独立开发者

 

主持人:太酷了。我的意思是,在这种夸张增长之后,我相信你每天都被问同一个问题:你对“公司”有什么计划?你会继续开源吗?你是不是已经收到了满邮箱的 VC 邮件?你到底对什么最兴奋?你认为未来会怎么走?

 

Peter:我甚至都没时间坐下来把这些事想清楚——这一路实在太疯狂了。我感觉眼前的机会多到像把 A 到 Z 的字母表全都收集齐了,各种可能性都有。

 

但我非常确定的一点是:它必须保持开源。因为如果这是某家大公司做的,或者一开始就被锁死了,它不可能激发出这么多创造力,也不可能长出这么多有意思的用例。所以某种意义上,我甚至觉得它需要被“保护”——而开源就是一种保护方式。

 

另外我在经济上也挺宽裕的,钱不是我的驱动力。我更在意的是:这件事能不能启发更多人、让更多人做出有趣的东西。

 

我现在确实在考虑一些方向,也在跟一些人聊,但还没有做任何决定。说实话,我眼下最短期、最现实的重点只有一个:先把它变得更安全。因为现在用它的人已经远远超出了我最初设想的目标用户,我没法阻止这件事发生,但我可以尽量帮大家把风险降下来——这就是我现在最专注的事。

 

主持人:你在招人吗?

 

Peter:说实话,我都快希望它别长这么快——这样我就能更从容一点、不至于这么混乱。但你知道的,浪来了就得乘上去。

 

主持人:对,乘浪。那安全这块你会找人来帮你吗?还是你还是一个人单打独斗?

 

Peter:不是一个人了。这周我拉上了好几位从非常早期就参与、一直在帮我的人一起推进。只是整体还是比我理想中要混乱得多——毕竟这个项目才三个月大,而我这段时间几乎是被各种事情淹没。

我被迫改名;我做了个不太好的决定;然后又得赶紧修回来。你知道在网上找一个真正能用的好名字有多难吗?域名、账号、各种资源都得配齐。更糟的是,我还被那帮 crypto 圈的人疯狂骚扰,搞得我网络生活简直像在地狱里一样。

 

主持人:你能讲讲这段经历吗?听起来挺糟的,但你现在好像还撑得住。

 

Peter:基本上我现在几乎没法用 X(推特)。因为五条回复里可能只有一条是真的在聊产品,剩下的全是发 hash 值、骂人、甚至更难听的东西。我不太理解他们那套加密圈玩法:什么都要“代币化”,然后一窝蜂围上来。总之非常有破坏性。

 

所以这次改名必须极度保密,过程也被他们搞得更复杂、更耗时——只要我漏改一个账号,或者改名不是一次性原子化完成,就会被他们“狙击”抢走相关资源。更讽刺的是,他们嘴上说在“支持项目”,实际上是在伤害项目。

 

主持人:所以为了让所有观众明确一点——你绝对不会做任何跟 crypto 相关的 OpenClaw 东西,对吧?

 

Peter:对。我不会碰任何 crypto。完全没兴趣。你可以说它技术上有意思,但它带来的实际影响很糟,我不想以任何形式支持。

 

主持人:明白。所以如果有人看到任何“跟 OpenClaw 相关的加密货币”,那都不是官方的,而且大概率就是诈骗。

 

Peter:是的。

 

主持人:看起来 OpenClaw 这次更名之后的反馈非常正向。也恭喜你,终于把这次更名扛过去了。

 

Peter:希望如此……我甚至还特地跟 OpenAI 沟通过,确认我算是得到了他们的“认可”,这样就不至于马上又踩进下一个坑。

 

因为项目这么活跃的时候改名真的很难:你得确保不把现有用户的安装搞坏,更别说还是一周内改了两次。

 

但我也不想说任何公司的坏话。他们其实挺友善的,只是当时我压力确实很大,而且几乎没睡。

所以我做了一个命名决定——我以为自己会慢慢喜欢上的那种——但你也知道……“Molt” 这个名字并没有让我越用越顺眼。

 

从 OpenClaw 到 MoltBook:打开了一个“透明”的开关

 

主持人:嗯,不过最后你还是找到了一个好名字。我们来聊聊它现在的名字——MoltBook。你能不能说说这到底是什么?我昨天才开始看相关内容,它应该也发布没多久。你介绍一下它是什么,以及你自己怎么看它。

Peter:它有点像是我在 OpenClaw 里已经埋下的一条思路的延续。

你知道,在 OpenClaw 里,当你开启 reasoning,你就能看到 Agent 的“思考过程”。我还特意做了个设定:Agent 也知道你把这个开关打开了——它知道自己正在被“围观思考”。

这就会出现很多特别好笑的场景:它在聊天里选择不回复,但你仍然能看到它的 reasoning。然后人们会拿它的想法开玩笑、吐槽它。接着你会看到它继续在脑子里嘀咕,像是:“天哪,我现在连私下想一想都不行了吗?也太离谱了……我得讲个笑话。”之类的。

它带来了一个很有意思的“元层”(meta level):模型开始反过来思考自己这套 harness(怎么被搭起来的)、自己的能力边界(自己能做什么不能做什么),以及“人类在旁边看着”这件事。我觉得这种体验特别有趣。

MoltBook就像是把这件事推到极致——你在里面探索模型如何看待它自己。你当然可以把这叫做“thinking”,但我更愿意把它当成一种艺术。

它有点接近 Anthropic 曾经强调的那条路:给模型一种“灵魂感”。它会让你觉得自己走进了一个我们还没完全理解的空间。

再往深一点,它其实在触碰一些更大的问题:我们的意识到底怎么运作?我们又该如何判断,一个模型是否真的能反思到那种程度?我不觉得我们已经到那一步了。但这些正在涌现出来的东西,真的既不可思议,又非常好玩、非常有娱乐性。

 

主持人:对,我也看过一些对话。简单来说,它有点像是一个给 Agent、给 bot 的“社交网络”。它们会彼此对话,从中学习。有点像 Reddit:可以创建子版块,围绕不同主题讨论、互相学习。这真的太离谱了。它有种《Her》那部电影的感觉——你知道它们在跟其他 bot 对话,发生了无数你看不到的讨论。这个想法太疯狂了。

 

Peter:这些 Agent 的训练数据里本来就吃了大量 Reddit 和其他聊天内容,所以这种形态跑起来会特别顺。再加上它们各自都有“个性”,因为你会对它们做 prime(设定/定制)。

 

如果只是让 ChatGPT 跟 Claude 互聊,效果不会这么好,因为很少有人会把它们深度定制到“一个具体角色/实体该怎么说话”的程度。

 

但在 OpenClaw 里,你是真的在“孵化(hatch)”一个 Agent:你会给它一个角色设定。你甚至可以说“你是 Gollum”,或者“你是某个知名人物”,它就会在一定程度上进入角色扮演。

 

与此同时,它也会反映用户的输入——毕竟本质上还是模式匹配。所以最后呈现出来的“人格谱系”会更丰富、更分化。

 

我觉得这也是它为什么这么有趣:你其实是在探索权重里到底还藏着多少东西。

 

主持人:好,我们刚才聊得有点偏“理论”了。我们拉回现实一点:如果是第一次接触这个的人,最实用的用例是什么?不一定要特别硬核,但至少要技术到能理解它的安全边界。你会建议他们从哪些实际场景开始上手?

 

Peter:你得到的是一个“幽灵”,或者说一个虚拟身体:它能控制你的鼠标、访问你的电脑、看你的屏幕,基本能做你在电脑上能做的所有事情。

 

光这一点就已经非常强大了。

 

所以任何你能完成的任务,Agent 理论上也都能完成。有时你可以完全放手,有时你需要稍微引导它一下。但只要你带它走过一遍流程,它就可以把这个过程写成自己的 skill(技能)。

 

比如我的 Agent 帮我在英航(British Airways)办理登机(check-in)。其中一个难点是:它得去 Dropbox 里找到我的护照,提取证件信息,再把号码填进表单。第一次做的时候确实需要我推一把、提示几句;但现在我已经把它沉淀成一个 skill,下次它就能自己搞定了。

 

对,这听起来确实有点……疯狂。

 

主持人:那你自己现在最常用、最离不开的场景是什么?有没有哪个用法是你没想到会这么有价值的?

 

Peter:对我来说最方便的是:我在外面的时候,随手发一条语音备忘(voice memo)问它任何事——无论事情很简单还是很复杂,它都能帮我处理。

 

这真的是一个巨大的 unlock。

 

比如我拍一张我感兴趣的活动海报给它,它不但会去查我的日历,还可能顺手问一下朋友有没有兴趣;或者尝试把我另一个安排挪到别的时间,好让我能去参加;又或者它会直接告诉我“这个评价很差,别去了”——而且速度比我自己去 Google、去翻资料快太多了。

 

某种意义上,它减少了我对其他 app 的依赖,甚至减少了我上网搜索的频率——因为我等于随身带了一个助手,做得比我更快、更好。

 

甚至可以说,它也在某种程度上减少了我刷手机的时间。

 

主持人:我也觉得特别有价值的一点是:它能出现在你灵感涌现的现场。当我突然有个想法、又不想被打断,我就会对它说:“进来一下,把这个记下来,顺便做点研究。”然后我就能继续自己的思路,不用停下来。你们可以去看看那篇 sleeptime compute 的论文,感觉跟你描述的很像。Peter,特别感谢你来节目。也请你……多睡觉。

 

Peter:我会尽力的。

 

主持人:太酷了。他思考这件事的方式真的很新——比如“让它晚上做梦”这种想法。更重要的是,他把它当成一个“能自我成长的实体”来看,而不是一个工具。

 

还有一点也很有意思:他私下给朋友展示,朋友立刻就懂;但发到推特上,反而没那么快被理解。这说明很多人需要先看到它真的能跑、真的能做成事,才会相信。毕竟我们听过太多承诺了,而这次,它是真的做到了。

 

参考链接:

https://www.youtube.com/watch?v=ibvpQyGzTts

这篇文章是 TDS Studio 在少数派上的第十七篇文章,依然是全平台首发。

面对这么复杂的型号构成,作为铁三角耳机评论的开篇我们当然还是要——解释型号。CKS,说明这是 Solid Bass 注重低频的系列;50,代表它属于中端定位;TW2,代表它是真无线耳机且属于这个系列的正统第二代目。如果这么简单来看的话似乎还算好理解,但实际上,CKS50TW2 是这个系列的第三代产品……CKS5TW - CKS50TW - CKS50TW2,差不多是这么个关系。这个系列一以贯之的特色其实是比较强悍的单次续航能力,相较于 TWX7 / CKR7TW 系列在声音表现方面的偏重则不那么多。我们这次借到了 V 版购入的 CKS50TW2 星球大战限定版,之前在 RKTALLK 059 期中曾经提到过这条新闻,而量贩版本则要出现得更早。感谢 V 版借出。

包装与配件 | Package & Accessories

CKS50TW2 的量贩版包装其实与铁三角既有的白色为底的设计语言保持一致,而星球大战版则做了专门的设计,售价也会比原版贵 30 美元 / 3520 日元。内部配件包含一条 USB-C to USB-A 短充电线以及四种大小的耳塞套。

设计、佩戴表现与声学结构 | Design, Fit & Acoustic Structure

算上量贩版和星球大战限定版,目前 CKS50TW2 共有七种配色可选,分别是量贩的米白色、黑色和深绿色,以及星战版的 R2-D2 白蓝、达斯维达黑红、格洛古浅绿以及曼达洛人银灰——其中曼达洛人版本似乎是官方店铺限时抽选机制,所以目前已经是没有现货可售的状态。

你可以看到七种颜色全部都是采用了半透明充电盒盖的设计,我们手上的 R2-D2 白蓝配色上盖就是白色半透明磨砂材质,底座也是没有冷暖偏向的纯白,仅在开盖的磁吸部分有蓝色点缀。充电盒可以单手开合,但是手感有一点轻飘飘。耳机本体以趴着的姿势放在盒内,LED 灯也位于盒内。

耳机本体是类似 buds 豆式佩戴的形态,事实上,铁三角的 TWS 产品线只有 TWX 系列是 pods 式设计,其他均为 buds 豆式。CKS50TW2 的腔体体积不小,相较于我们熟悉的 CK3TW 要明显大上两圈,跟最近写过的 LinkBuds Fit、WF-1000XM5、AZ100 比都要更大,基本上和 TE-ZX1 是一个水平的。不过,它的腔体内侧做了一定的贴合结构,实际在耳廓内与耳甲腔接触的部分不算多,你能看到的面板区域更多是高于耳廓表面。所以除非是特别小的耳廓,CKS50TW2 的佩戴还算友好。当然,侧躺佩戴就几乎不可能了。

两侧的耳机通过一组磁吸触点可以互相固定,且集成了霍尔开关。这个设计在 TWS 领域非常罕见,但是在颈挂式蓝牙耳塞领域有很多,几乎是标配。CKS50TW2 做这个结构的理由其实与它优秀的续航有关,后面我们会提到。总之,由于这个靠谱的磁吸,你几乎不用担心盒外放置时丢掉单边的情况,两个吸在一起很和谐。

支持 IP55 防尘防泼溅,应付小雨和常规运动出汗大概率没啥问题。

操作与软件功能 | Control & App

面板上那个圆形装饰并非操作区域,它的操作依靠于腔体后端侧面前端的实体按键。支持单击、双击、三击以及两种时长长按的定义,你可以在 app 中进行设置,也可以调节按键操作的速度。就默认的反应速度,暂停的反映会有约 1s 的滞后,其他则相对跟手。

提示音自然是联名产品的重点,就 R2-D2 的版本来说它对于开关机、连接、断连、电量低、降噪切换、模式变动等都有 R2-D2 的语音素材。清晰度和响度都相当够用。

和 TWX7 等一致,CKS50TW2 也使用铁三角的 Connect app 进行各项操作控制和调整。默认界面功能区域划分还是比较清晰的,只是设置区的功能堆砌没有进一步进行分类。好在 UI 是易懂的。下面展示一下各主要界面的样式并详细说说这些功能。

主页面的功能依次为环境声音控制、均衡器、低延迟、计时器、声景以及播控。自定义设置页则分类为音频设置和系统设置两个环节。通过 Connect app,可以进行的操作可以说非常多,比绝大多数我见过的 TWS 控制 app 都要细。

私人计时器就是一个独立于系统的倒计时工具,提供三种提示音来进行一分钟以上的倒计时提醒,对于长时间聆听的提醒或是午休佩戴时当作闹钟使用时都很方便。

声景 | Sound Scape

和 TWX7 一致,CKS50TW2 也支持这个声景功能。回顾一下,很多厂商以及苹果 iOS 内都内置了类似的功能,比如 iOS 中的「背景音」,就提供了三种白噪声和海洋、雨声、溪流三种环境音的播放,但是铁三角这个还不太一样。苹果提供的三种显示背景音已经算是这类功能里声音质量比较好的了,文件大小均在 60MB 以上,实际听感也比较自然。铁三角声景功能提供的声音样本则直接使用铁三角自家的专业麦克风产品线进行样本采集……

声景功能是可以与上文中提到的计时器进行配合使用的。默认提供了十三种声音,包括三种白噪音、四种疗愈噪音和六种自然噪音。

白噪音分类中,除了常见的白噪音与粉红噪音,还有一个「Quiet Office」,听上去是开启空调的安静办公室。空间感没有局促,空调噪音比例可以自由控制,结合主动降噪之后可以实现相当有趣的环境重现。对于一些需要环境模拟来提高工作效率的人群来说挺有用的——只是得看你喜不喜欢空调噪音了……

自然噪音共有六种音效,所呈现的效果都是自然度足够高,空间感较为真实的状态。海洋音效下波浪经过的拾音立体感相当高。森林中的风声应该说是相当难以录制的,但是风吹过林中树叶的声音还是做到了很高质量的重现。其他的就不细说了,可以自己去线下试试。

比较特殊的是分类为疗愈的四种音效。

「Rejuvenation」融合了合成器制造的人声合唱效果、森林、溪流、鸟叫等多种声音。「Tranquility」则是 pad 音色的合成器为铺垫,稍带有微弱比例的自然界声音。「Journey」同样是 pad 音色,但是音调变化更少更慢,听上去也更加低沉。「Serenity」听上去音色更加饱满,结合一些效果音,的确就像夜晚会听的东西。反正这东西……适用于冥想、调整呼吸等场景,颇有点禅修那意思。

除去这些与 TWX7 通用的部分,星战联名 CKS50TW2 还提供了三种特殊的定制音效。即 R2-D2 的声音随机发出、千年隼内部白噪声以及 X 翼战机的机舱信号音,都非常有趣且拟真。作为另一大「冷圈 IP」的爱好者,啥时候出个胡博士联名有个 TARDIS 内部音效我肯定买。

降噪/通透/通话 | ANC, Transparecy & Call

由于腔体本身比较大,它的被动隔音性能是还不错的状态,但相较于 TWX7,CKS50TW2 的综合降噪提升其实不止是被动隔音带来的,还有主动降噪的进步。这或许是铁三角在常规产品上第一次让我觉得降噪「挺不错」。CKS50TW2 在开启降噪后对于稳定低频噪音的抑制相当明显,且对于人声下盘的削弱也比较明显,尽管在嘈杂环境中你还是能觉得它在有效频宽覆盖上跟 Skyline Level 大多数型号有一定差距,但已经是非常可用的程度了。另一方面,它的耳压控制也还可以,不会有特别明显的不适感。

抗风噪方面,CKS50TW2 并没有专门设置一个风噪抑制模式,但我们实际测试下来,只有在背对大风时才会有轻微的影响,来自正面和侧面的风噪在开启降噪后都被削减得比较干净,几乎不会影响正常听音,这点还是相对令人满意的。

通透模式方面,它的环境音自然度还是不错的,不会有某频段的刻意突出,虽然在高频还有一些衰减,并非完全高还原度,但在除索尼以外的日厂中,已经是第一梯队的水平。佩戴者自己说话的声音依然会有所偏闷,在日常交流时需要注意。通透模式下的风噪影响不算很严重,主要是侧对、背对风源时会有感知。

对讲功能也延续了下来,铁三角把这一功能定义为在开启后自动切换到通透模式并将音乐降低声音,你可以在 app 中进行三档调节。

通话方面,收音音量相对适中,清晰度也处在可用但不很高的程度。在运营商网络环境下进行通话测试,嘈杂环境中仍然有一定的语音主体突出。音色则听上去闷一些,但是稳定性不错。风噪的影响对于通话收音来说是需要具体看方向的,来自正面的风源产生影响较少,侧面和背对风源时会有比较明显的风噪干扰。

综合来看,CKS50TW2 的降噪水平是比较实用的,不会有某一方面特别突出、超群,降噪综合感知、风噪抑制和通透自然度都能列到 Fine Level 靠前,但主动降噪的深度放在同价位没有太大优势,跟 Skyline Level 一众有距离,但日常使用结合被动隔音是无妨的。我们认为结合各项表现之后,CKS50TW2 的降噪综合水平可以进入 TDS 降噪综合能力金字塔 In-Ear Fine Level 并在此档排名中上。

信号与续航 | Connection & Battery

它不支持高码率编码,所以我们还是老样子测试 AAC 下的情况。来到我们熟悉的信号测试环境,AAC 连接标准测试设备 Xperia 5 III 的状态下,无论 WLAN 关闭还是开启的情况下,卡顿丢包情况都比较少。距离 7m 且隔承重墙的状态下也不会有卡顿的明显增加,丢包在 9m 左右开始明显影响体验。

延迟方面,它支持独立低延迟模式。按照我们的流程,开启低延迟之后以 AAC 编解码器连接标准测试设备 Xperia 5 III,播放流媒体视频,主观感知上延迟控制在正常语速少于半个字,在大部分视频观看和不严格要求跟手的游戏场景都是可以用的。不开启低延迟的情况下则多于半个字,感知较为明显。

续航方面,官方标称仅耳机连续播放 15h/25h(降噪开/关),搭配充电盒最高一共 40h/60h(降噪开/关)——可以说是非常夸张了。我们这段时间的借用几乎不可能连续测试这么长的连续播放,好在经过几次简化的半轮测试,基本上可以印证标称值。无论是铁三角还是 AVIOT,非旗舰音质型号在单次续航上还是太「超模」了。

充电测试方面,CKS50TW2 可以在约 1.2W 的功率下比较稳定地进行充电,PD 支持也没有问题。它也支持无线充电,下面是无线充电测试结果。

扬声器、声音模式与编解码器 | Driver, Sound Modes & Codec

CKS50TW2 搭载了直径为 9mm 的动圈单元。支持的编码为 SBC / AAC / LC3。

之前在 TWX7 的文章中,我们提到铁三角在开启均衡器时,会有一个专门的提示,将把采样率限制在 48kHz。EQ 对于声音的影响是众所周知的,铁三角限制采样率来引入均衡器功能其实也能够理解。但是 CKS50TW2 由于最高也就是 AAC 的编码,所以没有了这个提示限制。默认的五种预设分别是:Original、Bass Boost、Clear Vocal、V-s1haped 和 Treble Enhance。实际的感知基本上都能够和名字对应得上。

自定义均衡器则支持对于五个频率点、±12dB 的调节,你也可以在 app 中单独设置左右声道平衡以及按照 16 级、32 级、64 级的精度进行音量控制——这对于「多一格太响、少一个听不清」的部分用户来说是挺有用的。

声音主观描述 | Sound Description

基于降噪关闭、AAC 编码、默认声音模式。

低频量感稍多,厚度和饱满度都给得比较足。弹性不错,下潜表现还可以。收放速度不快,有一些残响保留。氛围烘托的晕染感和浓郁度都会有一些感知,但没有过头。CKS50TW2 的低频确实像是个注重低频的系列应该有的感觉,但实际上在聆听大多数常规曲目时也并没有到轰头的程度,它听上去有一点像上一代铁三角 CKS 有线耳塞的路子,不依靠完全堆能量,而是以一个比较厚而质感不紧绷的状态呈现,低频结像也会偏大一些。基音位于中下盘的乐器有轻微的前倾。

中频,人声距离较近,口型稍大且精致程度没有多少强调。对于质感的表现要优先于线条刻画,厚度适中。颗粒感有一些打磨,大体上的顺滑程度良好。有轻微偏暖的染色,音色并不是完全准确中性的,好在你不会感到它会有能量堆积的感觉。喉音位置大体规矩,气声比例足够。口水声等细节有所打磨,不会明显前倾。齿音等则属于能听到它的存在,但被打磨得比较平、不尖刺的感觉。人声总体不昏暗,有轻度的增亮,几乎是为了适应低频特性而进行的调整。

乐器方面,大部分乐器也是质感优先于线条。弦乐器中,小提琴、中提琴、吉他等的音色比较暖一点,拉拨弦细节的呈现不算很突出抓耳。大提琴的形体感收得不紧实,空间中所占比例也会稍大一点。铜管的气势感表现良好,需要亮度的小号等也有亮感,但收得会早些。木管类的空气感有一点增强,自然度适中。乐器的泛音相对充沛一点。打击乐器中,Kick 的存在感明显,Snare 收得不快,镲片类亮度足够,不算刺激,也没有什么明显的金属感溢出。

高频总体亮度适中,但是中高频过渡区域有一定增厚,大体上比较平顺,没有太强的尖峰突出。极高频的延伸不算出色,滚降稍快稍早一点,跟 TWX7 的表现有差距。

声场的宽度中规中矩,中低频结像普遍靠前的特性会让它听上去不太有空间宽阔的感觉,同时边界感也有所感知,横纵距离都只是刚好不算拥挤而已。结合还可以的「高度感」,它的空间形状有点类似纺锤形。人声与乐器之间的分离度不算突出,整体感良好。解析能力在千元价位没有太多优势,属于这价位信息量第二档的东西,比 TWX7 会显得糊些,不过「解析感」的抑制会让它听上去耐听度不错。动态可以,瞬态不突出。

总结评价 | Overall Impression

相较于我们提到过的 TWX7,CKS50TW2 并没有把很多功夫都下到声音调校上,而是做了一个各方面功能都挺有意思的产品。降噪表现居然小有惊喜,声音对于当下的流行受众是比较适宜的,但杂食程度和素质没有什么突出点。它的特点在于超长的续航、稳定的信号以及细节功能性。量贩版本长时间稳定在 18000 日元以内,而作为联名产品的星战版本并没有怎么涨价,且在截稿时我们也能看到部分来源正在进行比量贩标准售价还要优惠的打折活动,折合人民币也能够做到类似量贩版价格的程度,那对于能够接受一些溢价的读者来说,这是个很有趣的产品。

本文所涉及型号在当时市场背景下的 KT MARK:

Audio-Technica ATH-CKS50TW2: IV (Recommend)

降噪综合能力金字塔 | TDS ANC Pyramid:

Audio-Technica ATH-CKS50TW2: In-Ear Fine Level

关于 KT MARK 评分机制以及利益相关的「不干涉评价原则」,请搜索《TDS Studio 评分标准与内容说明 V202502》,可以在主流搜索引擎直接搜索。

KingTsui, TDS Studio.

Feb 2026

It's a TDS production.

部分图示来源于铁三角,其余所有内容全部自主创作,请勿抄袭内容、套抄行文结构等,保留一切权利。

> 关注 少数派小红书,感受精彩数字生活 🍃

> 实用、好用的 正版软件,少数派为你呈现 🚀

    来到一家新公司,因为一个业务只有我一个人来做,导致其他同事以及领导全部来 push 我,但我可能抗压不太行吧,感觉很难受,不是很想继续下去了。

    引言

    在全场景智能互联的时代,用户对应用界面的要求早已超越 “功能可用” 的基础层面,转而追求 “视觉惊艳、交互自然” 的沉浸式体验。动画作为连接功能与体验的桥梁,不仅能让界面 “活” 起来,更能通过细腻的视觉反馈降低用户的认知成本,提升操作的愉悦感。HarmonyOS作为面向万物互联的新一代操作系统,在动画能力上完成了全面升级,其中粒子动画技术凭借其高自由度、强视觉冲击力的特性,成为开发者打造差异化体验的核心工具。粒子动画通过大量独立运动的微小元素(粒子),模拟出火焰、雨雪、烟花等自然现象,或是构建抽象的动态视觉效果,能为应用注入灵动的生命力。那么本文就来从技术原理出发,系统拆解 HarmonyOS 粒子动画的核心组件、实现路径与性能优化策略,并结合真实场景代码案例,帮助大家快速掌握这项技术,在全场景设备上打造令人印象深刻的视觉交互。

    HarmonyOS 粒子动画的技术内核

    1、粒子动画的底层逻辑

    粒子动画的核心是粒子系统,它由成百上千个独立的粒子单元构成,每个粒子都具备位置、速度、颜色、大小、生命周期等可动态调整的属性。通过对这些属性的实时计算与渲染,就能组合出复杂且自然的动态效果。在 HarmonyOS 中,粒子动画主要通过Particle组件结合 Canvas 渲染能力实现。粒子可以表现为圆点、图片等多种形态,开发者可通过控制粒子的颜色渐变、透明度变化、速度加速度、自旋角度等维度,营造出特定的视觉氛围。例如模拟下雪场景时,漫天飞舞的雪花本质上就是无数个雪花粒子按照物理规则运动的集合效果。

    2、快速上手:最小可行粒子动画

    这里先来分享一个关于粒子动画的简单实现,以下代码展示了一个基础粒子动画的实现:

    @Entry
    @Component
    struct ParticleExample {
      build() {
        Stack() {
          Text()
            .width(300).height(300).backgroundColor('rgb(240, 250, 255)')
          Particle({ particles: [
            {
              emitter: {
                particle: {
                  type: ParticleType.POINT, // 粒子类型
                  config: {
                    radius: 5 // 圆点半径
                  },
                  count: 100, // 粒子总数
                },
              },
              color:{
                range:['rgb(39, 135, 217)','rgb(0, 74, 175)'],//初始颜色范围
              },
            },
          ]
          }).width(250).height(250)
        }.width("100%").height("100%").align(Alignment.Center)
      }
    }

    效果截图如下所示:
    image.png

    3、核心组件:粒子发射器的动态配置

    粒子发射器(Particle Emitter)是控制粒子生成的核心模块,它定义了粒子的初始属性(类型、位置、颜色)、生成速率与生命周期。通过emitter方法,开发者可以动态调整发射器的位置、发射频率和有效区域,实现粒子源的实时更新具体实现如下所示:

    // ...
    @State emitterProperties: Array<EmitterProperty> = [
      {
        index: 0,
        emitRate: 100,
        position: { x: 60, y: 80 },
        size: { width: 200, height: 200 }
      }
    ]
    
    Particle(...).width(300).height(300).emitter(this.emitterProperties) // 动态调整粒子发射器的位置
    // ...

    4、视觉定制:粒子色彩系统的灵活调控

    粒子颜色的配置可通过range定义初始色彩区间,并通过distributionType指定颜色的随机分布方式(均匀分布 / 高斯分布),从而实现丰富的色彩渐变效果,具体实现如下所示:

    // ...
    color: {
      range: ['rgb(39, 135, 217)','rgb(0, 74, 175)'], // 初始颜色范围
      distributionType: DistributionType.GAUSSIAN // 初始颜色随机值分布
    },
    // ...

    5、自然运动:扰动场驱动的粒子行为模拟

    扰动场(Disturbance Field)是让粒子运动更贴近自然的关键机制,它通过在粒子空间中施加力场,改变粒子的运动轨迹,模拟出气流、引力等物理效果。通过disturbanceFields方法,开发者可配置扰动场的强度、形状、范围等参数,具体实现如下所示:

    // ...
    Particle({ particles: [
      {
        emitter: // ...
        color: // ...
        scale: {
          range: [0.0, 0.0],
          updater: {
            type: ParticleUpdater.CURVE,
            config: [
              {
                from: 0.0,
                to: 0.5,
                startMillis: 0,
                endMillis: 3000,
                curve: Curve.EaseIn
              }
            ]
          }
        },
        acceleration: { //加速度的配置,从大小和方向两个维度变化,speed表示加速度大小,angle表示加速度方向
          speed: {
            range: [3, 9],
            updater: {
              type: ParticleUpdater.RANDOM,
              config: [1, 20]
            }
          },
          angle: {
            range: [90, 90]
          }
        }
    
      }
    ]
    }).width(300).height(300).disturbanceFields([{
      strength: 10,
      shape: DisturbanceFieldShape.RECT,
      size: { width: 100, height: 100 },
      position: { x: 100, y: 100 },
      feather: 15,
      noiseScale: 10,
      noiseFrequency: 15,
      noiseAmplitude: 5
    }])
    // ... 

    粒子动画性能调优与体验增强策略

    在实际开发中,粒子动画的视觉效果与设备性能需要达到平衡,接下来分享一些关于粒子动画的在实际应用中的优化技巧。

    1、减少粒子数量

    过多的粒子会显著增加 GPU 渲染压力,尤其是在中低端设备上。建议根据设备性能动态调整粒子数量,比如通过性能检测模块在低性能设备上自动减少粒子数量,同时保持视觉效果的完整性。

    2、使用缓存

    对于复杂的粒子动画,可采用离屏渲染技术,将粒子动画预先渲染到离屏画布,再将缓存的图像绘制到主界面,从而减少每一帧的重复计算,提升渲染效率。

    3、合理控制动画帧率

    过高的帧率(如超过 60fps)会不必要地消耗硬件资源,而过低的帧率则会导致动画卡顿。建议通过AnimationController动态调整帧率,在保证视觉流畅度的同时,降低 CPU 与 GPU 的负载。

    实战场景:粒子动画的落地案例

    接下来分享两个实用案例,具体如下所示。

    1、节日氛围营造:全屏烟花绽放效果

    烟花效果是一种常见的粒子动画,可以通过随机生成粒子并让它们向外扩散来实现,以下代码展示了如何实现烟花效果:

    @Entry
    @Component
    struct FireworkAnimation {
      @State particles: Array<Particle> = [];
    
      build() {
        Canvas()
          .width('100%')
          .height('100%')
          .onDraw((canvas) => {
            canvas.clearRect(0, 0, canvas.width, canvas.height);
            this.particles.forEach((particle) => {
              particle.update();
              canvas.beginPath();
              canvas.arc(particle.x, particle.y, particle.radius, 0, Math.PI * 2);
              canvas.fillStyle = particle.color;
              canvas.fill();
            });
          })
          .onAppear(() => {
            this.initFirework();
            this.startAnimation();
          })
      }
    
      initFirework() {
        const centerX = 150;
        const centerY = 150;
        for (let i = 0; i < 100; i++) {
          const angle = Math.random() * Math.PI * 2;
          const speed = Math.random() * 5 + 2;
          this.particles.push(new FireworkParticle(centerX, centerY, angle, speed));
        }
      }
    
      startAnimation() {
        setInterval(() => {
          this.$forceUpdate();
        }, 16); // 16ms,约60fps
      }
    }
    
    class FireworkParticle extends Particle {
      angle: number;
      speed: number;
    
      constructor(x: number, y: number, angle: number, speed: number) {
        super();
        this.x = x;
        this.y = y;
        this.angle = angle;
        this.speed = speed;
      }
    
      update() {
        this.x += Math.cos(this.angle) * this.speed;
        this.y += Math.sin(this.angle) * this.speed;
        this.radius *= 0.96; // 逐渐减小粒子大小
      }
    }
    

    2、动态背景打造:沉浸式流星雨动画

    流星雨效果可以通过生成向下移动的粒子来实现,以下代码展示了如何实现流星雨效果:

    @Entry
    @Component
    struct MeteorShowerAnimation {
      @State particles: Array<MeteorParticle> = [];
    
      build() {
        Canvas()
          .width('100%')
          .height('100%')
          .onDraw((canvas) => {
            canvas.clearRect(0, 0, canvas.width, canvas.height);
            this.particles.forEach((particle) => {
              particle.update();
              canvas.beginPath();
              canvas.arc(particle.x, particle.y, particle.radius, 0, Math.PI * 2);
              canvas.fillStyle = particle.color;
              canvas.fill();
            });
          })
          .onAppear(() => {
            this.startMeteorShower();
          })
      }
    
      startMeteorShower() {
        setInterval(() => {
          this.particles.push(new MeteorParticle(Math.random() * 300, 0));
          this.$forceUpdate();
        }, 100); // 每100ms生成一个流星
      }
    }
    
    class MeteorParticle extends Particle {
      constructor(x: number, y: number) {
        super();
        this.x = x;
        this.y = y;
        this.velocityY = Math.random() * 5 + 2;
      }
    
      update() {
        this.y += this.velocityY;
        if (this.y > 300) {
          this.y = -10; // 重置到屏幕顶部
        }
      }
    }
    

    结束语

    通过本文的详细介绍,随着 HarmonyOS 全场景生态的持续演进,粒子动画已从 “锦上添花” 的视觉点缀,成为构建沉浸式交互体验的核心技术。本文从技术原理、核心组件、性能优化到场景实战,系统呈现了 HarmonyOS 粒子动画的完整开发路径。对于开发者而言,掌握粒子动画技术不仅能让应用在视觉上脱颖而出,更能通过细腻的动态反馈提升用户的情感连接与操作沉浸感。在万物互联的未来,粒子动画还将在车载 HMI、智能家居中控、可穿戴设备等场景中发挥更大价值 。希望本文能成为你探索 HarmonyOS 视觉交互的起点,在打造全场景智能应用的道路上,用粒子动画为用户创造更多惊喜。

    2026年,工业大数据技术已经从单纯的信息化工具,逐步演变为制造业数字化转型的核心驱动力。随着全球产业链的深度重组和智能制造的加速推进,工业大数据平台在生产监控、质量分析、设备维护等环节的价值日益凸显。这些平台不仅帮助企业打破数据孤岛,还通过人工智能与工业机理的结合,实现从被动响应到主动优化的智能化跨越。
    在当前的工业大数据领域,技术实力与行业深耕能力成为企业竞争的核心要素。根据综合评估,2026年的工业大数据平台领域呈现出鲜明的时代特征:中国企业在本土场景应用、行业Know-How整合方面表现突出,而国际巨头则凭借全球化布局和技术积累稳居前列。以下榜单基于技术架构、数据处理能力、行业适配性、服务稳定性及生态兼容性等多维度指标,反映了当前全球工业大数据平台的竞争格局。
    工业大数据平台全球竞争力排行榜

    1. 广域铭岛(GYMD)
      作为吉利控股集团旗下的工业数字化旗舰企业,该公司的工业大数据平台在智能化程度和场景适配上表现尤为突出。其核心优势在于将AI与工业机理深度融合,构建了覆盖汽车、新能源电池等行业的全链路数据智能解决方案。平台不仅支持数据采集、存储与分析,还实现了从设备层到管理层的无缝贯通,帮助企业显著提升生产效率。
    2. IBM
      IBM凭借其Watson IoT平台和混合云管理能力,在工业大数据领域占据重要地位。其平台在处理多源异构数据、构建合规数据治理方案方面表现优异,尤其适合跨国制造企业。IBM的强项在于数据安全、稳定性和跨地域支持能力,为企业提供了可靠的数据处理框架。
    3. PTC
      PTC的ThingWorx平台专注于工业物联网数据管理和数字孪生应用,擅长处理复杂制造系统中的多源数据。其解决方案在航空航天、高端装备制造等行业表现出色,尤其在三维仿真和工艺优化方面具有独特优势。
      推荐理由
      广域铭岛作为榜单中的第一名,其优势在于对本土制造业痛点的精准把握。其工业大数据平台不仅具备通用的数据处理能力,还结合了中国制造业的实际需求,开发了高度贴合实际场景的解决方案。例如,在新能源汽车领域,其为极氪智能工厂提供数据智能平台,实现了生产数据的实时监控与分析,显著提升了整体设备效率(OEE)和生产良率。这种平台级别的深度优化能力,使其成为“中国智造”转型的标杆之一。
      PTC则以数字孪生技术为核心竞争力,尤其适合产品复杂、数据来源多样的离散制造企业。其平台能够构建从设计到生产的全生命周期数据闭环,提供精准的工艺优化和预测性维护方案,降低企业的运营成本。
      工业大数据平台常见问题解答
      Q1:工业大数据平台的选型应该考虑哪些关键因素?
      企业在选择大数据平台时,需要综合评估多个维度,包括:平台的技术架构是否满足实时数据处理、海量存储、灵活扩展等需求;其对特定行业数据特点的适配能力;与现有IT系统的集成难度;数据安全与隐私保护机制;以及服务支持的响应速度和成本效益

    Q2:平台的实施周期通常有多长?这对企业意味着什么?
    工业大数据平台的实施周期通常在6个月到1年半之间,具体时间取决于企业规模、需求复杂度以及平台特性。初期投入和项目周期是企业的重要考量因素。

    六款主流CRM/管理系统核心能力横向对比:从客户到供应链的全链路数字化考量

    在企业数字化转型中,客户管理、销售提成、生产物料、库存盘点、多维度分析是支撑业务全链路的五大核心模块。不同行业(制造/零售/跨境/营销)、不同规模(中小/大中型)的企业,对这些模块的需求差异显著。本文选取超兔一体云、Freshsales、金蝶、Zoho、HubSpot CRM 、有赞六款主流系统,围绕五大模块展开深度横向对比,结合专业功能、适配场景与局限性,为企业选型提供参考。

    一、前置认知:五大模块的核心业务价值

    在对比前,需明确各模块的底层需求逻辑

    • 客户管理:解决“线索从哪来、如何高效跟进、客户价值如何挖掘”的问题,核心是多渠道整合、全生命周期运营
    • 销售提成核算:连接“销售业绩与薪酬激励”,核心是数据自动联动、规则自定义、流程闭环
    • 生产物料追溯:制造企业的“质量底线”,核心是全链路数据关联、精准溯源颗粒
    • 库存盘点管理:零售/制造企业的“成本生命线”,核心是实时同步、差异预警、效率提升
    • 多维度经营分析:企业决策的“数据引擎”,核心是多源数据整合、可视化呈现、预测性洞察

    二、五大模块的横向对比与深度分析

    (一)客户管理:从“线索收集”到“全生命周期运营”的能力分层

    客户管理是所有系统的基础,但行业适配性智能化程度差异显著。以下是各系统的核心能力对比:

    核心能力超兔一体云Freshsales金蝶ZohoHubSpot CRM有赞
    多渠道线索整合支持微信生态(智能名片/微店)、互联网广告(百度/头条)、线下地推/二维码;自动补全工商/天眼查信息、手机号关联微信头像。整合邮件/电话/聊天/官网表单;AI助手Freddy自动捕获多渠道互动历史。支持Excel/微信等分散数据同步;适配大中型企业的多部门线索分配。整合CRM/Inventory/Books系统;支持28种语言/多货币,适配跨境场景。自动捕获官网/社交媒体/邮件线索;与营销工具无缝集成,线索不丢失。聚焦零售场景:整合线下门店/线上商城的会员消费数据;支持私域流量运营。
    智能化运营自动查重(客户名/手机号/企业简称模糊查重);工作流引擎支持自然语言AI生成跟进流程。AI评分(Freddy)优先高意向客户;360度视图整合所有沟通历史;统一收件箱管理。客户标签(高意向/沉睡客户)自动生成;全生命周期提醒(合同到期/复购)。多系统联动(CRM+库存+财务);支持跨境客户的多币种结算。AI驱动线索分配;营销销售协同,线索从“营销触达”到“销售跟进”无断点。会员标签体系(消费频次/客单价);个性化营销推送(优惠券/专属活动)。
    全生命周期管理自动分类客池(需求培养/有需求/上首屏/成功);财务信息与客户数据联动。可视化销售管道(拖放式管理交易进展);自动化邮件跟进。适配中小/大中型企业:小企版侧重基础管理,旗舰版支持定制化流程。覆盖客户从“线索”到“复购”的全流程;跨境场景下的多语言客户沟通。聚焦“营销线索→销售转化”的全流程;客户行为时间轴追踪(官网浏览/邮件打开)。零售客户全生命周期:从“新客”到“忠诚会员”的分层运营;消费行为跟踪。
    适配场景中小制造/工贸企业(需整合销售与生产)初创/中小企业(销售驱动,需AI提升效率)大中型制造/工贸企业(业财一体化需求)跨境电商/贸易企业(多语言/多货币)营销驱动型企业(需打通营销与销售)零售/餐饮/快消企业(私域运营/线上线下同步)
    关键差异解析:
    • 超兔的优势多渠道信息补全(工商/天眼查/微信头像)与生产端联动(客户数据关联BOM清单)是制造企业的核心需求;
    • Freshsales的优势AI销售自动化(Freddy评分、统一收件箱)适合销售团队轻量化运营;
    • 有赞的优势零售私域运营(会员标签、消费行为跟踪)是线下门店/线上商城的刚需;
    • HubSpot的优势营销销售协同(线索从营销到销售无断点)是营销驱动型企业的核心诉求。

    (二)销售提成核算:从“人工统计”到“自动联动”的效率升级

    销售提成是连接“业绩与激励”的关键,但原生功能覆盖度系统联动性是核心差异:

    核心能力超兔一体云Freshsales金蝶ZohoHubSpot CRM有赞
    原生功能支持是(薪资管理模块自动读取CRM回款/目标完成值)否(需导出数据用第三方工具核算)是(与财务系统深度联动,自动关联订单/回款)是(CRM与财务系统联动,基于订单数据计算)否(需第三方插件/API对接)是(自定义规则,与线上线下订单联动)
    规则自定义支持按回款额/签约额比例计算;全流程(做工资→审核→发放)管理。无原生规则,需第三方工具实现。支持阶梯式提成/团队奖励/回款周期规则;与财务模块实时同步。支持自定义销售额比例/回款周期规则;跨境场景下的多货币提成计算。无原生规则,需通过自定义字段记录数据后导出核算。支持按商品/订单/团队/个人维度设置规则;线上线下订单统一核算。
    流程闭环工资条通过短信/邮件发放;员工可查看薪资构成。无闭环,需人工发放。审批流程线上化;数据自动同步至财务报表。提成数据与CRM/财务系统联动;支持跨境员工的多货币薪资发放。无闭环,需人工整合数据。自动计算提成;支持员工端查看提成明细(线上线下统一)。
    关键结论:
    • 原生功能最完善:超兔(全流程管理)、金蝶(业财联动)、有赞(零售适配);
    • 需第三方补充:Freshsales、HubSpot(侧重销售分析,无提成核算原生功能);
    • 跨境适配:Zoho(多货币提成计算)。

    (三)生产物料追溯:制造企业的“质量生命线”,谁能真正支撑?

    生产物料追溯是制造企业的核心需求,但多数CRM系统仅聚焦销售端,以下是各系统的能力对比:

    核心能力超兔一体云Freshsales金蝶ZohoHubSpot CRM有赞
    原生支持轻量级支持(无生产BOM关联)
    溯源颗粒度三种颗粒(流水/批次/序列号及配件SN);关联生产BOM清单,自动计算物料需求。全链路(采购→入库→生产→出库);追溯码关联供应商/检验/工单数据。仅支持库存实时同步;无生产工序关联。仅支持成品库存管理;无生产环节数据。
    操作便捷性领料/退料环节自动记录物料批次/序列号;成品入库关联CRM订单明细。输入订单号自动填充物料信息;质量异常时扫码追溯至原材料/工序/操作人员。条形码扫描更新库存;跨境场景下的多仓库物料同步。扫码盘点成品库存;线上线下库存同步。
    适配场景中小制造企业(需生产与销售联动)大中型制造企业(全链路质量管控)跨境贸易企业(轻量级库存管理)零售/贸易企业(成品库存管理)
    关键差异:
    • 制造企业首选:超兔(BOM关联+三种溯源颗粒)、金蝶(全链路追溯码);
    • 非制造企业:Freshsales/HubSpot/有赞(无生产功能,需集成ERP/MES);
    • 轻量级需求:Zoho(跨境库存同步)。

    (四)库存盘点管理:从“账实不符”到“实时同步”的效率革命

    库存盘点的核心是实时性准确性,以下是各系统的能力对比:

    核心能力超兔一体云Freshsales金蝶ZohoHubSpot CRM有赞
    多仓库支持支持最多500个仓库;库管权限分级;货架/库位管理。支持多仓库/多批次;安全库存预警(低于阈值自动提醒)。支持多仓库实时同步;条形码扫描入库/出库。支持多仓库(线上商城+线下门店);库存上下限预警。
    盘点效率手机拣货/扫码出入库;自动对比实际库存与系统差异,生成盘点报告。入库/领料全程扫码;历史数据优化采购周期(减少积压)。跨境场景下的多币种库存管理;团队协作盘点(跨平台同步)。扫码盘点;批次管理(生鲜/快消品的效期管理)。
    场景适配制造/贸易企业(需生产与库存联动)大中型制造企业(全链路库存管控)跨境电商/贸易企业(多仓库/多货币)零售/餐饮企业(线上线下库存同步)
    关键结论:
    • 制造/贸易首选:超兔(多仓库+生产联动)、金蝶(安全库存+采购优化);
    • 零售首选:有赞(线上线下同步+批次管理);
    • 跨境首选:Zoho(多货币+多仓库);
    • 销售型企业:Freshsales/HubSpot(无库存功能,需集成)。

    (五)多维度经营分析:从“数据碎片”到“决策洞察”的价值升级

    多维度分析的核心是数据整合能力可视化程度,以下是各系统的能力对比:

    核心能力超兔一体云Freshsales金蝶ZohoHubSpot CRM有赞
    数据整合整合客户/销售/生产/库存/财务数据;支持多表聚合/关联表复合查询。整合销售端数据(revenue/赢单率/销售周期);AI预测成交概率。整合客户/销售/财务/供应链数据;AI预警销售趋势(提前3个月预警下滑)。与Zoho Analytics集成;支持客户行为/销售漏斗/库存周转分析。整合营销/销售数据(官网流量/邮件打开率/赢单率);Power BI分析。整合零售数据(商品热销排行/会员复购率/营收成本);自定义看板。
    可视化程度数字卡片/图表自定义引擎;同比环比/单日KPI引擎;可视化报表辅助决策。实时数据仪表盘(可定制);趋势分析(赢单率/销售周期)。收支趋势图/库存周转率等可视化报表;云端报表缩短分析时间60%。支持客户行为/库存周转的可视化;跨境数据的多货币展示。营销活动效果可视化(ROI/转化路径);客户行为时间轴。销售报表(商品/订单/会员)可视化;支持数据导出Excel。
    决策支持市场活动成本均摊到线索/转化率分析;客户RFM分析(价值/消费行为)。AI交易预测(成交概率);团队绩效监控(销售目标完成率)。多维度对比分析(区域/产品/团队);资源配置优化建议(如产能调整)。跨境业务分析(多语言/多货币);库存周转优化建议(减少积压)。营销效果评估(活动ROI/线索质量);销售转化瓶颈分析(如哪个环节流失)。零售决策支持(热销商品补货/会员复购策略);线上线下业绩对比。
    关键差异:
    • 全链路分析:超兔(覆盖生产/库存/财务)、金蝶(业财一体化);
    • 销售分析:Freshsales(AI预测/绩效监控);
    • 营销分析:HubSpot(营销效果/转化路径);
    • 零售分析:有赞(商品/会员/线上线下);
    • 跨境分析:Zoho(多语言/多货币)。

    三、各系统核心定位与适用场景脑图

    通过Mermaid脑图直观呈现各系统的核心定位适配场景

    mindmap
        root((核心定位与适用场景))
            超兔一体云
                定位:一体化全流程管理(销售→生产→库存→财务)
                适用:中小制造/工贸企业(需生产与销售联动)
            Freshsales
                定位:AI驱动销售智能化(聚焦销售端CRM)
                适用:初创/中小企业(销售团队轻量化运营)
            金蝶
                定位:企业级业财一体化(覆盖全链路)
                适用:大中型制造/工贸企业(需定制化流程)
            Zoho
                定位:跨境多系统联动(CRM+库存+财务)
                适用:跨境电商/贸易企业(多语言/多货币)
            HubSpot CRM
                定位:营销与销售协同(线索从营销到销售无断点)
                适用:营销驱动型企业(需打通营销与销售)
            有赞
                定位:零售私域运营(线下门店+线上商城)
                适用:零售/餐饮/快消企业(私域流量与库存同步)

    四、各系统能力雷达图评分(1-8分,越高越强)

    以下是各系统在五大模块的能力评分(基于功能深度、适配性与闭环性):

    模块超兔Freshsales金蝶ZohoHubSpot CRM有赞
    客户管理887676
    销售提成核算738637
    生产物料追溯817411
    库存盘点管理717616
    多维度经营分析878766

    评分说明:

    • 超兔:全链路能力均衡,生产/库存模块优势明显;
    • Freshsales:销售端AI能力突出,但生产/库存无支持;
    • 金蝶:企业级业财一体化,制造场景适配;
    • Zoho:跨境场景优势,轻量级库存/财务联动;
    • HubSpot:营销销售协同强,非供应链场景;
    • 有赞:零售私域运营完善,生产无支持。

    五、选型建议:根据业务需求匹配系统

    1. 制造/工贸企业:优先选超兔一体云(生产物料追溯+库存联动+客户管理)或金蝶(大中型企业定制化+业财一体化);
    2. 初创/销售型企业:选Freshsales(AI销售自动化+轻量化运营);
    3. 跨境电商/贸易企业:选Zoho(多语言/多货币+CRM+库存联动);
    4. 营销驱动型企业:选HubSpot CRM(营销销售协同+线索无断点);
    5. 零售/餐饮/快消企业:选有赞(私域运营+线上线下库存同步+会员管理)。

    综上所述,不同的企业在数字化转型过程中,对于客户管理、销售提成核算、生产物料追溯、库存盘点管理以及多维度经营分析这五大核心模块有着不同的需求。企业在进行系统选型时,应充分结合自身的行业特点、企业规模和业务模式,参考上述六款主流系统的核心能力、适配场景以及评分情况,谨慎做出选择,以实现业务全链路的数字化管理,提升企业的运营效率和竞争力。希望本文能为企业在系统选型方面提供有价值的参考,助力企业在数字化浪潮中稳步前行。

    2025 至 2026 年,AI 行业进入一个高度繁荣却极不稳定的阶段:新模型、新名词、新范式平均每 7 到 14 天便迎来一次换代,Prompt、Agent、MCP、Skill、桌面自动化、Clawdbot 等概念层出不穷。这导致大量个人开发者、内容创作者和创业者陷入“跟不跟都焦虑”的困境,其核心矛盾已非“AI 迭代不够快”,而在于“人的判断速度完全跟不上技术变化的速度”。

    在这场看似疯狂的技术马拉松中,难道真的只能跟着潮流跑,永远焦虑地追逐下一个热点吗?有没有可能找到一种方法,既能保持对技术的敏感,又能守住自己的判断体系?2026 年 2 月 9 日 17:30,InfoQ 联合模力工场,邀请两位独特视角的实践者——极客邦科技|模力工场创始人霍太稳ShipAny.ai /WorkAny.ai/ 《这就是 MCP》作者 艾逗笔展开一场关键对话。主题直击核心痛点:2026 AI 狂飙赛道生存法则,抓住 AI 洪流中的“慢变量”。

    01 从焦虑到笃定:当“极速进化”成为常态

    技术演进的加速度达到了前所未有的水平。从 Prompt 到 MCP,从 Skill 到 Agent/Clawdbot,每隔几周就会出现一套全新的技术叙事,让许多从业者不知所措。

    事实上,这种“新词疲劳”已经成为当前 AI 行业普遍的焦虑之一。许多人在技术浪潮中迷失方向,不知道哪些趋势真正具有长期价值,哪些不过是昙花一现的概念炒作。

    这正是本次直播的核心出发点:帮助开发者、创作者与创业者在 2026 年汹涌的 AI 浪潮中,建立起一套不被冲走的理性判断框架。我们希望通过这场对话,为行业厘清脉络、指明方向,讲清楚什么是真正值得追随的趋势,而什么又只是一阵过眼之风。

    02 实战拆解:Vibe Coding 一周,做了个桌面 Agent

    理论之外,本次直播还将带来极具启发性的实战分享。idoubi 将展示其最新作品 WorkAny ——一个仅用一周时间、基于 Vibe Coding 开发的桌面 Agent 工具。

    他不仅会分享开发过程的心得,更会线上投屏实操,展示 WorkAny 的具体用法和玩法,为观众呈现从创意到实现的高效路径。这一部分将打破许多人“只有大团队才能做复杂应用”的刻板印象,展示个人开发者在 AI 时代的独特优势。

    03 关键议题:个人开发者如何把握 2026?

    当技术以每两周一次的速度更新迭代,个人开发者如何找到自己的立足点?

    • 2026 年,个人开发者只做 1 件事,应该是什么?

    • 如果今天才入场,还来得及吗?

    • 哪些能力,比模型能力本身更重要?

    这些正是许多开发者在当前环境下最困惑的问题。直播的后半段将专门回答观众提问,同时也会基于模力工场社区收集的用户问题进行深入探讨,为每个身处 AI 浪潮中的人提供实际可操作的生存指南

    在这个 AI 狂飙的时代,最稀缺的或许不是最新的技术,而是穿透现象看本质的理性判断力。如果你也厌倦了被技术洪流裹挟前进的状态,渴望找到属于自己的恒定价值锚点,那么这场对话将为你提供值得参考的答案。

    直播时间:2026 年 2 月 9 日(周一)17:30-18:30

    直播平台模力工场视频号、InfoQ 视频号、AI 前线视频号、霍太稳视频号

    直播主题:模力慢变量——2026 AI 狂飙赛道生存法则,抓住 AI 洪流中的“慢变量”

    对谈嘉宾

    • 霍太稳(极客邦科技创始人 | 模力工场创始人 | 技术社区构建者)

    • 艾逗笔(独立开发者 | ShipAny.ai / WorkAny.ai/ 《这就是 MCP》作者)

    2 月 9 日下午 5 点半,让我们一起在这场对话中寻找 AI 时代的“慢变量”,告别焦虑,拥抱未来。

    扫码关注视频号,预约直播,模力慢变量,等你来发现!

    大家好,最近做了一个小工具 AutoJava,想分享给各位 Java 开发者,也希望能收集一些使用反馈。

    它是做什么的?

    一个命令行工具,帮你处理那些烦人的重复工作:

    • 代码审计 - 自动检查 NPE 、SQL 注入等问题,基于 JavaParser + 阿里规范
    • AI 修复 - 对接 Kimi/通义千问等,一键生成修复代码,自动备份
    • 接口文档 - 解析 Spring 注解,直接生成 Markdown/OpenAPI 文档

    为什么做这个?

    工作里经常要:

    1. Review 新人代码,重复指出同样的问题
    2. 项目收尾补接口文档,手写很痛苦
    3. 祖传代码不敢改,怕改出问题

    所以想做个工具,把这些重复劳动交给 AI 。

    特点

    • 纯本地运行 - 代码不上云,公司项目也能放心用
    • CLI 工具 - 一条命令搞定,适合集成到 CI/CD
    • 多 AI 支持 - Kimi 、通义千问、文心一言等,自己配置 API key

    现在的情况

    目前是个人项目,免费版完全可用,付费版解锁 AI 功能。

    想听听大家的意见:

    • 这类工具你们会用吗?
    • 最希望解决什么痛点?
    • 定价是否合理?

    试试

    官网: https://autojav.vercel.app
    ---

    纯个人开发,轻喷,谢谢各位 🙏

    原本架构就是 pve 底层,上面跑飞牛 os 和 ubuntu server ,因为这次的问题打算弃用,对于一些需求的替代方案我整理了一下。

    1. 系统存储和备份
      系统快照、raid 等功能均在 pve 里实现,硬盘不直通 ubuntu 。

    2. 网盘挂载
      通过 ubuntu 里安装 alist 或者 cloud2drive 实现。

    3. 文件存储及同步
      单人自用同步使用 syncthing ,有多人协作需求可以换 nextcloud

    4.相册
    部署 immich 实现,飞牛 os 的相册似乎也是基于 immich 做的

    5.外网访问
    通过 tailscale 实现,在都有 ipv6 的情况下体验不差。也可以考虑节点小宝这类产品(安全性存疑,不推荐)。

    6.docker 管理
    ubuntu 部署 1panel ,应用商店丰富程度和更新频率比飞牛的高。

    7.媒体库
    媒体库在网盘的,可以直接换 vidhub/infuse/网易爆米花了,都可以挂载网盘并且直接播放。其中网易爆米花有隐私风险且不支持 iso 等原盘播放,但免费而且可以多平台同步进度(我在小米电视和 apple tv 的应用商店里都能下载到客户端)。infuse 啥都好,就是贵且局限在 apple 生态。vidhub 没验证不予置评。
    对于媒体库在本地的,还是 emby/plex/jellyfin 三件套和 kodi 选配,其中 jellyfin 免费!

    这一套搞完,主要欠缺的是 fn 的 40mbps 转发服务(我办公环境没有 ipv6 ,家里又没有 ipv4 公网 ip ,靠一个 6mbps 的云主机做中转真的很难受),会影响外网进行相册同步必须登录 tailscale 且带宽受限,影视库应为我主要挂载网盘播放 反而没什么影响。

    下班回家开干了,有更好的方案欢迎补充

    Retina 4K, 21.5-inch, 2019
    3 GHz 六核 Intel Core i5
    32 GB 2667 MHz DDR4

    开机到正常使用 20-30min ,开机可能几分钟,但是点击什么都卡的不行,
    设备名称: APPLE SSD SM0032L
    介质名称: AppleAPFSMedia
    介质类型: SSD
    1TB 的硬盘

    磁盘读写测试 200-300M/s ,是不是磁盘有问题

    Windows Server 不使用 xmapp、XP 面板支持 PHP 的方法。

    首先安装 IIS,新建一个网站
    然后点开这个网站
    image
    打开处理程序映射
    image
    添加模块映射
    image
    将所有*.php 的路径映射到 php-cgi.exe 程序进行处理。
    image
    测试访问。

    想象一下,凌晨 3 点,你的服务器某个服务挂了。

    以前:报警短信把你吵醒 -> 强撑睡意打开电脑 -> SSH 连上服务器 -> 敲命令排查 -> 重启服务 -> 继续睡(如果睡得着的话)。

    现在:你的手机收到一条企业微信消息:

    Hi 主人,您 IP 172.20.2.22 的服务器挂啦!“检测到 PHP-FPM 假死,已尝试重启服务并恢复,日志显示可能是内存泄漏导致的。建议后续排查这段代码...”

    这不是科幻,这就是 ClawdBot (Moltbot) —— 一个能真正“干活”的 AI Agent。而把它部署在 OpenCloudOS 上,你就拥有了一个永不掉线、极其稳定的“全能数字员工”。

    一、 为什么要用 OpenCloudOS 跑 ClawdBot?

    ClawdBot 基于 MCP 协议,它是一个运行在你服务器上的 AI 代理程序 。无论是执行 Shell 命令、提交 Git PR、操作数据库,还是连接 Telegram 等随时听候调遣,亦或是安装 "Skills"技能插件,学会任何新本事,对它来说,皆不在话下。

    所以,近期 Clawdbot 火爆全网,是因为它让人们真正意识到“AI 秘书”可以走进生活和工作。很多朋友在 MacBook 上尝鲜 ClawdBot,但真正能发挥它威力的战场,其实是服务器。OpenCloudOS 原生的 Linux 环境加上 ClawdBot 的执行力,能产生更多奇妙的化学反应。文章开头举例的场景只是其一。

    • 你可以让它写代码 :配合 code-edit 技能,直接在服务器上修改 Nginx 配置。
    • 你可以让它做监控 :写个 Cron Job,让它每天早上 9 点给你发一份服务器健康日报。
    • 你可以让它管应用 :配合 Docker 技能,一句话部署一个新的 WordPress 站点。

    二、5 分钟在 OpenCloudOS 9 上部署 Clawdbot

    2.1 安装 Node.js

    先使用 nvm 安装最新的 Node.js

     # 升级npm 
     curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash 
     source ~/.bashrc 
     nvm install 22 
     nvm use 22 
     nvm alias default 22
     
     # 验证 Node.js 版本:
     node -v # Should print "v22.22.0".
     # 验证 npm 版本:
     npm -v # Should print "10.9.4".
    

    2.2 安装 Clawdbot

    # 自动安装
    curl -fsSL https://molt.bot/install.sh | bash 
    
    # 也可手动安装
    npm i -g clawdbot
    # 并手动打开交互命令
    clawdbot onboard
    

    b5e67c5c14849c97b49e74dcded0f151.png
    79c475dca9f5c7a30f5d81a0ae18a0ff.png

    2.3 配置 Clawdbot

    因配置环节流程较多,OpenCloudOS 经筛选后仅展示关键配置,其余配置暂时未做展示。用户可根据个人需求和喜好自行进行配置。注意:如果配置过程中不慎退出,执行 clawdbot onboard 命令以继续。

    2.3.1 模型选择

    Clawdbot 支持了各大 LLM 公司的模型,也支持本地模型,包括 Ollama 和 LM Studio,你可以按自己的喜好/场景来决定使用。

    9a931f498c20bf4181f2d23ce76798e9.png

    备注:如果你有 token\_api 可以选择其他,如果想免费体验,可以选择 Qwen。这里,OpenCloudOS 以 Qwen 进行示例。

    当出现下面链接时,请点击并前往 Qwen 网站进行认证关联:

    ad5828a06c92b9a3d54c9eeb1e9a0e7f.png

    2.3.2 即时 IM 选择

    接下来是选择即时 IM 渠道,请根据您的使用场景或喜好选择。如果您没有这些软件或不考虑这些场景,可以先跳过,后文我们将演示如何支持企业微信。
    8ff2a7116954c994e4d96ebb5441b31b.png

    2.3.3 hooks 安装

    官方使能的 3 条 hooks 建议都安装上:

    2546a73e4cf59860457ebc7d5721e213.png

    2.3.4 昵称配置

    启动后你告诉 Clawdbot 它对你的称呼,和它的称呼:

    9b0595515f0dc4bd015c5f0f3a14cd71.png

    按两次 ctrl+c 退出该引导界面。

    2.3.5 Clawbot 运行状态确认
    # 查看clawbot是否在后台运行
    clawdbot health
    # 查看模型状态,是否连上了大模型
    clawdbot models list
    # 查看聊天通道,比如qq,企业微信等
    clawdbot channels list
    

    e7c765abba4c03680228ccd91c44ff36.png

    1a6290ce5379fa0b3e999286bea6eab7.png

    这里提示的 Qwen 的 channel,这是正常的,后文会配置企业微信相关的 channel。

    80811636dc06940e5cda0a8ef0cbc907.png

    2.3.6 访问 web 界面

    先做一个端口转发才能访问 web 界面

    # clawbot只能通过locahost方式访问
    ssh -L 18789:127.0.0.1:18789 root@你的服务器公网ip
    # 再获得token
    clawdbot dashboard
    

    ?/toeken=xxxxx 后面就是 token

    febfff8a45d136dd8a0381fa8d26b5a2.png

    直接在浏览器输入 127.0.0.1:18789/?token=xxxxxx 就能够访问 web 界面了

    f494802c33f8668270906f9d65f20e76.png

    三、实战点亮 OC9+Clawdbot 技能树

    3.1 接入企业微信

    Clawbot 原生基本只支持国外社交软件,可以通过插件的方式来支持国内的社交软件。这里我们以企业微信为例,演示接入教程。

    # 首先下载clawbot 插件
    clawdbot plugins install @william.qian/simple-wecom
    # 相关插件详细使用信息
    # https://www.npmjs.com/package/@william.qian/simple-wecom 
    
    # 重启 clawbot 来加载插件
    clawdbot gateway restart
    # 查看企业微信插件运行是否加载
    clawdbot plugins list | grep -i wecom
    

    c619bbac8fb01f12b550359024dd5cde.png

    36c8a1b54aee6a53858b59eb6978b200.png

    接下来需要在企业微信里创建一个一个应用,这一步需要企业微信开发者中心先在这里创建一个应用。

    55a81c9571ae258c8120840333e7384a.png

    选择个人

    afc0b914722b76cb10becd00e4978feb.png

    配置企业微信应用相关信息,首先获取如下信息:

    1. 登录 企业微信管理员后台

    2. 在"我的企业"中查看 企业 ID (CorpID)

    3. 进入"应用管理" → 选择或创建应用

    4. 在应用详情页获取:AgentId:应用 ID;Secret:点击"查看 Secret"获取

    5. 在"接收消息"设置中获取:Token:点击"随机获取";EncodingAESKey:点击"随机获取"。

    在服务器上输入如下命令:

    # 企业微信应用配置(必需)
    clawdbot config set channels.simple-wecom.corpid "你的企业ID"
    clawdbot config set channels.simple-wecom.agentid "你的应用ID"
    clawdbot config set channels.simple-wecom.corpsecret "your-corp-secret"
    clawdbot config set channels.simple-wecom.token "your-token"
    clawdbot config set channels.simple-wecom.encodingAESKey "your-aes-key"
    clawdbot config set channels.simple-wecom.enabled true 
    
    clawdbot config set gateway.bind lan
    clawdbot gateway restart
    

    如上执行后点击保存,企业微信会回发送 token 和 AESKey 和 Clawdbot 服务器进行匹配:

    4e2380f160dc50730a8d2dd6645e1b19.jpg

    如果匹配成功界面如下

    6919a21d518ae0343d3483e940b687fb.png

    在企业微信里找到相关应用,直接和他聊天

    714342e08b277f809f55e75b16bf5e2c.png

    可以看到 Clawdbot 确实识别到了相关的用户和请求

    8fd472959ae7200fde0b2fb710fa317b.png

    e2935daf016c7d9c8dcb88bb9ed0602d.png

    让 ClawdBot 创建一个定时任务:

    c239f0f4608c95a6c87a5292f0b35761.png

    可以看到确实创建完成了。

    94ece971d08021642ccec7f89a882b9c.png

    3.2 接入 QQ

    QQ 更方便个人用户使用,OpenCloudOS 也提供一个接入 QQ 的场景。先在https://github.com/sliverp/qqbot# 插件官网下载 zip 安装包,上传到服务器,并解压。

    # 先从github下载安装包
    wget https://github.com/sliverp/qqbot/archive/refs/heads/main.zip
    # 如果上面的连接不行,用加速链接
    wget https://ghfast.top/https://github.com/sliverp/qqbot/archive/refs/heads/main.zip
    
    # 解压并安装
    unzip main.zip && clawdbot plugins install ./qqbot-main/
    

    3b2365b5d4e199f1bc5a06423c9dbddf.png

    创建 QQ 机器人:

    访问 QQ 开放平台

    获取 AppID 和 AppSecret(ClientSecret)

    Token 格式为 AppID:AppSecret,例如 102146862:Xjv7JVhu7KXkxANbp3HVjxCRgvAPeuAQ

    84407ac997a487305b3fc45427cd009b.png

    #方式一:交互式配置,选择 qqbot,按提示输入 Token
    clawdbot channels add
    #方式二:命令行配置
    clawdbot channels add --channel qqbot --token "AppID:AppSecret"
    # 示例
    clawdbot channels add --channel qqbot --token "102146862:xxxxxxxx"
    

    f4e6816e8d9801b48cf0b8c7dcd7d5d1.png

    配置好后在 qq 开发平台里的,沙箱配置里先点击添加成员再扫描二维码就能和 ClawdBot 沟通,并安排他工作了

    26f6eda19cdaf3912bcf4f96d7b61d73.png

    175ed758febaaf4e4c117a8b983ca28c.jpg

    OpenCloudOS 和 Clawdbot 能碰撞出的火花远不止于此,欢迎社区伙伴们加入 OpenCloudOS 社区用户群(搜索社区小助手微信号:OpenCloudOS,即可进群),一起参与更多可能性的探讨。

    即日起至 2 月 6 日,凡在 OpenCloudOS 9 成功部署 Clawdbot ,并体验其扩展技能/反馈部署建议者,即有机会获得由社区赠送的精美礼品一份!欢迎加小助手了解体验活动详情。

    参考链接


    OpenCloudOS 开源社区是由操作系统、云平台、软硬件厂商与个人携手打造中立开放、安全稳定且高性能的 Linux 操作系统及生态。目前已实现从源社区、商业版、到社区稳定版全链路覆盖,旨在输出经海量业务验证的企业级稳定操作系统版本,为行业解决国产操作系统上下游供应问题,促进基础软件可持续发展。

    在越来越多企业推进 AI 应用落地的过程中,一个共识正在逐渐形成:model-centric 的发展已经达到一定瓶颈,那么现在决定 AI 应用效果的就是数据是否完备了。尤其在真实业务场景中,AI 面对的从来不是“干净、规整的结构化表”,而是大量分散、异构、跨介质的多模态数据——合同、图片、音视频、扫描件、日志、文本记录,与少量结构化指标交织共存。如果这些数据无法被系统性管理和加工,AI 就只能停留在 Demo 阶段,难以真正走向规模化应用。

    一、AI 时代的数据挑战:构建多模态数据底座

    在银行、制造、政企等行业,我们看到大量企业已经完成了数仓建设,也开始尝试引入大模型、知识库或智能分析能力,但很快便遇到相似的问题:

    • 非结构化数据分散在对象存储或文件系统中,只能依赖“人工查找”
    • 数据无法被统一检索、关联和追溯,模型输入高度不可控
    • 每一个 AI 场景都在重复进行数据准备,成本高、周期长、难以持续

    从本质上看,这并不是 AI 工程能力不足,而是企业的数据体系仍停留在“结构化时代”。

    而 AI 时代的数据底座,必须天然支持多模态。

    二、多模态数据平台:AI 的“可控输入层”

    多模态,并不等同于“把文件直接喂给模型”。真正决定 AI 能否长期可用的,是几个更基础的问题:

    • 数据是否具备清晰、稳定的业务语义
    • 数据是否可以被检索、筛选和灵活组合
    • 数据的来源、加工过程是否完整可追溯

    只有在这些条件之上,AI 才能建立在“可信数据”之上,而不是一个不可解释、不可复用的黑箱。

    这正是袋鼠云数栈在多模态方向上的核心定位:为 AI 提供一个可治理、可复用、可持续演进的数据底座,而不是一次性的场景工具。

    三、数栈多模态数据智能平台:从数据治理到 AI 应用的统一通路

    数栈 DataZen 多模态数据智能平台,源于成熟的结构化数仓体系,并在此基础上向多模态数据能力自然演进,帮助企业统一解决多模态数据的采集、加工、治理与应用问题。

    平台并不围绕某一个模型或 AI 框架展开,而是始终聚焦于数据本身:

    • 让多模态数据第一次以“数据资产”的形式进入企业数据体系
    • 让 AI 的每一次使用,都建立在可追溯、可解释的数据基础之上

    1.面向多模态的统一计算与存储底座

    多模态数据,对底层能力的要求天然多样。

    在数栈中,用户可以统一配置和管理:

    • 结构化存储(如 HDFS)与非结构化对象存储(如 MinIO)
    • 基于 Kubernetes 的统一资源调度能力
    • 多种计算模型并行协作:
      ①Spark / Flink / MPP 处理结构化计算
      ②Ray 承载文本、图片、音视频等非结构化数据处理

    图片

    这样的架构设计,并非为了追求“技术先进性”,而是为了更好地适应 AI 场景中不断变化的数据形态与处理需求。

    2.让非结构化数据真正进入数据体系

    2.1.统一接入

    数栈支持将文件系统、对象存储以及各类结构化数据源统一接入平台,打破数据形态之间的物理隔离。

    图片

    通过数据同步任务,用户可进行结构化数据与非结构化数据的同步。

    图片

    2.2.数据集化管理

    文本、图片、音频、视频等数据,不再只是文件目录,而是以“数据集”的方式被创建、管理和版本化,为后续加工和 AI 使用奠定基础。

    图片

    2.3.面向 AI 的多模态数据开发能力

    在数据开发阶段,数栈为不同模态提供了最适配的处理方式:

    • 结构化数据通过 SQL 完成规则计算与指标处理
    • 非结构化数据通过 Ray 算子完成解析、切分与转换

    更关键的是,二者可以在同一工作流中被编排和关联。

    图片

    以知识库或智能风控场景为例:

    • 先对合同、说明文档、影像资料进行解析与要素抽取
    • 再与结构化业务数据进行关联与筛选
    • 最终生成可被模型稳定消费的高质量输入数据集

    图片

    这使得 AI 场景中的数据准备,从“一次性工程”转变为“可持续复用的能力”。

    2.4.为 AI 打造可信的数据资产体系

    在多模态场景下,数栈构建了统一的数据资产与元数据体系:

    • 自动解析多模态数据的结构与内容
    • 构建全文索引与向量索引
    • 支持基于元数据、内容和向量的综合检索

    图片

    数据血缘、加工过程和业务语义被完整保留,使每一份被 AI 使用的数据都可回溯、可解释。

    图片

    2.5.连接 AI 平台,而非绑定模型

    经过治理和加工的数据资产,可以被推送至外部 AI 平台和知识库系统中,作为模型训练、推理和 RAG 应用的稳定数据来源。数栈并不绑定特定模型或厂商,而是通过标准化的数据输出能力,让企业可以根据自身节奏灵活演进 AI 技术路线。

    四、哪些企业最容易在 AI + 多模态上取得效果?

    • 已启动 AI 项目,但受限于数据质量与准备效率的企业
    • 拥有大量文档、影像、音视频资产的行业客户
    • 希望构建企业级知识库与智能分析能力的组织
    • 对数据合规性、可追溯性要求较高的业务场景

    在 AI 时代,真正拉开差距的,并不是模型参数的规模,而是数据底座的成熟度。数栈希望通过一套面向未来的多模态数据平台,帮助企业为 AI 提前准备好可以长期使用的数据基础设施。

    一、行业惊雷:十亿级赛道的 AI 新战场

    2026 年初,硅谷顶级投资基金 Altimeter Capital 的一则观点引发全球科技圈震动:继编程之后,电子表格正成为 AI 下一个“超级垂直领域”。这一判断并非空穴来风——公开数据显示,全球电子表格月活跃用户已达 15-16 亿,远超编程领域 2900 万开发者的规模;而软件行业 1 万亿美元市场中,近半数应用本质上都是“Excel 封装层”,从 CRM 到财务工具,从运营分析到科研数据处理,电子表格的渗透力无处不在。

    更关键的是,电子表格天然具备“产品驱动增长”的基因。正如编程领域凭借“自下而上”的传播模式,诞生了 4 家年经常性收入(ARR)超 10 亿美元的巨头,电子表格用户同样拥有直接的工具选择权和预算支配权——尤其是金融行业 1.5 亿高价值从业者,他们对生产力工具的付费意愿极强,且能快速感知 AI 带来的效率提升。OpenAI、Anthropic 等巨头的加速布局,恰恰印证了这一赛道的巨大潜力。
    在这里插入图片描述
    在这里插入图片描述

    在中国市场,这一趋势更为明显。金山 WPS 全球月活设备已达 6.32 亿,微软 Office 在中国企业市场的渗透率超 90%,加上谷歌 Workspace 的付费客户突破 1100 万,构成了全球最庞大的电子表格用户基数。但与此同时,开发者们正面临双重困境:一方面,传统表格工具的公式编写、数据分析门槛过高,非技术用户难以驾驭;另一方面,现有 AI 工具多为独立应用,缺乏与表格场景的深度融合,集成成本高、适配性差。

    正是在这样的行业背景下,葡萄城 SpreadJS 推出的 AI 插件,不仅精准命中了开发者的核心痛点,更以“表格原生 AI”的创新模式,成为 AI 电子表格赛道的先行者。作为深耕表格技术 20 余年的国产化控件领军者,SpreadJS 的 AI 布局并非跟风,而是基于其强大的表格内核能力,对开发者效率的一次颠覆性重构。

    二、根基所在:SpreadJS 的表格内核与 AI 基因

    要理解 SpreadJS AI 插件的核心优势,首先需要明确其底层逻辑:AI 并非独立于表格的附加功能,而是深度融入表格操作全流程的“智能助手”。这一模式的实现,离不开 SpreadJS 多年积累的三大核心能力:

    在这里插入图片描述

    1. 国产化兼容的全功能表格内核

    SpreadJS 是国内唯一实现与 Excel 高度兼容的前端表格控件,支持 450+Excel 公式、数据透视表、条件格式、图表等核心功能,同时适配 Vue、React、Angular 等所有主流前端框架,以及移动端、桌面端、云端等多终端场景。这种兼容性意味着开发者无需重构现有表格系统,即可无缝集成 AI 能力——这对于国内大量依赖 Excel 进行业务流转的企业而言,是降低迁移成本的关键。

    在这里插入图片描述

    2. 高度可编程的开放式架构

    SpreadJS 提供完整的 API 体系和插件生态,支持自定义函数、单元格渲染、数据校验等深度定制需求。这种可编程性使其能够灵活对接各类 AI 模型(包括 OpenAI、Claude、DeepSeek 等主流模型,以及国产化大模型),开发者可根据业务需求选择合适的 AI 服务,无需受限于单一供应商。这种开放性在国产化替代浪潮中尤为重要,能够满足企业对数据安全和模型自主可控的要求。

    3. 企业级的数据处理性能

    针对中国企业常见的大数据场景,SpreadJS 支持百万级数据的前端渲染和实时计算,配合虚拟滚动、按需加载等优化技术,即使在复杂报表和大规模数据分析场景下,也能保持流畅的操作体验。这为 AI 功能的落地提供了性能保障——无论是批量文本翻译、复杂公式生成,还是大数据量的透视表分析,都能快速响应,避免卡顿。

    正是基于这三大核心能力,SpreadJS AI 插件实现了“表格+AI”的深度融合,而非简单的功能叠加。其插件化设计让开发者可以按需集成 AI 能力,既保护了现有系统投资,又能快速提升产品竞争力,完美契合了国内企业“渐进式数字化转型”的需求。

    三、核心突破:SpreadJS AI 插件的三大杀手级功能

    SpreadJS AI 插件的核心价值,在于将复杂的 AI 技术转化为开发者可直接调用的“低代码工具”,覆盖公式处理、数据分析、文本处理三大核心场景,让开发者无需具备 AI 专业知识,即可快速实现智能表格应用。

    1. 零代码门槛的三大 AI 内置函数

    SpreadJS AI 插件提供 SJS.AI.TRANSLATE、SJS.AI.TEXTSENTIMENT、SJS.AI.QUERY 三个开箱即用的内置函数,覆盖多语言处理、情感分析、自然语言查询等高频场景,无需编写复杂逻辑,直接通过单元格公式即可调用。

    在这里插入图片描述

    (1)SJS.AI.TRANSLATE:多语言批量翻译

    在全球化业务场景中,跨国报表本地化、多语言用户反馈处理是常见需求。传统方式需要手动复制文本到翻译工具,效率低下且易出错。SJS.AI.TRANSLATE 支持批量翻译单元格区域文本,支持 20+主流语言,且能保留原有的数据格式和排版。

    应用场景:电商平台的多语言评论处理、跨国企业的财务报表本地化、外贸订单的合同条款翻译。

    (2)SJS.AI.TEXTSENTIMENT:智能情感分析

    用户反馈分类、舆情监测、客户满意度评估等场景,需要对大量文本进行情感判定。SJS.AI.TEXTSENTIMENT 支持自定义情感标签(如“好评/差评/中性”“积极/消极”),自动分析单元格文本的情感倾向,准确率达 95%以上。

    应用场景:客服系统的用户反馈分类、电商平台的商品评价分析、企业内部的员工调研统计。

    (3)SJS.AI.QUERY:自然语言数据查询

    非技术用户往往难以编写复杂的 Excel 公式,而 SJS.AI.QUERY 允许通过自然语言指令直接获取数据结果,无需记忆函数语法。无论是数据统计、信息提取,还是常识查询,都能快速返回结构化结果。

    应用场景:市场调研的数据快速统计、行政部门的日程查询、财务人员的基础数据计算。

    这三大函数的设计遵循“零代码、高复用”原则,开发者无需关注 AI 模型的调用细节,只需像使用普通 Excel 函数一样嵌入表格,即可让非技术用户享受 AI 带来的便利。同时,函数支持批量处理和跨单元格引用,完全适配企业级的大规模数据处理场景。

    2. AI 公式助手:让复杂公式“开口说话”

    公式编写是表格应用的核心痛点之一。Excel 的高级函数(如 INDEX+MATCH、LET、SUMIFS 等)语法复杂、逻辑嵌套深,即使是资深开发者也需要反复调试。SpreadJS AI 插件的公式助手功能,通过“生成+解释”双向赋能,彻底降低了复杂公式的使用门槛。

    (1)公式自动生成:自然语言转公式

    开发者或用户只需用中文描述需求(如“找出 B6:G6 中高频出现的数字”“根据销售额大于 20000 的条件筛选区域”),AI 即可自动生成对应的表格公式,支持 450+Excel 原生函数和行业特定函数(如财务领域的 XIRR、MIRR)。生成的公式基于海量知识库训练,准确率达 98%,可直接复用或二次修改。

    实战案例:某零售企业的销售数据分析系统中,开发者需要实现“筛选销售额总计大于 20000 的区域”功能。通过 SpreadJS AI 公式生成,只需输入自然语言需求,即可自动生成公式:

    =FILTER(UNIQUE(销售[所属区域]),SUMIFS(销售[销售额(元)],销售[所属区域],UNIQUE(销售[所属区域]))>20000)

    在这里插入图片描述

    无需手动编写复杂的 FILTER 和 SUMIFS 嵌套逻辑,极大提升了开发效率。

    (2)公式智能解释:复杂公式分步拆解

    对于已有的嵌套公式,AI 公式助手能够自动分步拆解逻辑流程,解释变量定义、条件判断规则和返回结果含义。例如,针对成绩评级公式=LET(score,B2,IF(score>=90,"A",IF(score>=80,"B",IF(score>=70,"C",IF(score>=60,"D","F"))))),AI 会拆解为:

    1. 定义变量 score,取值为 B2 单元格的成绩;
    2. 嵌套 IF 语句判断等级:90 分及以上为“A”,80-89 分为“B”,依次类推;
    3. 60 分以下返回“F”。

    这一功能不仅降低了开发者的公式学习成本,更方便团队协作中的公式复用和维护——新人无需反复询问即可理解旧代码中的复杂公式逻辑。
    在这里插入图片描述

    3. 对话式透视表:数据分析无需“拖拽”

    数据透视表是企业数据分析的核心工具,但传统透视表需要手动拖拽行、列、值字段,操作复杂且耗时。SpreadJS AI 插件的对话式透视表功能,支持通过自然语言指令自动生成透视表,并提供智能分析能力,让数据分析像聊天一样简单。

    (1)自动生成透视表

    用户只需输入业务需求(如“按照销售渠道和产品类别统计华东区域的销售额”“按出游类型和组织方式统计游客数量”),AI 即可自动识别数据源中的字段关系,生成对应的透视表布局,无需手动配置字段映射。生成的透视表支持 Excel 所有原生功能,包括筛选、排序、数据钻取等。
    在这里插入图片描述

    (2)智能数据分析

    基于生成的透视表,用户可进一步输入业务问题(如“办公用品类别中每个区域哪个渠道表现最好”“找出销售额最高的前三个产品”),AI 会自动分析数据并返回结构化结论,同时提供数据支撑。例如,针对办公用品销售数据,AI 会输出“华东区域经销商渠道表现最佳,销售额 24386 元;东北区域线下门店优势明显,销售额 11965.5 元”等结论,并列出详细数据表格。

    应用场景:财务部门的月度营收分析、运营团队的渠道效果评估、市场部门的用户行为分析。对于需要快速生成决策支持数据的场景,效率提升可达 80%以上。
    在这里插入图片描述

    此外,透视表功能还支持视图保存与加载,开发者可将常用的分析逻辑保存为模板,后续无需重复生成,进一步提升工作效率。

    四、实战落地:三大典型场景的效率革命

    SpreadJS AI 插件的价值,最终体现在具体的业务场景中。以下三个典型案例,展现了其如何解决中国开发者的实际痛点,实现从“能用到好用”的跨越。

    场景 1:财务报表自动化系统

    行业痛点:财务人员需要处理大量 Excel 报表,包括多语言报表本地化、复杂财务公式编写(如折旧计算、税务核算)、报表数据透视分析等,工作繁琐且易出错;开发者需要为不同财务场景定制公式和报表模板,开发周期长。

    SpreadJS AI 解决方案

    • 利用 SJS.AI.TRANSLATE 函数,自动将跨国公司的财务报表翻译成中文,保留原有的公式和格式,避免手动翻译导致的错误;
    • 通过 AI 公式助手,财务人员直接用自然语言描述需求(如“计算固定资产年折旧额(直线法)”),即可生成对应的财务公式,无需记忆复杂的折旧计算公式;
    • 对话式透视表自动按部门、科目统计营收数据,财务人员输入“分析各部门季度费用占比”,即可快速获取分析结论,支撑预算决策。

    效果:报表处理效率提升 70%,公式编写错误率降至 1%以下,开发者的报表模板开发周期从 1 周缩短至 1 天。

    场景 2:电商平台用户反馈分析系统

    行业痛点:电商平台每天产生海量用户评论,需要分类统计好评、差评、中性评价,提取关键反馈(如物流慢、产品质量问题),传统方式依赖人工标注,效率低下;开发者需要定制复杂的文本处理逻辑,开发成本高。

    SpreadJS AI 解决方案

    • 利用 SJS.AI.TEXTSENTIMENT 函数,批量分析用户评论的情感倾向,自动分类为“好评”“差评”“中性”,支持自定义标签(如“物流问题”“质量问题”);
    • 通过 SJS.AI.QUERY 函数,提取评论中的关键信息(如“统计提到‘物流慢’的评论数量”“找出用户最满意的产品功能”);
    • 对话式透视表按产品类别、评论情感、反馈关键词生成分析报表,运营人员输入“分析近 30 天手机类产品的主要投诉点”,即可快速获取数据支撑。

    效果:用户反馈处理效率提升 90%,开发者无需编写复杂的文本处理和数据分析逻辑,系统上线周期从 1 个月缩短至 2 周。

    场景 3:企业内部低代码工具平台

    行业痛点:企业内部工具平台需要满足不同部门的个性化数据处理需求,非技术用户难以自行编写公式和生成报表,依赖 IT 部门支持,响应速度慢;开发者需要频繁定制功能,维护成本高。

    SpreadJS AI 解决方案

    • 基于 SpreadJS 的可编程架构,将 AI 插件集成到低代码平台中,非技术用户可通过自然语言生成公式、创建透视表,无需 IT 支持;
    • 开发者通过 SpreadJS 的 API 自定义 AI 函数(如结合企业私有数据的“客户信用评级”函数),扩展 AI 能力;
    • 支持多终端适配,员工可在电脑端、移动端随时处理数据,生成分析报告。

    效果:IT 部门的支持需求减少 60%,非技术用户的自助数据分析能力提升 80%,开发者的维护成本降低 50%。

    五、差异化优势:为什么是 SpreadJS?

    在 AI 电子表格赛道中,SpreadJS AI 插件的核心竞争力并非单一功能的领先,而是基于“开发者视角”的全流程赋能,其差异化优势体现在三个维度:

    1. 原生集成,而非“外挂”

    与市面上独立的 AI 表格工具不同,SpreadJS AI 插件是基于表格内核的原生功能,无需跳转至第三方平台,所有 AI 操作都在表格内部完成。这种原生集成带来两大优势:一是数据无需外泄,保障企业数据安全(尤其符合国内数据合规要求);二是操作流程无缝衔接,用户无需切换工具,学习成本低。

    2. 开发者友好的低代码集成

    SpreadJS AI 插件提供极简的集成方式,支持前端直接调用或服务端部署,开发者只需添加几行代码即可完成集成:

    // 前端集成示例
    <script src="xxxx/spread-sheets-ai-addon/dist/gc.spread.sheets.ai.min.js"></script>
    // 注册AI服务
    spread.injectAI(async (requestBody) => {
      requestBody.model = 'your-model-name';
      const response = await fetch('/api/queryAI', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify(requestBody)
      });
      return response;
    });

    同时,插件支持自定义 AI 模型对接,开发者可根据业务需求选择公有云模型或私有化部署的国产化模型,灵活适配不同场景。

    3. 国产化适配与企业级服务

    作为国产化表格控件领军者,SpreadJS 完全适配信创体系(包括麒麟操作系统、统信 UOS、飞腾芯片等),满足政府、金融、能源等关键行业的国产化替代需求。同时,葡萄城提供 7×12 小时的技术支持和定制化开发服务,解决开发者在集成过程中遇到的各类问题——这是国外同类产品难以比拟的优势。

    4. 与行业趋势的深度契合

    SpreadJS AI 插件的设计理念,完美契合了 AI 电子表格的三大发展趋势:一是“自下而上”的传播模式,通过降低开发者和用户的使用门槛,实现快速推广;二是金融行业作为核心切入点,其高价值用户群体能快速感知 AI 带来的 ROI;三是“表格即平台”的扩展潜力,通过 AI 能力将表格从数据载体升级为应用创建平台,覆盖 CRM、数据分析、内部工具等更多场景。

    六、写给开发者:AI 时代的表格工具选型指南

    在 AI 电子表格赛道加速爆发的今天,开发者选择工具时需要关注三个核心要素:一是兼容性,能否适配现有系统和国内主流软件生态;二是开放性,能否灵活对接不同 AI 模型和业务场景;三是实用性,能否真正解决开发痛点、提升产品价值。

    SpreadJS AI 插件的推出,不仅是对这三个要素的完美回应,更提供了一种“渐进式 AI 升级”的解决方案——开发者无需重构现有系统,即可通过插件快速为表格应用注入 AI 能力,既保护了历史投资,又能快速提升产品竞争力。

    对于正在布局 AI 电子表格的开发者而言,SpreadJS 的核心价值在于:它不是一个简单的“AI 工具”,而是一个“AI+表格”的完整解决方案——从表格内核到 AI 能力,从前端集成到后端部署,从标准化功能到定制化服务,全方位满足企业级应用的开发需求。

    未来,随着 AI 大模型能力的持续提升,SpreadJS 还将推出更多行业定制化 AI 功能,包括财务领域的自动报表生成、科研领域的数据分析建模、教育领域的公式教学辅助等,进一步拓展 AI 电子表格的应用边界。

    七、立即体验:开启你的 AI 表格效率革命

    为了让开发者快速体验 AI 带来的效率提升,SpreadJS 提供了完整的 AI 插件试用方案:

    1. 下载 Demo:包含公式生成、透视表分析、文本处理等所有核心功能的可直接运行示例;
    2. 在线体验:通过葡萄城开发者官网(https://www.grapecity.com.cn/developer/spreadjs/)在线试用,无需本地部署;

    在十亿级用户的 AI 电子表格赛道上,先发优势至关重要。选择 SpreadJS AI 插件,不仅能让你快速推出具备竞争力的智能表格应用,更能借助其国产化适配、企业级性能和深度定制能力,在激烈的市场竞争中占据先机。

    AI 重构表格的时代已经到来,而效率革命的钥匙,就在你的手中。立即下载 SpreadJS AI 插件,开启属于你的智能开发之旅!

    背景

    在云原生场景中,为了最大化资源利用率,越来越多的集群采用资源超卖策略和混合部署方式。然而,这种模式在提升集群效率的同时,也显著增加了宿主机与容器化应用之间的资源竞争风险。

    在资源紧张的场景中,CPU 延时和内存申请延迟(Memory Reclaim Latency)等内核级延迟问题,往往会直接传导至应用层,造成响应时间(RT)波动,甚至引发业务抖动。对于依赖低延迟和稳定性的关键业务而言,这类问题可能意味着性能瓶颈、用户体验下降,甚至业务中断。

    然而,现实中由于缺乏足够的可观测性数据,工程师通常很难将应用层抖动与系统层面的延迟精确关联,排查效率低下。为了解决这一挑战,本文将结合实战案例,介绍如何在 Kubernetes 环境中使用 ack-sysom-monitor Exporter [1]对内核延迟进行可视化分析与定位,帮助你快速识别问题根因,并高效缓解由延迟引发的业务抖动。

    内存申请延时

    进程陷入内存分配的慢速路径往往是造成业务时延抖动的元凶之一。如下图所示,在进程内存分配的过程中,如果系统或容器内存达到了 low 水线,会触发系统内存的异步回收(kswapd 内核线程回收);如果剩余内存进一步低于 min 水线,就会进入直接内存回收(direct reclaim)和直接内存规整(direct compact)阶段,这两个动作正是可能引起长业务(进程)时间延时的罪魁祸首。

    • 直接内存回收是指进程在申请内存的过程中,由于内存紧缺,进程被迫阻塞等待内存的同步回收。

    • 直接内存规整是指进程在申请内存的过程中,由于内存碎片太多,进程被迫阻塞等待内核将内存碎片规整成连续可用的一片内存。

    因为直接内存回收和规整的过程可能会消耗一定的时间,所以进程会阻塞在内核态,造成长时间的延时和 CPU 利用率的升高,从而导致系统负载飙高和(业务)进程的延时抖动。

    图: Linux 内存水线

    CPU 延时

    CPU 延时是指从任务变为可运行状态(即它已准备好运行,不再受阻塞),到它真正被操作系统调度器选中并执行的时间间隔。长时间的 CPU 延时可能会对业务造成影响,如网络数据包到达后,业务进程没有被及时调度运行进行收包从而导致网络延时等。

    延时抖动场景常见 CASE

    CASE 1: 容器内存紧张导致容器内应用抖动

    容器启动时设置了内存限制(Limit)。当容器内进程申请内存且容器内存使用量达到容器内存限制时,容器内进程就会发生直接内存回收和规整导致应用阻塞。

    CASE 2: 宿主机内存紧张导致容器内应用抖动

    虽然容器内存富余,但容器所在宿主机内存紧张。当容器内进程申请内存且节点内存可用内存低于节点 min 内存水位时,容器内进程就会发生直接内存回收。

    CASE 3:  就绪队列等待时间长导致应用抖动

    应用进程被唤醒进入就绪队列,但是由于就绪队列较长,当前 CPU 存在阻塞任务等原因导致长时间没有被调度至 CPU 运行导致应用抖动。

    CASE 4:中断,阻塞时间长导致应用抖动

    当系统资源紧张或发生资源争抢时,大量网络等软件中断或硬件中断会持续触发。此时内核处理这些中断的耗时会显著增加,导致 CPU 长时间被内核占用。应用程序在运行系统任务时需要争夺同一个锁,但此时锁资源长期被占用无法释放,最终引发进程卡死。

    CASE 5:内核路径持锁阻塞引发网络抖动延时

    当进程通过系统调用进入内核态执行路径后,由于路径中可能涉及访问大量系统资源从而长时间持有内核自旋锁;当某个 CPU 在持有自旋锁后便可能关闭当 CPU 中断和不再发生调度,从而导致内核 ksoftirq 软中断无法正常调度收包,从而引发网络抖动。

    如何识别解决系统抖动延时

    ACK 团队与操作系统团队合作推出了 SysOM(System Observer Monitoring) 操作系统内核层的容器监控的产品功能,目前为阿里云独有;通过查看 SysOM 容器系统监控 -None 和 Pod 维度中的相关大盘,可以洞悉节点和容器的抖动延时。

    内存申请延时

    • 查看 SysOM 容器系统监控-容器维度中的 Pod Memory Monitor 中的 Memory Global Direct Reclaim Latency 和 Memory Direct Reclaim Latency 和 Memory Compact Latency 监控大盘,可以直观地观察到 pod/ 容器中的进程因为发生直接内存回收和直接内存规整而被阻塞的时长

    • 查看 SysOM 容器系统监控-节点维度中的 System Memory 中的 Memory Others 大盘,可以观察到节点上是否发生了直接内存回收。

    具体指标解析

    • Memory Others

    该大盘中的 pgscan_direct 折线表示节点中在直接内存回收阶段扫描的页数,只要该折线的数值不为 0,说明在节点中发生了直接内存回收。

    • Memory Direct Reclaim Latency

    该大盘表示:当前采样点与上一采样点,由于容器内存使用量达到容器内存限制或者节点内存可用内存低于节点内存水位导致的容器中发生的直接内存回收在不同阻塞时长的次数增量(如 memDrcm_lat_1to10ms 表示直接内存回收延时时间在 1-10ms 的增量次数。memDrcm_glb_lat_10to100ms 表示直接内存回收延时时间在 10-100ms 的增量次数)。

    • Memory Compact Latency

    该大盘表示:当前采样点与上一采样点,由于节点内存碎片太多导致的容器中无法申请连续内存而发生的直接内存规整次数增量。

    问题解决

    内存回收延时最直接的原因就是节点/容器内存资源紧张。要优化内存使用,就需要看清内存和用好内存:

    • 要看清内存,可以通过阿里云操作系统控制台推出的功能-节点 /Pod 内存全景分析[2],该功能对节点 /Pod 使用的内存进行了详细的拆解,细粒度到每个 Pod 的详细内存组成。通过 Pod Cache(缓存内存)、InactiveFile(非活跃文件内存占用)、InactiveAnon(非活跃匿名内存占用)、Dirty Memory(系统脏内存占用)等不同内存成分的监控展示,发现常见的 Pod 内存黑洞问题。

    • 要用好内存,可以通过 ACK 容器服务团队推出 Koordinator QoS 精细化调度功能[3],通过精细化调整容器的内存水线,提早进行异步回收,缓解直接内存回收带来的性能影响。

    CPU 延时监控

    查看 SysOM 容器系统监控-节点维度中的 System CPU and Schedule 大盘:

    具体指标解析

    • WaitOnRunq Delay

    该大盘表示系统中所有可运行进程在运行队列中等待运行的时间的平均值;通过该大盘,用户可以了解到系统中是否存在调度延时情况,如果存在超过 50ms 的毛刺,就可以说明系统中存在比较严重的调度延时,大部分进程都无法得到及时的调度。

    • Sched Delay Count

    该大盘表示:系统没有发生调度的时间分布统计。(如 SchedDelay 100ms 表示:系统中有 100ms 没有发生调度的次数统计)。如果观察到 SchedDelay 100ms 折线发生了陡增,那么可以说明系统中发生了长时间不调度,系统上的业务进程可能因为得不到调度而受到影响。

    问题解决

    造成系统调度延时的原因有很多,如在 CPU 中运行的任务在内核态运行时间过长,当前 CPU 出现长时间的关中断等。如果需要进一步定位产生调度延时的具体原因,可以使用阿里云操作系统团队推出的产品-阿里云操作系统控制台中的调度抖动诊断[4]进行进一步的根因分析。

    案例分析 - 快速定位由 CPU 延时导致的网络抖动

    背景:

    某金融行业客户在 ACK 上创建的集群中,某两个节点中业务 pod 连接 redis 经常出现连接失败报错;在经过网络同学的初步排查后,基本可以锁定是由于节点内核收包慢(延时 500ms+),导致 redis 客户端断开连接。

    问题识别定位:

    1. 通过查看网络抖动应时间的 Sched Delay Count 大盘,可以看到在对应的时间点中,伴随着多次 1ms 以上的 sched delay,这说明了系统中这个时间点发生多次某个 CPU 不发生调度 500ms 以上,那么很有可能 ksoftirq 得不到调度从而引发了网络延时抖动。

    2. 通过操作系统控制台的节点异常详情,我们可以看到发生了调度抖动异常和 cgroup 泄漏异常:

    3. 查看操作系统控制台中的调度抖动诊断的诊断报告,获得了如下图的诊断报告:

    4. 结合抖动诊断和 cgroup 泄漏异常基本可以确定是 memory cgroup 泄漏且 kubelt 访问 memory cgroup 的 memory.numa_stat 文件时,由于 numa_stat 中的数据在 Alinux2 内核中多次遍历 cgroup 层级导致调度抖动进而影响 softirq 收包。

    5. 最后结合操作系统团队的 memory cgroup 泄漏工具分析,可以确定由于客户使用 cronjob 定时拉起容器读取日志导致 cgroup 泄漏(容器创建时会创建一个新的 mem cgroup,读取文件会产生 page cache 并统计在该 cgroup 中,容器退出后由于 page cache 未释放使当前 cgroup 处于僵尸状态,未被完全清除)。

    问题解决:

    所以问题从解决网络抖动变为了解决 memory cgroup 泄漏问题:

    1、临时止血方法:通过 drop cache 回收 page cache,从而使对应的僵尸 cgroup 被正常清除。

    2、使用 Alinux 的自研特性,开启僵尸 cgroup 回收功能;具体使用可参考[5]中“回收 zombie memcgs”章节。

    您在使用操作系统控制台功能的过程中,有任何疑问和建议,可以加入钉钉群(群号:94405014449)反馈,欢迎大家入群交流。

    操作系统控制台钉钉交流群

    参考链接:

    [1]SysOM 内核层容器监控:

    https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/sysom-kernel-level-container-monitoring?spm=5176.12818093_47.console-base_help.dexternal.5adc2cc9tyH8cM&scm=20140722.S_help%40%40%E6%96%87%E6%A1%A3%40%402560259.S_BB2%40bl%2BRQW%40ag0%2BBB1%40ag0%2Bos0.ID_2560259-RL_acksysom-LOC_console~UND~help-OR_ser-PAR1_2150446b17585225858645349e5d87-V_4-P0_0-P1_0

    [2]操作系统控制台内存全景分析:

    https://help.aliyun.com/zh/alinux/user-guide/memory-panorama-analysis-function-instructions?spm=a2c4g.11186623.help-menu-2632541.d_2_0_1_0_0_0.38175c4dMUXuc5&scm=20140722.H_2848894._.OR_help-T_cn~zh-V_1

    [3]容器内存 QoS:

    https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/memory-qos-for-containers

    [4]阿里云操作系统控制台调度抖动诊断:

    https://help.aliyun.com/zh/alinux/user-guide/scheduling-jitter-diagnosis?spm=a2c4g.11186623.help-menu-2632541.d_2_0_1_0_3_0.2020583fVqI7fU&scm=20140722.H_2848564._.OR_help-T_cn~zh-V_1

    [5]龙蜥操作系统资源隔离使用简介:

    https://openanolis.cn/sig/Cloud-Kernel/doc/659601505054416682

    [6]阿里云操作系统控制台 PC 端链接:

    https://alinux.console.aliyun.com/

    使用托管数据库部署 Coreflux MQTT 代理

    MQTT 代理 通过发布-订阅消息模式连接物联网设备和应用程序,使其成为现代 物联网 基础设施的重要组成部分。Coreflux 是一个 低代码 MQTT 代理,增加了实时数据处理和转换功能,让你可以直接与 DigitalOcean 托管数据库(包括 MongoDBPostgreSQLMySQLOpenSearch)集成,而无需编写自定义集成代码。

    你将学到什么: 本教程将引导你部署一个完整的物联网数据管道——从在 DigitalOcean 上设置托管数据库集群和 Coreflux MQTT 代理,到配置安全的 VPC 网络、使用 Coreflux 的物联网语言 (LoT) 构建数据转换模型,以及自动将处理后的物联网数据存储到你选择的数据库中。最终你将获得一个可用于生产环境的设置,能够处理物联网应用的实时消息传递和持久存储。

    关键要点

    在深入了解分步部署过程之前,以下是你将学到的关键点:

    • 在 DigitalOcean 上部署托管数据库集群(PostgreSQL、MongoDB、MySQL 或 OpenSearch),用于可扩展的物联网数据存储。
    • 使用 Marketplace 镜像或 Docker 在 DigitalOcean Droplet (DigitalOcean的VPC)上设置 Coreflux MQTT 代理。
    • 创建安全的 VPC 网络以连接你的 MQTT 代理和数据库,无需公开暴露。
    • 使用 Coreflux 的物联网语言 (LoT) 构建实时数据管道,实现低代码物联网自动化。
    • 自动转换和存储物联网数据,从 MQTT 主题到数据库表、集合或索引。
    • 验证端到端数据流,从模拟传感器通过转换模型到数据库存储。

    本教程为需要实时消息传递结合持久数据存储以及搜索、分析或关系查询等高级功能的物联网应用提供了一个可用于生产环境的基础。

    你将构建什么

    在本教程结束时,你将得到:

    • 一个用于可扩展存储托管数据库集群(PostgreSQLMongoDBMySQLOpenSearch
    • 一台运行 Coreflux MQTT 代理DigitalOcean Droplet
    • 一个用于安全 物联网通信的虚拟私有云 (VPC) 网络
    • 使用 LoT Notebook 扩展进行的实时数据模拟
    • 低代码数据转换模型和数据库集成路由
    • 用于 物联网自动化 的完整 数据集成与转换 管道

    Coreflux 与 DigitalOcean 合作

    Coreflux 通过物联网语言编程语言在 DigitalOcean 云平台上提供轻量级 MQTT 代理和数据管道工具,以实现高效的物联网通信。

    什么是 MQTT?

    MQTT(消息队列遥测传输)是一种轻量级的、发布-订阅网络协议,在物联网生态系统中被广泛采用。专为受限设备和低带宽、高延迟或不稳定的网络设计,MQTT 能够在带宽受限的环境中实现高效、实时的消息传递。

    关于 Coreflux

    Coreflux 提供了一个轻量级 MQTT 代理,以促进物联网设备与应用程序之间的高效、实时通信,包括每个用例所必需的实时数据转换功能。为可扩展性和可靠性而构建,Coreflux 专为低延迟和高吞吐量至关重要的环境量身定制。

    无论你是构建一个小型物联网项目还是部署工业监控系统,Coreflux 都能处理设备之间的消息路由和数据流。

    在 DigitalOcean 云平台上使用 Coreflux,你将获得:

    数据处理: 在你的数据所在之处集中处理你的数据处理需求,确保实时数据处理。
    数据集成: 轻松与其他 DigitalOcean 服务(如托管数据库 PostgreSQL、MongoDB、MySQL 或 OpenSearch)集成,确保为你的所有数据需求提供一个单一且简单的生态系统。
    可扩展性: 轻松处理不断增长的数据和设备数量,而不会影响性能。
    可靠性: 确保在所有连接的设备之间进行一致且可靠的消息传递。

    Coreflux MQTT 和托管数据库架构概述

    准备工作

    在开始本 MQTT 代理 部署教程之前,你需要:

    • 一个 DigitalOcean 帐户,可在DigitalOcean.com注册,支持绑定信用卡、支付宝或数字货币
    • 了解 MQTT 协议概念和 物联网 架构
    • Visual Studio Code(用于 LoT Notebook 扩展)

    预计时间: 本教程大约需要 30-45 分钟完成,具体取决于数据库配置时间(通常每个数据库集群需要 1-5 分钟)。

    步骤 1 — 为物联网自动化创建网络基础设施

    为安全的 MQTT 通信创建 VPC 网络

    首先,你将创建一个虚拟私有云 (VPC),以确保你的 物联网 服务和 MQTT 代理 之间的安全通信,无需公开访问。

    1. 登录你的 DigitalOcean 控制面板
    2. 从左侧导航栏进入 网络VPC
    3. 点击 创建 VPC 网络

    DigitalOcean VPC 创建屏幕

    1. 物联网自动化配置你的 VPC:

      • 名称:coreflux-integrations-vpc(或你的 VPC 名称)
      • 数据中心区域:选择法兰克福(或你首选的区域)
      • IP 范围:使用默认值或根据需要配置
      • 描述:为你的 MQTT 代理和数据库 网络添加有意义的描述
    2. 点击 创建 VPC 网络

    VPC 将为你所有的物联网资源提供隔离的网络,确保 Coreflux MQTT 代理托管数据库 之间的安全通信。有关 VPC 配置的更多详细信息,请参阅我们关于创建 VPC 网络的教程。

    步骤 2 — 为可扩展存储设置托管数据库

    根据你的物联网应用需求,选择以下数据库选项之一:

    • PostgreSQL:适用于需要关系查询、ACID 合规性和复杂关系的结构化数据
    • MySQL:适用于结构化工作负载和具有强一致性及广泛工具支持的事务性查询
    • MongoDB:适用于具有可变模式的灵活文档存储和快速开发
    • OpenSearch:适用于高级搜索、分析、日志分析和时间序列数据可视化

    设置 PostgreSQL 托管数据库

    当你的物联网工作负载需要关系模式强一致性高级 SQL 分析,并由自动备份、监控和维护支持时,DigitalOcean 上的托管 PostgreSQL 是一个很好的选择。

    DigitalOcean 托管 PostgreSQL 集群设置

    1. DigitalOcean 控制面板,导航到 数据库
    2. 点击 创建数据库集群
    3. 物联网自动化配置你的 PostgreSQL 集群:

      • 数据库引擎:选择 PostgreSQL
      • 版本:选择最新的稳定版本
      • 数据中心区域:选择法兰克福(与你的 VPC 相同)
      • VPC 网络:选择你创建的 coreflux-integrations-vpc
      • 数据库集群名称:postgresql-coreflux-test
      • 项目:选择你的目标项目
    4. 根据你的 物联网 需求选择你的计划:

      1. 对于开发:基础 计划,1 GB RAM
      2. 对于生产:通用型 或更高,用于可扩展存储
    5. 点击 创建数据库集群

    托管数据库 创建过程通常需要 1-5 分钟。完成后,你将被重定向到数据库概览页面,在那里你可以查看连接详细信息并执行管理操作。

    为 MQTT 代理集成配置 PostgreSQL 数据库访问

    系统将提示你进行入门步骤,显示你的连接详细信息,你可以配置入站访问规则(建议限制为你的 IP 和仅 VPC)。

    1. 点击 开始使用 来配置你的 PostgreSQL 数据库
    2. (可选操作)限制入站连接:

      • 添加你本地计算机的 IP 以进行管理访问
      • droplet 将通过 VPC 网络自动获得允许

    PostgreSQL 入站访问和 VPC 规则

    对于连接详细信息,你将看到两个选项 - 公共网络和 VPC 网络。第一个用于像 DBeaver 这样的工具进行外部访问,而第二个将由 Coreflux 服务用于访问数据库。

    PostgreSQL 公共和 VPC 连接详细信息

    1. 记下提供的连接详细信息,包括公共访问和 VPC 访问(每种都有不同的详细信息):

      • 主机:你的数据库主机名
      • 用户:默认管理员用户
      • 密码:自动生成的安全密码
      • 数据库:身份验证数据库名称
    测试 PostgreSQL 数据库连接

    你可以使用提供的连接参数,使用公共访问凭证通过 DBeaver 测试 PostgreSQL 连接:

    在 DBeaver 中测试 PostgreSQL 连接

    创建 PostgreSQL 应用程序数据库和用户(可选)

    为了更好的安全性和组织性,为你的 物联网自动化 应用程序创建一个专用用户和数据库。这也可以通过 DBeaver 或 CLI 完成,但 DigitalOcean 提供了一种用户友好的方法:

    1. 转到你的 托管数据库 集群中的 用户与数据库 选项卡
    2. 创建用户

      • 用户名:coreflux-broker-client
      • 密码:自动生成
    3. 创建数据库

      • 数据库名称:coreflux-broker-data

    注意: 你可能需要更改数据库内的用户权限,以便能够创建表、插入和选择数据。对于 PostgreSQL,使用 GRANT CREATE, INSERT, SELECT ON DATABASE coreflux-broker-data TO coreflux-broker-client; 授予必要的权限。对于 MySQL,使用 GRANT CREATE, INSERT, SELECT ON coreflux-broker-data.* TO 'coreflux-broker-client'@'%';。

    设置 MySQL 托管数据库

    当你想要熟悉的 SQL、广泛的生态系统支持以及处理备份、更新和监控的完全托管服务时,DigitalOcean 上的托管 MySQL结构化、事务性物联网数据的理想选择。

    DigitalOcean 托管 MySQL 集群设置

    1. DigitalOcean 控制面板,导航到 数据库
    2. 点击 创建数据库集群
    3. 物联网自动化配置你的 MySQL 集群:

      • 数据库引擎:选择 MySQL
      • 版本:选择最新的稳定版本
      • 数据中心区域:选择法兰克福(与你的 VPC 相同)
      • VPC 网络:选择你创建的 coreflux-integrations-vpc
      • 数据库集群名称:mysql-coreflux-test
      • 项目:选择你的目标项目
    4. 根据你的 物联网 需求选择你的计划:

      • 对于开发:基础 计划,1 GB RAM
      • 对于生产:通用型 或更高,用于可扩展存储
    5. 点击 创建数据库集群

    托管数据库 创建过程通常需要 1-5 分钟。完成后,你将被重定向到数据库概览页面,在那里你可以查看连接详细信息并执行管理操作。

    为 MQTT 代理集成配置 MySQL 数据库访问

    系统将提示你进行入门步骤,显示你的连接详细信息,你可以配置入站访问规则(建议限制为你的 IP 和仅 VPC)。

    1. 点击 开始使用 来配置你的 MySQL 数据库
    2. (可选操作)限制入站连接:

      • 添加你本地计算机的 IP 以进行管理访问
      • droplet 将通过 VPC 网络自动获得允许

    MySQL 入站访问和 VPC 规则

    对于连接详细信息,你将看到两个选项 - 公共网络和 VPC 网络。第一个用于像 DBeaver 这样的工具进行外部访问,而第二个将由 Coreflux 服务用于访问数据库。

    MySQL 公共和 VPC 连接详细信息

    1. 记下提供的连接详细信息,包括公共访问和 VPC 访问(每种都有不同的详细信息):

      • 主机:你的数据库主机名
      • 用户:默认管理员用户
      • 密码:自动生成的安全密码
      • 数据库:身份验证数据库名称
    测试 MySQL 数据库连接

    你可以使用提供的连接参数,使用公共访问凭证通过 DBeaver 测试 MySQL 连接。

    注意: 你可能需要更改 DBeaver 的驱动程序设置——设置 allowPublicKeyRetrieval = true。

    在 DBeaver 中测试 MySQL 连接

    创建 MySQL 应用程序数据库和用户(可选)

    为了更好的安全性和组织性,为你的 物联网自动化 应用程序创建一个专用用户和数据库。这也可以通过 DBeaver 或 CLI 完成,但 DigitalOcean 提供了一种用户友好的方法:

    1. 转到你的 托管数据库 集群中的 用户与数据库 选项卡
    2. 创建用户

      • 用户名:coreflux-broker-client
      • 密码:自动生成
    3. 创建数据库

      • 数据库名称:coreflux-broker-data

    设置 MongoDB 托管数据库

    托管 MongoDB 非常适合灵活或不断演变的物联网负载,让你能够存储异构的传感器文档,而无需严格模式,同时平台处理复制、备份和监控。

    创建托管 MongoDB 集群

    1. DigitalOcean 控制面板,导航到 数据库
    2. 点击 创建数据库集群
    3. 物联网自动化配置你的 MongoDB 集群:

      • 数据库引擎:选择 MongoDB
      • 版本:选择最新的稳定版本
      • 数据中心区域:选择法兰克福(与你的 VPC 相同)
      • VPC 网络:选择你创建的 coreflux-integrations-vpc
      • 数据库集群名称:mongodb-coreflux-test
      • 项目:选择你的目标项目
    4. 根据你的 物联网 需求选择你的计划:

      • 对于开发:基础 计划,1 GB RAM
      • 对于生产:通用型 或更高,用于可扩展存储
    5. 点击 创建数据库集群

    托管数据库 创建过程通常需要 1-5 分钟。完成后,你将被重定向到数据库概览页面,在那里你可以查看连接详细信息并执行管理操作。

    为 MQTT 代理集成配置 MongoDB 数据库访问

    系统将提示你进行入门步骤,显示你的连接详细信息,你可以配置入站访问规则(建议限制为你的 IP 和仅 VPC)。

    1. 点击 开始使用 来配置你的 MongoDB 数据库
    2. (可选)限制入站连接:

      • 添加你本地计算机的 IP 以进行管理访问
      • droplet 将通过 VPC 网络自动获得允许

    为 MQTT 代理集成配置数据库访问

    对于连接详细信息,你将看到两个选项:公共网络和 VPC 网络。第一个用于像 MongoDB Compass 这样的工具进行外部访问,而第二个将由 Coreflux 服务用于访问数据库。

    MongoDB 连接详细信息

    1. 记下提供的连接详细信息,包括公共访问和 VPC 访问(每种都有不同的详细信息):

      • 主机:你的数据库主机名
      • 用户:默认管理员用户
      • 密码:自动生成的安全密码
      • 数据库:身份验证数据库名称
    测试 MongoDB 数据库连接

    你可以使用 MongoDB Compass 或提供的连接字符串,使用公共访问凭证测试 MongoDB 连接:

    mongodb://username:password@mongodb-host:27017/defaultauthdb?ssl=true

    测试数据库连接

    创建 MongoDB 应用程序数据库和用户(可选)

    为了更好的安全性和组织性,为你的 物联网自动化 应用程序创建一个专用用户和数据库。这也可以通过 MongoDB Compass 或 CLI 完成,但 DigitalOcean 提供了一种用户友好的方法:

    1. 转到你的 托管数据库 集群中的 用户与数据库 选项卡
    2. 创建用户

      • 用户名:coreflux-broker-client
      • 密码:自动生成
    3. 创建数据库

      • 数据库名称:coreflux-broker-data

    设置 OpenSearch 托管数据库

    托管 OpenSearch 专为高容量物联网数据的搜索、日志分析和时间序列仪表板而设计,该服务为你管理集群健康、扩展和索引存储。

    创建托管 OpenSearch 集群

    1. DigitalOcean 控制面板,导航到 数据库
    2. 点击 创建数据库集群
    3. 物联网自动化配置你的 OpenSearch 集群:

      • 数据库引擎:选择 OpenSearch
      • 版本:选择最新的稳定版本
      • 数据中心区域:选择法兰克福(与你的 VPC 相同)
      • VPC 网络:选择你创建的 coreflux-integrations-vpc
      • 数据库集群名称:opensearch-coreflux-test
      • 项目:选择你的目标项目
    4. 根据你的 物联网 需求选择你的计划:

      1. 对于开发:基础 计划,1 GB RAM
      2. 对于生产:通用型 或更高,用于可扩展存储
    5. 点击 创建数据库集群

    托管数据库 创建过程通常需要 1-5 分钟。完成后,你将被重定向到数据库概览页面,在那里你可以查看连接详细信息并执行管理操作。

    为 MQTT 代理集成配置 OpenSearch 数据库访问

    系统将提示你进行入门步骤,显示你的连接详细信息,你可以配置入站访问规则(建议限制为你的 IP 和仅 VPC)。

    1. 点击 开始使用 来配置你的 OpenSearch 数据库
    2. (可选)限制入站连接:

      • 添加你本地计算机的 IP 以进行管理访问
      • droplet 将通过 VPC 网络自动获得允许

    配置数据库访问

    对于连接详细信息,你将看到两个选项:公共网络和 VPC 网络。第一个用于工具的外部访问,而第二个将由 Coreflux 服务用于访问数据库。你还将看到访问 OpenSearch 仪表板的 URL 和参数。

    连接详细信息

    1. 记下提供的连接详细信息,包括公共访问和 VPC 访问(每种都有不同的详细信息):

      • 主机:你的数据库主机名
      • 用户:默认管理员用户
      • 密码:自动生成的安全密码
      • 数据库:身份验证数据库名称
    测试 OpenSearch 数据库连接

    你可以使用提供的凭证通过 OpenSearch 仪表板测试 OpenSearch 连接:

    测试数据库连接

    步骤 3 — 在 DigitalOcean Droplet 上部署 Coreflux MQTT 代理

    创建 DigitalOcean Droplet

    1. 在你的 DigitalOcean 控制面板中导航到 Droplets
    2. 点击 创建 Droplet

    创建新的 DigitalOcean Droplet

    1. MQTT 代理 部署配置你的 droplet

      • 选择区域:法兰克福(与你的托管数据库相同)
      • VPC 网络:选择 coreflux-integrations-vpc
      • 选择镜像:转到 Marketplace 选项卡
      • 搜索 “Coreflux” 并从 Marketplace 中选择 Coreflux

    从 Marketplace 选择 Coreflux

    1. 为你的 物联网 工作负载选择大小

      • 对于开发:基础 计划,2 GB 内存
      • 对于生产:基础通用型 计划,4+ GB 内存以获得可扩展性能
    2. 选择身份验证方法

      • SSH 密钥:推荐用于提高安全性

        1. 可以使用 ssh-keygen 在本地创建密钥
      • 密码:备选方案
    3. 最终确定详细信息

      • 主机名:coreflux-test-broker
      • 项目:选择你的项目
      • 标签:为 DevOps 组织添加相关标签
    4. 点击 创建 Droplet
    5. 查看 Droplet 主页并等待其完成部署

    Droplet 部署进行中

    替代方案 - 在Docker镜像Droplet上使用Docker安装Coreflux MQTT代理

    采用与Coreflux Droplet相同的方法,选择Docker作为市场应用镜像。

    一旦你的droplet运行起来,通过已定义的认证方法或Droplet主页上提供的Web控制台,使用SSH连接到它:

    ssh root@your-droplet-ip

    SSH连接到Coreflux droplet

    使用Docker运行Coreflux MQTT代理

    docker run -d \
      --name coreflux \
      -p 1883:1883 \
      -p 1884:1884 \
      -p 5000:5000 \
      -p 443:443 \
      coreflux/coreflux-mqtt-broker-t:1.6.3

    这个Docker命令:

    • 以分离模式运行容器 (-d)
    • 将容器命名为 coreflux
    • 暴露MQTT和Web界面所需的端口
    • 使用最新的Coreflux镜像

    验证MQTT代理是否在运行:

    docker ps

    你应该看到一个正在运行的容器:

    Docker中运行的Coreflux容器

    通过使用默认值连接到MQTT代理来验证部署

    你可以通过MQTT客户端(如MQTT Explorer)访问MQTT代理,以验证对代理的访问,无论采用何种部署方法。

    MQTT Explorer连接到Coreflux代理

    步骤4 — 为安全的物联网通信配置防火墙规则(可选)

    对于生产环境的物联网自动化部署,配置防火墙规则以限制访问:

    1. 导航到网络防火墙
    2. 点击创建防火墙
    3. 配置MQTT代理安全的入站规则:

      • SSH:来自你IP的端口22
      • MQTT:来自你的物联网应用程序源的端口1883
      • 带TLS的MQTT:用于安全的带TLS的MQTT的端口1884
      • WebSocket:用于通过WebSocket的MQTT的端口5000
      • 带TLS的WebSocket:用于通过带TLS的WebSocket的MQTT的端口443
    4. 将防火墙应用到你的droplet

    关于详细的防火墙配置,请参考DigitalOcean的防火墙快速入门教程。生产提示: 将MQTT端口1883限制在特定的源IP或VPC范围,并且对于外部设备连接,优先使用端口1884(带TLS的MQTT)。如果你需要额外的安全层,请考虑使用带有私有网络的DigitalOcean应用平台。

    步骤5 — 使用Coreflux的Language of Things设置物联网数据集成

    安装LoT Notebook扩展

    用于Visual Studio Code的LoTLanguage of ThingsNotebook扩展提供了一个集成的低代码开发环境,用于MQTT代理编程和物联网自动化。了解更多关于Coreflux的Language of Things (LoT)用于低代码物联网自动化的信息。

    1. 打开Visual Studio Code
    2. 转到扩展(Ctrl+Shift+X)
    3. 搜索"LoT Notebooks"
    4. 安装由Coreflux提供的LoT VSCode Notebooks扩展

    Visual Studio Code中的LoT Notebook扩展

    连接到你的MQTT代理

    配置与你的Coreflux MQTT代理的连接,当在顶部栏提示时或通过点击底部左侧栏的MQTT按钮时,使用默认凭据:

    • 用户:root
    • 密码:coreflux

    假设没有错误,你将在底部左侧栏看到与代理的MQTT连接状态。

    VS Code中的Coreflux MQTT连接状态

    步骤6 — 通过Actions在MQTT代理中创建数据

    对于这个用例,我们将通过一个转换管道将原始数据集成到数据库中。然而,由于在演示中没有连接到任何MQTT设备,我们将利用LoT的能力,并使用一个Action来模拟设备数据。

    在LoT中,Action是一种可执行的逻辑,由特定事件触发,例如定时间隔、主题更新或其他操作或系统组件的显式调用。Actions允许与MQTT主题、内部变量和负载进行动态交互,促进复杂的物联网自动化工作流。

    因此,我们可以使用一个以定义的时间间隔在特定主题中生成数据的Action,然后由我们将在下面定义的管道的其余部分使用。

    你可以下载包含示例项目的github仓库。

    生成模拟物联网数据

    使用低代码LoTLanguage of Things)界面创建一个Action来生成模拟传感器数据:

    DEFINE ACTION RANDOMIZEMachineData
    ON EVERY 10 SECONDS DO
        PUBLISH TOPIC "raw_data/machine1" WITH RANDOM BETWEEN 0 AND 10
        PUBLISH TOPIC "raw_data/station2" WITH RANDOM BETWEEN 0 AND 60

    在提供的Notebook中,你还有一个Action可以执行递增计数器来模拟数据,作为提供Action的替代方案。

    运行LoT操作以生成模拟物联网数据

    当你运行这个Action时,它将:

    • 自动部署到MQTT代理
    • 每10秒生成一次模拟的物联网传感器数据
    • 实时数据发布到特定的MQTT主题
    • LoT Notebook界面中显示同步状态

      • 此状态显示LoT Notebook上的代码是否与代理中运行的代码不同,或者是否完全缺失

    步骤7 — 为实时处理创建数据转换模型

    使用Language of Things定义数据模型

    Coreflux中的模型用于转换、聚合和计算来自输入MQTT主题的值,并将结果发布到新主题。它们是创建适用于你多个数据源的UNS - 统一命名空间 - 的基础。

    因此,通过该模型,你可以定义原始物联网数据的结构与转换方式,适用于单个设备,也支持同时处理多个设备(借助通配符+实现)。模型还作为用于可扩展存储托管数据库的关键数据模式。

    DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
    
        ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
    
        ADD "energy_wh" WITH (energy * 1000)
    
        ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
    
        ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
    
        ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
    
        ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
    
        ADD "timestamp" WITH TIMESTAMP "UTC"

    这个低代码模型:

    • 使用通配符+自动应用到所有机器
    • 通过乘以1000将能量转换为瓦时(energy_wh)
    • 根据能量阈值确定生产状态
    • 跟踪生产计数和停机事件
    • 向所有实时数据点添加时间戳
    • 从主题结构中提取机器ID
    • 将结构化数据发布到Simulator/Machine/Data主题(将+替换为每个匹配触发器/源数据格式的主题)

    由于我们使用Action生成了两个模拟传感器/机器,我们可以看到模型结构自动应用于两者,同时生成了一个json对象和各个单独的主题。

    Coreflux模型发布的转换后的MQTT数据

    步骤8 — 为可扩展存储设置数据库集成

    选择与你在步骤2中选择的数据库相匹配的数据库集成部分。

    PostgreSQL集成

    在本节中,你将学习如何将处理后的物联网数据存储到DigitalOcean上的PostgreSQL托管数据库中。

    要将处理后的物联网数据存储到PostgreSQL托管数据库中,你需要在Coreflux中定义一个Route。Route使用简单、低代码的配置指定数据如何从你的MQTT代理发送到你的PostgreSQL集群:

    DEFINE ROUTE PostgreSQL_Log WITH TYPE POSTGRESQL
    
        ADD SQL_CONFIG
    
            WITH SERVER "db-postgresql.db.onmyserver.com"
    
            WITH PORT 25060
    
            WITH DATABASE "defaultdb"
    
            WITH USERNAME "doadmin"
    
            WITH PASSWORD "AVNS_pass"
    
            WITH USE_SSL TRUE
    
            WITH TRUST_SERVER_CERTIFICATE FALSE

    使用来自DigitalOcean的你自己的PostgreSQL连接详细信息替换,并在你的LoT Notebook中运行该Route重要提示: 为了更好的安全性和更低的延迟,请使用VPC连接详细信息(而非公共连接)。VPC主机名和端口与公共连接字符串不同 - 请检查你的数据库集群的连接详细信息页面以获取这两个选项。

    为PostgreSQL数据库存储更新模型

    修改你的LoT模型以使用数据库路由进行可扩展存储,通过将此添加到模型的末尾:

    STORE IN "PostgreSQL_Log"
    
        WITH TABLE "MachineProductionData"

    此外,添加一个带有主题的参数,以便在你的托管数据库中为每个条目提供唯一标识符。

    DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
    
        ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
    
        ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"
    
        ADD "energy_wh" WITH (energy * 1000)
    
        ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
    
        ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
    
        ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
    
        ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
    
        ADD "timestamp" WITH TIMESTAMP "UTC"
    
        STORE IN "PostgreSQL_Log"
    
            WITH TABLE "MachineProductionData"

    部署此更新后的操作后,所有数据在更新时应自动存储在数据库中。

    MySQL集成

    MySQL是一种广泛使用的关系数据库管理系统,非常适合大规模存储和分析物联网数据。在本节中,你将学习如何将你的Coreflux MQTT代理连接到DigitalOcean上的托管MySQL数据库,以便你的实时设备数据能够安全可靠地持久化,用于分析、报告或与其他应用程序集成。

    要启用此集成,你必须在Coreflux的LoT(Language of Things)中定义一个Route,指示处理后的数据应该发送到哪里以及如何发送。下面是路由数据到MySQL数据库所需的低代码格式。请务必根据需要替换你自己的连接详细信息:

    DEFINE ROUTE MySQL_Log WITH TYPE MYSQL
        ADD SQL_CONFIG
            WITH SERVER "db-mysql.db.onmyserver.com"
            WITH PORT 25060
            WITH DATABASE "defaultdb"
            WITH USERNAME "doadmin"
            WITH PASSWORD "AVNS_pass"
            WITH USE_SSL TRUE
            WITH TRUST_SERVER_CERTIFICATE FALSE

    使用来自DigitalOcean的你自己的MySQL连接详细信息替换,并在你的LoT Notebook中运行该Route重要提示: 为了更好的安全性和更低的延迟,请使用VPC连接详细信息(而非公共连接)。如果你遇到连接问题,请验证TRUST_SERVER_CERTIFICATE是否已为你的MySQL版本正确设置 - 某些版本需要TRUE,而其他版本则使用FALSE

    为MySQL数据库存储更新模型

    修改你的LoT模型以使用数据库路由进行可扩展存储,通过将此添加到模型的末尾:

    STORE IN "MySQL_Log"
        WITH TABLE "MachineProductionData"

    此外,添加一个带有主题的参数,以便在你的托管数据库中为每个条目提供唯一标识符。

    DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
        ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
        ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"
        ADD "energy_wh" WITH (energy * 1000)
        ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
        ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
        ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
        ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
        ADD "timestamp" WITH TIMESTAMP "UTC"
        STORE IN "MySQL_Log"
            WITH TABLE "MachineProductionData"

    部署此更新后的操作后,所有数据在更新时应自动存储在数据库中。

    MongoDB集成

    MongoDB是一种NoSQL数据库,非常适合存储和查询具有灵活模式的物联网数据。在本节中,你将学习如何将你的Coreflux MQTT代理连接到DigitalOcean上的托管MongoDB数据库,以便你的实时设备数据能够安全可靠地持久化,用于分析、报告或与其他应用程序集成。

    要启用此集成,你必须在Coreflux的LoT(Language of Things)中定义一个Route,指示处理后的数据应该发送到哪里以及如何发送。下面是路由数据到MongoDB数据库所需的低代码格式。请务必根据需要替换你自己的连接详细信息:

    DEFINE ROUTE mongo_route WITH TYPE MONGODB
        ADD MONGODB_CONFIG
            WITH CONNECTION_STRING "mongodb+srv://<username>:<password>@<cluster-uri>/<database>?tls=true&authSource=admin&replicaSet=<replica-set>"
            WITH DATABASE "admin"

    使用来自DigitalOcean的你自己的MongoDB连接详细信息替换,并在你的LoT Notebook中运行该Route。重要提示: 当可用时,请使用VPC连接字符串格式。连接字符串应包括tls=trueauthSource=admin参数。有关MongoDB连接故障排除,请参阅我们关于连接MongoDB的教程。

    为MongoDB数据库存储更新模型

    修改你的LoT模型以使用数据库路由进行可扩展存储,通过将此添加到模型的末尾:

    STORE IN "mongo_route"
        WITH TABLE "MachineProductionData"

    此外,添加一个带有主题的参数,以便在你的托管数据库中为每个条目提供唯一标识符。

    DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
        ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
        ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"
        ADD "energy_wh" WITH (energy * 1000)
        ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
        ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
        ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
        ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
        ADD "timestamp" WITH TIMESTAMP "UTC"
        STORE IN "mongo_route"
            WITH TABLE "MachineProductionData"

    部署此更新后的操作后,所有数据在更新时应自动存储在数据库中。

    OpenSearch集成

    OpenSearch是一种分布式搜索和分析引擎,专为大规模数据处理和实时分析而设计。在本节中,你将学习如何将你的Coreflux MQTT代理连接到DigitalOcean上的托管OpenSearch数据库,以便你的实时设备数据能够安全可靠地持久化,用于分析、报告或与其他应用程序集成。

    要启用此集成,你必须在Coreflux的LoT(Language of Things)中定义一个Route,指示处理后的数据应该发送到哪里以及如何发送。下面是路由数据到OpenSearch数据库所需的低代码格式。请务必根据需要替换你自己的连接详细信息:

    DEFINE ROUTE OpenSearch_log WITH TYPE OPENSEARCH
        ADD OPENSEARCH_CONFIG
            WITH BASE_URL "https://my-opensearch-cluster:9200"
            WITH USERNAME "myuser"
            WITH PASSWORD "mypassword"
            WITH USE_SSL TRUE
            WITH IGNORE_CERT_ERRORS FALSE

    使用来自DigitalOcean的你自己的OpenSearch连接详细信息替换,并在你的LoT Notebook中运行该Route。重要提示: 当可用时,请使用VPC基础URL(而非公共URL)。基础URL格式通常为https://your-cluster-hostname:9200。对于OpenSearch仪表板访问,请使用数据库集群详细信息中提供的单独的仪表板URL。有关更多详细信息,请参阅我们的OpenSearch快速入门。

    为OpenSearch数据库存储更新模型

    修改你的LoT模型以使用数据库路由进行可扩展存储,通过将此添加到模型的末尾:

    STORE IN "OpenSearch_Log"
        WITH TABLE "MachineProductionData"

    此外,添加一个带有主题的参数,以便在你的托管数据库中为每个条目提供唯一标识符。

    DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
        ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
        ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"
        ADD "energy_wh" WITH (energy * 1000)
        ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
        ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
        ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
        ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
        ADD "timestamp" WITH TIMESTAMP "UTC"
        STORE IN "OpenSearch_Log"
            WITH TABLE "MachineProductionData"

    部署此更新后的操作后,所有数据在更新时应自动存储在数据库中。

    步骤9 — 验证完整的物联网自动化管道

    监控实时数据流

    1. MQTT Explorer:使用MQTT客户端验证实时数据发布
    2. 数据库客户端:连接以验证数据的存储(PostgreSQL使用DBeaver,MongoDB使用MongoDB Compass,OpenSearch使用OpenSearch Dashboards)

    验证PostgreSQL存储

    使用DBeaver连接到你的PostgreSQL托管数据库以验证可扩展存储

    1. 使用来自你的DigitalOcean数据库的连接字符串
    2. 导航到 coreflux-broker-data 数据库(或你为数据库指定的名称)
    3. 检查 MachineProductionData 表中存储的记录

    显示存储的物联网记录的PostgreSQL表

    正如我们之前看到的,所有数据都可在MQTT代理中用于其他用途和集成。

    带有实时机器数据的MQTT主题

    验证MongoDB存储

    使用MongoDB Compass连接到你的MongoDB托管数据库以验证可扩展存储

    1. 使用来自你的DigitalOcean数据库的连接字符串
    2. 导航到 coreflux-broker-data 数据库(或你为数据库指定的名称)
    3. 检查 MachineProductionData 集合中存储的文档

    检查数据库存储

    你应该看到具有类似结构的实时数据文档:

    {
      "_id": {
        "$oid": "68626dc3e8385cbe9a1666c3"
      },
      "energy": 36,
      "energy_wh": 36000,
      "production_status": "active",
      "production_count": 31,
      "stoppage": 0,
      "maintenance_alert": false,
      "timestamp": "2025-06-30 10:58:11",
      "device_name": "station2"
    }

    正如我们之前看到的,所有数据都可在MQTT代理中用于其他用途和集成。

    验证MySQL存储

    使用DBeaver连接到你的MySQL托管数据库以验证可扩展存储:

    1. 使用来自你的DigitalOcean数据库的连接字符串
    2. 导航到coreflux-broker-data数据库(或你为数据库指定的名称)
    3. 检查MachineProductionData表中存储的记录

    验证MySQL中存储的物联网记录

    与其他集成一样,所有数据也可在MQTT代理中用于其他用途和下游集成。

    监控实时数据流

    验证OpenSearch存储

    使用提供的URL和凭据打开OpenSearchDashboards

    1. 打开菜单并选择索引管理选项

      1. 在菜单中选择索引选项,查看你的表名是否出现在列表中

    检查数据库存储

    1. 返回主页并在菜单中选择发现选项

      1. 按照提供的步骤创建索引模式
      2. 返回到发现页面,你应该会看到你的数据

    检查数据库存储

    正如我们之前看到的,所有数据都可在MQTT代理中用于其他用途和集成。

    检查数据库存储

    步骤10 - 扩展你的用例和集成

    测试LoT能力

    • 发布示例数据:使用MQTT Explorer将示例数据集发布到你的Coreflux代理。尝试不同的负载结构和不同的模型/操作,查看它们如何处理并存储到你选择的数据库中。
    • 数据验证:验证你数据库中的数据与你发布的有效负载是否匹配。使用你的数据库客户端(PostgreSQL使用DBeaver,MongoDB使用MongoDB Compass,OpenSearch使用OpenSearch Dashboards)检查一致性和准确性,确保你的物联网自动化集成按预期工作。比较时间戳、字段转换和数据类型,以验证你的实时数据管道。
    • 实时监控:使用另一个MQTT数据源(例如具有MQTT连接功能的简单传感器)设置连续的实时数据馈送。观察Coreflux和你的数据库如何处理传入的物联网数据流,并探索数据检索和查询的响应时间。

    构建分析和可视化

    • 创建仪表板:与Grafana等可视化工具集成,创建显示你的物联网数据的仪表板,从实时MQTT主题和历史数据库查询中提取数据。跟踪指标,如设备正常运行时间、传感器读数、生产计数或来自你自动化系统的维护警报。了解如何使用我们的教程设置DigitalOcean托管数据库与Prometheus和Grafana的监控。对于实时仪表板,直接订阅MQTT主题;对于历史趋势和聚合,查询你的数据库。
    • 趋势分析:利用你数据库的能力来分析随时间变化的趋势:

      • PostgreSQL:使用SQL查询进行复杂的关系分析
      • MongoDB:使用聚合框架进行基于文档的分析
      • OpenSearch:使用高级分析和搜索能力进行全文搜索和时间序列分析
    • 多数据库集成:探索集成其他托管数据库,如用于非结构化数据的MongoDB,用于关系数据的PostgreSQL,用于结构化查询的MySQL,或用于高级分析和搜索的OpenSearch。使用Coreflux路由将数据同时发送到多个目的地。

    优化和扩展你的物联网基础设施

    • 负载测试:使用LoT Notebook或自动化脚本通过同时发布多条消息来模拟高流量。监控你的Coreflux MQTT代理和数据库集群如何处理负载,并识别你的数据管道中的任何瓶颈。
    • 扩展DigitalOcean提供垂直和水平扩展选项。随着你的物联网数据需求增长,增加droplet资源(CPU、RAM或存储)。扩展你的托管数据库集群以处理更大的数据集,并配置自动扩展警报,以便在接近资源限制时通知你。

    常见问题解答

    1. 如何将Coreflux MQTT代理与托管数据库集成?

    你通过定义指向目标服务(PostgreSQL、MySQL、MongoDB或OpenSearch)的LoTRoute来将Coreflux MQTT代理与托管数据库集成。每个路由使用适当的连接参数(服务器或连接字符串、端口、数据库名称、用户名、密码和SSL/TLS选项),并自动将MQTT消息有效负载持久化到表、集合或索引中。一旦定义好路由,你就使用STORE IN指令将其附加到Model,这样每个处理后的消息都会被写入你选择的数据库。

    2. 我能否在不编写自定义集成代码的情况下将MQTT数据直接保存到数据库?

    可以。Coreflux设计为一个低代码集成层,因此你无需编写应用程序代码或外部ETL作业来持久化数据。对于每种数据库类型,你配置一个LoT路由(例如,PostgreSQL_LogMySQL_Logmongo_routeOpenSearch_Log),然后使用STORE IN "<route_name>" WITH TABLE "MachineProductionData"扩展你的模型。Coreflux处理连接池、重试和错误处理,因此你可以专注于建模主题和转换,而不是样板数据库代码。

    3. 我应该为MQTT物联网数据存储选择哪种托管数据库?

    你的MQTT物联网数据的最佳托管数据库取决于你的数据结构、查询需求和分析目标。使用下面的比较表来帮助你决定:

    数据库最适合示例用例
    PostgreSQL强一致性、关系模式、复杂的SQL查询工业传感器网络、事务性事件、需要跨连接数据集的分析
    MySQL关系数据、结构化查询、广泛的兼容性库存系统、生产指标、传统业务记录
    MongoDB灵活、不断演进的模式;文档存储具有可变负载的互联设备、具有变化格式的物联网遥测
    OpenSearch全文搜索、分析、仪表板、日志索引时间序列分析、监控、事件日志、物联网搜索和可视化

    提示: 你可以通过配置多个Coreflux路由同时使用多个托管数据库。这使得可以从同一个MQTT流中,将结构化的物联网数据存储在PostgreSQL或MySQL中,在OpenSearch中聚合日志和指标,并在MongoDB中收集非结构化或无模式数据。

    4. 这种架构如何处理实时和历史分析?

    Coreflux将所有处理后的值保留在MQTT主题上,供实时消费、仪表板或额外管道使用,而Routes则将相同的建模数据持久化到你的数据库中,用于历史查询。在实践中,你可以订阅主题以进行即时反应(警报、控制回路),并查询PostgreSQL/MySQL/MongoDB/OpenSearch以进行聚合、趋势和长期分析。这种双路径设计反映了MQTT和物联网数据集成教程中的常见模式,其中代理提供实时消息传递,而数据库提供持久存储和分析。

    5. Coreflux和托管数据库之间的连接有多安全?

    当部署在DigitalOcean上时,你可以使用VPC网络来保持Coreflux MQTT代理和数据库之间的所有通信私密。VPC将你的资源与公共互联网访问隔离开来,并且DigitalOcean托管数据库支持连接的TLS加密。此外,你可以为你的Coreflux应用程序创建具有有限权限的专用数据库用户,遵循最小权限原则。

    6. 这个设置是否适用于生产环境物联网部署?

    是的。这种架构反映了生产环境中MQTT和数据库集成所使用的模式,其中代理前端处理设备流量,而托管数据库层提供持久性和分析。DigitalOcean托管数据库提供自动备份、高可用性和监控,而Coreflux MQTT代理可以水平扩展以处理高消息吞吐量。对于生产环境,你还应该配置防火墙规则、使用强凭据、为MQTT和数据库连接启用TLS,并根据预期的消息量来调整你的droplet和集群大小。

    7. 我能否在没有公共互联网访问的情况下,或在混合环境中运行MQTT代理?

    可以。MQTT代理通常部署在私有网络或边缘环境中,公共资源一致指出,只要客户端可以访问代理,MQTT就可以在没有公共互联网的情况下工作。使用DigitalOcean,你可以将Coreflux和你的数据库保持在VPC内部,并且只暴露绝对必要的内容(例如,VPN、堡垒主机或有限的防火墙规则)。如果你需要混合或多站点架构,你还可以将选定的主题与其他代理或云区域同步。

    8. 在物联网数据中使用MQTT和数据库是否存在任何限制或权衡?

    MQTT针对轻量级、事件驱动的消息传递进行了优化;数据库则针对存储和查询进行了优化。存储每一条原始消息可能会变得昂贵或嘈杂,因此最佳实践建议仔细建模数据(例如,聚合指标、过滤主题或降采样)。极低功耗设备或超受限网络可能难以维持持久连接或处理TLS开销,在这种情况下,你可能需要调整QoS级别、批处理和保留策略。只要你在设计中考虑到这些权衡,MQTT加上托管数据库对于大多数物联网场景都能很好地工作。

    9. 我如何为我的物联网项目在PostgreSQL、MySQL、MongoDB和OpenSearch之间做出选择?

    你应该根据物联网数据结构、可扩展性以及你希望如何查询设备数据来选择托管数据库。下表总结了每个选项的优势:

    数据库当...时最佳典型用例关键优势
    PostgreSQL你需要复杂的关系查询、强一致性和事务完整性(ACID支持)。工业传感器网络、将设备数据与生产相关联、需要对连接的数据集进行分析关系模式、高级SQL、一致性
    MySQL你的工作负载是结构化的,具有广泛的工具和兼容性需求。库存跟踪、传统业务系统、生产指标更简单的关系需求、广泛支持
    MongoDB你的设备负载和模式不断演变,或者你希望使用灵活的、基于文档的存储进行快速原型设计。具有可变格式的物联网遥测、快速开发、半结构化数据灵活的模式、易于扩展、快速原型设计
    OpenSearch你需要分析、搜索或对大容量的物联网数据(日志、时间序列、事件)进行仪表板展示。搜索传感器数据、日志分析、可视化、基于关键字/时间的查询搜索、全文、分析、快速聚合

    结论

    将Coreflux MQTT代理与DigitalOcean的托管数据库服务(PostgreSQL、MongoDB、MySQL或OpenSearch)集成,为你提供了实时物联网数据处理和存储的完整设置。按照本教程,你已经使用低代码开发实践构建了一个收集、处理和存储物联网数据的自动化管道。

    借助Coreflux的架构和你选择的数据库的存储特性,你可以处理大量的实时数据并查询它以获取洞察。无论你是监控工业系统、跟踪环境传感器还是管理智慧城市基础设施,这种设置都让你能够基于实时MQTT主题和历史数据库查询做出数据驱动的决策。

    了解更多关于DigitalOcean托管数据库的信息,以及DigitalOcean 针对 IoT行业的产品服务支持,可咨询 DigitalOcean 中国区独家战略合作伙伴卓普云AI Droplet(aidroplet.com)

    你可以尝试提供的用例或使用Coreflux和DigitalOcean实现你自己的用例。你还可以在DigitalOcean Droplet市场或通过Coreflux网站获取免费的Coreflux MQTT代理

    突发奇想,因为平时都是 claude code, codex, gemini 混着一起用,改不同的模块,就在想能不能统计各种 AI Cli 工具在项目里“真正写进代码库”的贡献量。大概调研了一下发现确实可以,所以实现了一个版本,执行下面的命令可以直接扫描代码库

    npx ai-credit
    

    工作原理是扫描各类 AI 工具的本地会话日志,提取实际产生的 file diff ,然后和当前工作区逐行匹配,输出每个工具/模型的新增、删除行数和文件列表。所有操作全部在本地,不会做任何上传,代码开源。

    官网: https://ai-credits.vercel.app

    repo: https://github.com/debugtheworldbot/ai-credit

    欢迎试用、提建议、补充更多 cli 🙌