包含关键字 typecho 的文章

作者 | 作业帮大数据团队(覃争、孙建业、刘泽强)

历史背景

  • 作业帮 Presto 主要应用在即席查询场景,基本不用于 toB 系统和例行数仓构建场景。天级查询规模大概在 2000 ~ 5000 次,均值查询耗时分钟级别,整体偏慢;

  • Presto、Yarn、HDFS 是混布的,进程间只做内存资源限制,高峰期宿主节点 Cpu 几乎打满,严重影响即席查询体验,业务负反馈明显。针对核心业务采用独立部署方式缓解;

  • 在 toB 系统的 OLAP 场景使用 StarRocks 多年,团队对 StarRocks 的理解比 Presto 更深刻,并且高版本 StarRocks 存算分离已经支持 Trino Dialect;

  • Presto 版本较老,不支持查询已有 Iceberg 表;

技术方案

StarRocks 采用全面向量化引擎和基于 CBO 的智能查询规划,在复杂的多表关联查询场景下性能表现很好,同时原生支持具备 Iceberg 查询能力,社区成熟技术迭代快。同时在存算一体场景采用 StarRocks 已有很多经验,所以采用 StarRocks 替换 Presto。为避免业务扰动且收益正向,核心是平台层面架构适配、解决语法兼容性和性能优化、任务迁移。

整体架构

即席查询整体架构如下图。用户通过数据平台编辑 SQL 任务,提交给 QueryEngine 即席查询服务(任务管理、语法校验、结果脱敏、日志可读性转换等等),再由 QueryEngine 提交给计算网关 Teralink(权限认证、审计、分发、引擎入口收敛等),Teralink 根据具体执行引擎提交给集群。StarRocks 采用存算分离模式部署,利用 Catalog 查询 Hive、Iceberg 数据。考虑到长期 StarRocks 和 Spark 基于 k8s 弹性,做了容器部署。为避免业务扰动最大化兼容 Presto sql 语法,详细内容见下文。在 StarRocks 内部解析异常时也可以回退到 StarRocks Dialect Parser 起到一定补充作用。

在迁移方案时,为了保障稳定和数据准确,在 QueryEngine 这层做了防御措施。当使用 StarRocks 集群查询失败后回退到 Presto。在准确性方面,根据已有双跑结果建立 StarRcoks SQL 指纹库,指纹库以外的查询 diff 数据结果,数据准确完善指纹库信息,预期之外情况人工介入解决。

双跑方案

资源节省的角度考虑,我们没有将 Presto 和 StarRocks 的资源打平,而是 Presto 利用现有集群,StarRocks 利用测试小集群,资源情况如下:

  • Presto 混布以单节点可用最大内存、cpu 内存比为 1:3.5 计算,其中一个集群大概 2500 多核(白天 cpu 有空闲)

  • StarRocks 资源情况 6 CN * 32 核 = 192 核

  • 在业务低峰期针对近 N 天的查询进行双跑。大概步骤如下

  • 过滤出 Presto 执行成功的 SQL,先 explain,explain 不通过的跳过,并记录;

  • 双跑串行查询(StarRocks 多次),记录数据、耗时等信息;

  • 分析耗时、利用 sum(hash(column)) 对比结果数据;

结果分析

兼容结果:通过 3 个多月的数据验证 diff,遇到主要问题如下,大多数通过改造解决,少数开发成本高且使用率低的通过报错后给替代方案解决。

性能结果:StarRocks 的整体性能符合预期,缓存以后查询性能也有明显的提升。

缓存加速

历史因 Hive 数据存储和计算 cpu 增长不成线性比例,用 Cos 替换了 HDFS,做了离线场景的存算分离。查询远端 cos 数据与 StarRocks data cache 数据时,性能上还是有很大差距的,Cos 内部并没有数据格式的概念,查询引擎很难利用 parquet 格式特殊性实现 data pruning,加上网络请求的耗时,查询速度会有衰减。为了尽可能提高查询效果,我们会利用 SQL 解析获取最近 N 天查询过的表,监听这些表新增分区,自动触发查询进行数据缓存,命中率情况如下图。

分析 data cache 的原理,缓存文件由 CN 节点个数、Host Ip 和 Port 决定的。在 K8S 上 StarRocks CN 节点采用的是 StatefulSet 方式进行部署,虽然我们目前还没有走弹性扩缩的逻辑,但是 StarRocks CN Pod 的重启 / 重建也会影响 data cache 的分布。因此我们目前的部署采用的是:固定资源池 + Pod 滚动重启 / 重建 + Pod 规格基本用满一个节点  组合的方式,来控制 pod 不会发生漂移。后面待云上能力支持完善后, 我们会采用 Local PVC 的方式来防止 Pod 漂移,同时考虑引入 StarRocks 4.0 新增的缓存共享能力。

核心问题

平台语法解析慢问题

  • 问题背景:平台侧是 explain 来实现语法检测的,Presto 基本秒级返回,StarRocks 耗时比较久,有的甚至超过 30s ~ 1min

  • 原因分析:explain 过程包含多个阶段 Parse、Analyze、Logical Plan、SQL Optimize、 生成 Plan Fragment。分析 Profile 发现耗时主要在 SQL Optimize 阶段,RBO/CBO 获取查询源信息阶段。StarRocks 现有的 explain 能力不支持跳过 SQL 优化阶段

  • 解决方案:调整 SQL 为 explain select * from( {user_original_sql} ) where 1!=1

Cancel 查询无效

  • 问题背景:除了 StarRocks、Presto 外还有长时运行的 Spark 任务,平台侧提供了运行中任务取消能力;

  • 原因分析:实际上是 2 个问题

  • 在 Teralink(基于 Kyuubi 二开)中,JdbcSQLEngine 通过调用 MySQL Statement.close() 来处理 cancel 请求。但由于 Statement.close() 需要获取一把 Statement 内部操作锁,而该锁只有在 SQL 执行结束后才会释放,导致 cancel 请求被阻塞,直到 SQL 执行完成,从而无法真正中断正在运行的 SQL。

  • MySQL  Statement cancel 会新创建一个 connection,而 StarRocks 对外暴露的是 LB, 默认没有开启会话保持,新建 connection,会路由到不同的后端 FE 上

  • 解决方案:

  • 对 JdbcSQLEngine 进行了调整,在 JdbcDialect 中引入 cancel 方法,并在 cancel 流程中先 cancel Statement 的执行,再进行 close,以确保 SQL 能够被 kill

  • 因 LB 开启会话保持会导致 FE 请求不均、某些查询时间比较长,超过保持时间同样有问题。在 Teralink 这层针对 cancel 设置重试策略,检测到相关错误,继续重试 cancel,并设置重试上限;

Iceberg 表缓存导致 FE OOM

  • 问题背景:查询 Iceberg 表时,FE 内存变化较大,偶发 OOM 导致 pod 重启

  • 原因分析:查询 Iceberg 表时大概逻辑为 1. 先检测 metadata.json 文件更新时间判断缓存是否过期。2. 如果过期则拉取对应 snap 文件并获取到 m0 文件列表。3. 解析 m0 文件列表定位数据文件。 当 Iceberg 表比较大或者频繁更新时产生很多 m0 文件,第 2 步内存 fe 内存会缓慢增加,第 3 步 fe 内存会剧烈增加,引起 FE OOM 问题

  • 解决方案:关闭 iceberg 表元数据缓存、利用 starrocks 自身 skip manifest 文件的能力在查询时快速进行分区过滤并定位 m0 文件;

iceberg 表 plan_mode = distributed 报错

  • 问题背景:starrocks 在使用分布式模式解析 iceberg 表元数据时会把虚拟的 metadataTable 当成 hive 表再去 metastore 获取元数据而报错

  • 原因分析:iceberg 表生成执行计划有两种方式。本地模式,使用 fe 进行 metadata.json + snap.avro + m0.avro 文件解析。分布式模式,预设一个 metadata 表及其表结构并把 iceberg 表的元数据 avro 文件当成 hive 普通表的 avro 文件利用 cn 分布式处理。starrocks 采用的是自动选择模式,根据所需扫描的 m0 文件的总大小及数量进行选择。当选择 distributed 模式时会稳定报错,因为在权限验证阶段会强制从 metastore 获取 metadata 表元数据

  • 解决方案:修改代码,如果检测到表类型是 iceberg 表的虚拟元数据表,即 metadataTable,则不进行元数据获取

multi_distinct_count 执行慢问题

问题背景:当 sql 含有多个 count_distinct 表达式,单 CN 节点内存使用极高、cpu 空闲、执行速度慢,无法多并发执行;

原因分析:当查询包含 count_distinct 时,StarRocks 会有些内部判断逻辑

  • 如果数据量很大的情况下,分出多个数据流分别进行 streaming aggregate 最后 nestloop join 成单条

  • 如果数据量小且列基数都低,重写成 multi_disticnt_count 函数单点执行

  • 当统计信息缺失则可能误判,也就是在数据量很大时误用 2,导致问题。

解决方案:由于不是所有表都具有完整统计信息,所以禁止 multi_disticnt_count 优化 set global  prefer_cte_rewrite=true,放弃小查询性能收益,保障整体查询速度稳定

执行计划生成耗时长

问题背景:starrocks 为生成更优的执行计划而在 plan 阶段会做更加详细的统计信息收集,导致 plan 阶段时间长,而且为保证数据准确性我们关闭了 fe 文件元数据缓存

原因分析:抽取具体 SQL 分析 trace times(见下图)。在 hive 表统计信息缺失时,优化器会获取全量文件列表推导统计信息,hive 表文件过多会导致在 rbo 阶段速度很慢。

解决方案:增大 async_refresh_max_thread_num 到 128,以 128 线程并发获取分区的文件列表。默认超时时间在存算分离查询数据湖场景偏低,加大 set global new_planner_optimize_timeout=60000 缓解

limit 方式限制返回条数导致结果乱序

问题背景:为限制 sql 返回数据条数,代理层会默认在原始 sql 外层嵌套一层 limit 表达式

原因分析:增加 limit 后分析 explain,因为外层没有排序条件而被判定内层的排序条件误用,所以内层的 order by 被删除导致查询结果不符合预期。

解决方案:设置 global sql_select_limit = n,在原有执行计划树添加一个 TOP-N Node 解决。

中间结果落盘导致 CN core dump

问题背景:为缓解查询内存不足问题开启中间结果落盘,但 spill 过程中偶发 core dump

原因分析:中间结果落盘时如果数据过大会触发限制导致 cn 进程 core dump

解决方案:修改代码,当批数据过大则不走 lz4 压缩,直接落盘

CN 内存不足

线上整体采用 32c * 128G 规格的机器,大概 30 多台,数据量 PB 级,最大并发 30。偶尔会出现 StarRocks CN 节点内存过高,导致 Full GC 和 pod 被 kill 问题。内存问题总体比较复杂,从实际运行情况看并非单一原因。CN 节点整体内存占用情况如图。 详细原因和解决方案如下

项目收益

项目上线后,整体已运行平稳,主要有三方面的收益。

  • 资源收益:原来 Presto 集群总共占有 4300c 左右的资源,迁移到 StarRocks 上,我们只用了 1000c 的资源。

  • 架构收益:多个 presto 集群统一为一个 StarRocks 集群,容器部署同时为后续与 Spark 弹性扩缩提供基础。

  • 性能收益:P90 耗时查询相对 Presto 缩短 2 ~ 3 倍

未来规划

  • 自动将即席查询 Spark SQL 转化为 StarRocks SQL,加快查询速度;

  • 白天即席查询 StarRocks 和晚上例行 Spark 任务资源弹性;

看到一个群友说要把🦞龙虾卸载了,然后我就想找下龙虾卸载的教程看下,于是用 anygen 收集了下材料做成了网站,不过 anygen 用的是 vite + react client ,于是使用 gemini-cli ,改成了 nextjs ,但由于今天用了 gemini 比较多,被限制了额度,该用 trae 继续干活。。。但是呢,多语言老是出错,最后还是用 Claude 给修复了,ai 牛马也是分等级的,Claude 我都是用来最后收尾使用的。

卸载龙虾教程网站: https://openclawuninstall.org/zh ,都是各个 ai 牛马生成的,各位兄弟有什么建议,可以留言给我。

龙虾卸载教程网站截图

🔔 关注【IvorySQL开源数据库社区】公众号即可获取 PostgreSQL 一手干货与最新动态
pg每日新闻封面.png

⚙️ PostgreSQL技术文章

🧩 从 4 个数据库到 1 个:Plexigrid 如何替换 InfluxDB 并通过 Tiger Data 实现 350 倍的查询加速

1.png

Plexigrid是一家电网优化公司,将四个数据库整合为单个PostgreSQL/TimescaleDB系统,用TimescaleDB替换了InfluxDB处理时间序列数据。该公司为配电系统运营商提供近实时电网监控,优化低压网络容量,避免昂贵的基础设施过度建设。他们最初使用InfluxDB、TigerGraph、MySQL和PostgreSQL的架构在运营上变得复杂,并在大规模数据摄取时遇到瓶颈。迁移到TimescaleDB后,Plexigrid实现了44%的摄取速度提升、95%的存储减少和350倍的查询性能改进。统一的PostgreSQL架构简化了云端和本地环境的部署,同时为关键电网运营保持了可靠的性能。

https://www.tigerdata.com/blog/from-4-databases-to-1-how-plex...

🧩 回顾 Techshow London 2026

2.png

CYBERTEC参加了2026年伦敦Tech Show,这是他们首次参加PostgreSQL社区外的大型活动。公司设立了展台,通过视觉展示介绍其PostgreSQL服务和客户支持流程。活动的主题演讲由Louis Theroux主讲,讨论了AI对人类行为和决策制定的影响。CYBERTEC的CEO Hans-Jürgen Schönig发表演讲,强调了PostgreSQL在数字独立性和数据所有权方面的重要性。作者反思了在设计工作中创造性地使用AI工具,同时保持人类创造力和专注力。此次活动成功地将CYBERTEC的远程团队聚集在一起,并促进了关于PostgreSQL和AI技术的宝贵行业对话。

https://www.cybertec-postgresql.com/en/looking-back-at-techsh...

🧩 Shaping SQL in 圣保罗

3,4.png

EDB的工程师Matheus Alcantara和Euler Taveira作为受邀嘉宾参加了在São Paulo举行的ISO/IEC SQL标准委员会会议,并得到了Peter Eisentraut的远程支持。这些工程师将SQL标准化过程与PostgreSQL的Commitfest进行了类比,指出在技术提案的提交、讨论和完善方面存在相似性。这次参与代表了PostgreSQL社区在塑造未来SQL标准方面的involvement,使PostgreSQL开发者能够在国际标准层面对SQL语言的演进做出贡献并施加影响。

https://www.enterprisedb.com/blog/shaping-sql-sao-paulo

🧩 验证你的JSON数据的形状

3,4.png

PostgreSQL的jsonb类型提供了灵活性,但缺乏对数据结构的内置验证。在SQL或PL/pgSQL中编写验证逻辑对于非简单情况会变得复杂。一个名为json_schema_validate的新PostgreSQL扩展通过在数据库内直接针对JSON Schema规范验证JSON和JSONB数据来解决这个问题。该扩展提供了比使用带有自定义验证逻辑的CHECK约束更清洁的解决方案,帮助防止坏数据进入jsonb列,同时保持该类型固有的灵活性。

https://www.enterprisedb.com/blog/validating-shape-your-json-...

📨 PostgreSQL Hacker 电子邮件讨论精选

🧩 SIMD加速COPY TO文本/CSV解析

Nathan Bossart回应了KAZAR Ayoub针对COPY TO文本/CSV解析SIMD优化补丁的性能测试结果。测试显示在处理大量短列时出现显著性能回归:TEXT格式17%回归,CSV格式3%回归,这种情况在100列、500列和1000列配置中都存在。这些回归似乎源于处理需要转义字符的列时重复调用strlen(),正如Andres Freund之前警告的那样。Bossart强烈质疑具有17%回归的补丁是否可以被接受提交,并建议在需要转码时可能跳过SIMD路径作为可能的缓解策略。

https://www.postgresql.org/message-id/abBuKalOno33MQFw@nathan

🧩 中断与信号

Andres Freund在重新基于新版本后审查了Heikki Linnakangas的中断处理补丁。这些补丁引入了"注意力机制"并重新组织了中断相关代码。Freund提出了几个关注点:interrupts.h和standard_interrupts.h之间的分离不明确、辅助进程中的潜在崩溃(堆栈跟踪显示断言失败)、CHECK_FOR_INTERRUPTS操作周围缺少内存屏障,以及关键路径中额外内存间接引用的性能影响。他质疑中断检查代码中重复内存读取是否会影响性能,并建议将这个大型提交拆分成更小的部分。其他小问题包括匿名结构体类型影响调试器可用性以及平台特定的原子操作处理。尽管没有测试失败,但辅助进程中的崩溃表明存在需要调查的潜在错误。

https://www.postgresql.org/message-id/6dhkabcmuqvitikyxc56avf...

🧩 修复未初始化的 xl_running_xacts 填充

讨论的焦点是修复WAL记录中未初始化的填充,特别是xl_running_xacts。Andres Freund最初建议针对这个特定情况没有意义,认为PostgreSQL历史上一直接受WAL插入中的随机填充。他提议要么全面修复所有WAL记录,要么维持当前使用valgrind抑制的方法。Alexander Kuzmenkov反驳说填充包含服务器内存内容,引发类似Heartbleed的潜在安全担忧。他强调未初始化的WAL记录阻碍了MemorySanitizer的采用,由于架构差异,它无法使用与Valgrind相同的抑制机制。Heikki Linnakangas表示支持初始化所有WAL记录填充,认为这已经是标准做法。辩论突显了全面修复与针对内存安全工具的目标解决方案之间的紧张关系。

https://www.postgresql.org/message-id/b607e42e-34ff-414a-b727...

🧩 索引预取

Peter Geoghegan发布了index prefetching补丁的v12版本,解决了Andres Freund的大部分反馈。主要改进包括让表和索引AM直接控制批处理布局同时维护批处理回收,通过集成Andres的补丁消除了read stream yielding,将提交拆分为更易管理的块,以及修复了5%的bitmap索引扫描回归。补丁现在允许表AM控制可见性信息的大小/布局,并为索引AM提供导航的不透明状态。然而,Peter尚未解决关于表AM释放索引缓冲区pin的担忧,Andres认为这是模块化违规。Andres澄清他的担忧不是何时释放pin,而是heapam不应该知道要释放哪些特定缓冲区。他建议使用index_batchscan_release()回调而不是直接的ReleaseBuffer()调用,让索引AM在资源管理方面有灵活性,支持多个缓冲区pin或替代互锁机制。

https://www.postgresql.org/message-id/CAH2-Wz=g=JTSyDB4UtB5su...

🧩 使用 rdtsc 减少 EXPLAIN ANALYZE 的时间开销?

Lukas Fittl回应了John Naylor对实现基于RDTSC计时的EXPLAIN ANALYZE补丁的代码审查。讨论集中在CPUID检测改进上,Naylor质疑HAVE__CPUID与HAVE__CPUIDEX宏的处理方式并建议更好的代码组织。Fittl同意几个建议,包括为保持一致性使用十六进制值、创建辅助函数以提高可读性,以及可能引入CPUIDResult结构体来替换数组索引的命名寄存器字段。发现一个关键技术问题:移动leaf 7 CPUID调用可能通过覆盖leaf 1结果而破坏OSXSAVE支持,解决方案涉及使用单独的结果数组或布尔变量。Fittl承诺重构补丁系列,添加CPUID改进和代码清理的预备补丁,以提高可读性并减少主补丁的占用空间。

https://www.postgresql.org/message-id/CAP53Pkw7FzFoE9cyGN1eDK...

🧩 在发布中跳过架构更改

讨论集中在实现publication EXCEPT tables功能的补丁代码审查上。Amit Kapila建议通过在AlterPublicationStmt中添加for_all_tables布尔变量(类似于CreatePublicationStmt)来简化验证检查,而不是使用间接检查。他还建议将超级用户检查提前。Shveta malik同意第一个建议,但认为当前的检查顺序通过首先验证发布兼容性再检查权限提供了更好的错误消息。Amit反驳说超级用户检查应该优先,并提供更清晰的错误消息。Vignesh C在v61补丁中处理了这些意见。Masahiko Sawada对新语法表示担忧,质疑为什么排除表使用"TABLE (a, b, c)"格式而包含表使用"TABLE a, TABLE b, TABLE c",认为这种不一致可能会让用户困惑,并质疑"EXCEPT"后的"TABLE"是否多余。

https://www.postgresql.org/message-id/CAA4eK1KTW78BMmrHXy2c_U...

🗞️ 行业新闻

🧩 network startup Eridu从隐身模式中出现,获得巨额2亿美元A轮融资

5.png

AI网络初创公司Eridu以2亿美元的大额A轮融资从隐身模式中浮现。该公司的联合创始人Drew Perkins自互联网早期就开始开发网络技术,为这家企业带来了丰富的经验和可信度,这使其脱颖而出。与许多由年轻企业家创立的AI初创公司不同,Eridu受益于Perkins在网络创新方面的丰富背景。这轮大额融资反映了投资者对该公司AI网络解决方案方法的信心。该初创公司以如此巨额资本浮现,表明其旨在解决AI基础设施和大规模网络的重大挑战。

https://techcrunch.com/2026/03/10/ai-network-startup-eridu-em...

🧩 Meta 收购了因虚假帖子而走红的 AI 代理社交网络 Moltbook

6.png

Meta收购了Moltbook,这是一个因虚假帖子而走红的AI智能体社交网络。据Meta称,Moltbook通过"始终在线目录连接智能体"的方法代表了社交网络领域的新颖创新。此次收购似乎是Meta在其社交媒体生态系统中整合AI智能体的更广泛战略的一部分。虽然交易的具体财务细节未披露,但此举表明Meta继续投资于AI驱动的社交技术和基于智能体的平台,这些平台可以促进用户和AI系统之间的自动化交互。

https://techcrunch.com/2026/03/10/meta-acquired-moltbook-the-...

🧩 Thinking Machines Lab 与 Nvidia 签署大规模计算协议

7.jpg

Thinking Machines Lab与Nvidia签署了一项涉及至少一千兆瓦计算能力的大规模多年计算协议。该协议代表了AI行业中最大的计算合作伙伴关系之一,突显了对高性能计算资源日益增长的需求。除了提供计算能力外,该协议还包括Nvidia的战略投资,表明这家芯片制造商对Thinking Machines Lab潜力和商业模式的信心。千兆瓦级别的计算能力展示了先进AI开发和部署所需的巨大基础设施要求。这一合作伙伴关系使两家公司都能够利用不断扩张的AI市场的计算需求。

https://techcrunch.com/2026/03/10/thinking-machines-lab-inks-...

🌐 社交媒体动态

🧩 访问Google Gemini3.1Flash-Lite现已在 Databricks上开放!

8.jpeg

Google Gemini 3.1 Flash-Lite 现已在 Databricks 上可用,使其成为除 Vertex AI 之外首批提供此新模型的平台之一。用户可以在企业数据上构建和扩展 GenAI 应用程序,同时利用生产环境所需的治理和运营工具。Databricks 向 Google Gemini 团队表示祝贺,并期待看到用户将如何使用这一新模型进行…

https://www.linkedin.com/posts/databricks_access-to-google-ge...

🧩 热议:周二是pgconf.dev2026最佳的一天

9.jpeg

作者认为 5 月 19 日(周二)是 pgconf.dev 2026 大会最佳的一天。与通常以演讲为主的会议日不同,这一天强调社区参与,通过圆桌会议、工作组和讨论进行。主要活动包括新成员欢迎早餐会、关于认可社区贡献的讨论、与资深 PostgreSQL 贡献者一起评估补丁想法的小组讨论,以及回顾 PostgreSQL 三十年社区历史的会议。其他活动还包括扩展…

https://www.linkedin.com/posts/pgconf-dev_pgconfdev2026-postg...

🧩 通常,我们沉浸在数据库日志和查询优化中。

10.jpeg

在伦敦科技展上,CYBERTEC设计主管Scarlett Riggs探索了Louis Theroux纪录片风格与生成式AI未来的交汇点。在她的博客文章中,她讨论了CYBERTEC如何在坚持PostgreSQL数字独立核心使命的同时,利用AI进行问题解决。这次演讲标志着公司一改以往专注于数据库日志和查询优化的传统,转而探讨AI在开源技术和数字独立方面不断演变…

https://www.linkedin.com/posts/cybertec-postgresql_postgres-g...

安装 OpenClaw 后执行 openclawcommand not found,原因几乎都是 npm 全局 bin 目录不在系统 PATH 中。本文覆盖 macOS(zsh/bash)、Linux、Windows、WSL2 四个平台,以及 nvm 用户和 sudo 安装两类特殊场景,含完整命令,5 分钟内可定位并修复。


快速诊断:30 秒确认根因

依次执行以下两条命令,根据输出结果直接跳转对应修复步骤:

# 第一步:查看 npm 全局包安装路径
npm prefix -g
# 示例输出:/Users/你的用户名/.nvm/versions/node/v22.3.0
#           或 /usr/local
#           或 C:\Users\你的用户名\AppData\Roaming\npm

# 第二步:检查该路径是否在 PATH 中
echo $PATH
# 在输出中搜索第一步的路径,若不存在则需要添加

如果 npm prefix -g 本身报错:Node.js 未安装或版本低于 22,先参考 OpenClaw Node.js 版本升级指南解决版本问题,再回来处理 PATH。


场景一:macOS(zsh,最常见)

macOS Catalina 起默认 shell 为 zsh,配置文件为 ~/.zshrc

# 第一步:获取 npm 全局 bin 路径
npm prefix -g
# 假设输出:/Users/yourname/.nvm/versions/node/v22.3.0

# 第二步:写入 ~/.zshrc
echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.zshrc

# 第三步:立即生效(无需重启终端)
source ~/.zshrc

# 第四步:验证
openclaw --version

若仍找不到命令,执行 rehash 刷新 zsh 的命令缓存:

rehash
openclaw --version

场景二:macOS(bash)/ Linux

bash 的配置文件为 ~/.bashrc(Linux)或 ~/.bash_profile(macOS 旧版)。

# 写入配置文件
echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.bashrc

# 立即生效
source ~/.bashrc

# 验证
openclaw --version

Linux 系统提示:部分 Linux 发行版的 ~/.bashrc 在非交互式登录 shell 中不会自动加载,若修改后仍无效,同步写入 ~/.profile

echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.profile
source ~/.profile

场景三:Windows(PowerShell)

Windows 的 PATH 可通过两种方式修改:

方法 A:图形界面(持久生效)

  1. Win + S 搜索"环境变量",打开"编辑系统环境变量"
  2. 点击"环境变量"→ 在"用户变量"中找到 Path → 点击"编辑"
  3. 点击"新建",添加 npm prefix -g 输出的路径(通常为 C:\Users\你的用户名\AppData\Roaming\npm
  4. 确定保存,重新打开 PowerShell

方法 B:PowerShell 命令(当前会话立即生效 + 持久化)

# 获取 npm 全局路径
$npmBin = npm prefix -g

# 添加到当前会话 PATH
$env:Path += ";$npmBin"

# 永久写入用户级别 PATH
[Environment]::SetEnvironmentVariable(
    "Path",
    "$([Environment]::GetEnvironmentVariable('Path', 'User'));$npmBin",
    "User"
)

# 验证
openclaw --version
注意:修改系统 PATH 后必须重新打开终端窗口才能生效,包括 VS Code 内置终端。

场景四:WSL2(Linux 子系统)

WSL2 内的环境是独立的 Linux 系统,与 Windows 本机 PATH 互不影响。在 WSL2 中安装的 OpenClaw 只能在 WSL2 终端使用,处理方式与 Linux 相同:

echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
openclaw --version

若在 WSL2 中执行 npm prefix -g 输出的是 Windows 路径(如 /mnt/c/...),说明当前用的是 Windows 安装的 Node.js,而非 WSL2 内的 Node.js。需在 WSL2 内单独安装 Node.js 22:

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
npm install -g openclaw@latest

场景五:nvm 用户(特殊情况)

使用 nvm 管理 Node.js 时,PATH 由 nvm 自动管理,但有两种情况会导致 command not found

情况 A:nvm 初始化代码未写入 shell 配置文件

# 检查 ~/.zshrc 或 ~/.bashrc 是否包含以下内容
grep -n "nvm" ~/.zshrc   # 或 ~/.bashrc

# 若没有,手动写入
cat >> ~/.zshrc << 'EOF'
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
EOF

source ~/.zshrc

情况 B:nvm 已加载但没有设置默认版本

# 查看当前默认版本
nvm alias default

# 若输出为 N/A 或旧版本,重新设置
nvm alias default 22
nvm use 22

# 重装 openclaw(当前版本下重装)
npm install -g openclaw@latest

# 验证
openclaw --version

情况 C:nvm 下 OpenClaw 装在了旧版本的 Node 下

# 切换到 Node 22
nvm use 22

# 确认当前 node 版本
node -v   # 应为 v22.x.x

# 在当前版本下重装
npm install -g openclaw@latest
openclaw --version

nvm 关键路径:全局包安装在 $NVM_DIR/versions/node/v22.x.x/bin/,每个 Node.js 版本各有独立的全局包目录。在 v18 下安装的 OpenClaw 切换到 v22 后不可见,需重装。


场景六:用 sudo 安装导致路径不一致

若执行的是 sudo npm install -g openclaw@latest(Linux/macOS),全局包会安装到 root 用户的 npm prefix 路径,而普通用户的 PATH 中没有这个路径。

检查方法

# 查看 root 的 npm prefix(有 sudo)
sudo npm prefix -g
# 示例:/usr/local

# 查看当前用户的 npm prefix(无 sudo)
npm prefix -g
# 示例:/home/yourname/.nvm/...(两者不同,说明装错了)

解决方案:不要用 sudo 安装,改用当前用户身份重装:

# 先卸载 root 下的版本
sudo npm uninstall -g openclaw

# 用普通用户重装
npm install -g openclaw@latest

验证修复成功

# 验证命令可执行
openclaw --version   # 输出版本号即成功

# 运行完整诊断
openclaw doctor

openclaw doctor 正常输出:

✔ Node.js version: v22.x.x (ok)
✔ npm global bin in PATH
✔ Gateway daemon: running

npm global bin in PATH 一行显示 ,说明 PATH 修改还未生效,重新打开终端窗口后再试。


快速排查索引

情况跳转
macOS zsh 终端场景一
macOS bash / Linux场景二
Windows PowerShell场景三
WSL2 子系统场景四
使用 nvm 管理 Node场景五
之前用了 sudo 安装场景六

常见问题

Q:每次打开新终端都要重新执行 export PATH=... 才能用?
说明修改写入的是临时会话而非配置文件。确认修改已写入 ~/.zshrc(zsh)或 ~/.bashrc(bash),而不是直接在终端执行了 export 命令。执行 grep openclaw ~/.zshrc 确认内容存在,然后重开终端验证。

Q:npm prefix -g 输出了路径,但那个目录下根本没有 openclaw 文件?
OpenClaw 安装到了不同 Node.js 版本的目录下。检查是否使用 nvm 且切换过版本(见场景五),在正确的版本下重装:npm install -g openclaw@latest

Q:Windows 上添加了 PATH 但 VS Code 终端还是找不到命令?
VS Code 终端在启动时读取 PATH,修改系统 PATH 后需要完全关闭并重新启动 VS Code,而不只是关闭终端面板。

Q:PATH 里已经有 npm 的路径,但还是找不到 openclaw?
执行 ls $(npm prefix -g)/bin/ | grep openclaw 确认可执行文件是否存在。若不存在,说明安装失败或安装在了其他路径,重新执行 npm install -g openclaw@latest


总结

OpenClaw 安装后 command not found 的根本原因是 npm 全局 bin 路径未加入 PATH。修复步骤统一为:npm prefix -g 找路径 → 写入 shell 配置文件 → source 生效 → openclaw --version 验证。nvm 用户额外需确认 shell 初始化代码存在、OpenClaw 安装在当前激活的 Node.js 版本下。

延伸资源:

本文基于 OpenClaw 2026 年 3 月版本,nvm v0.40.4,npm v10.x。

时间推移至2026年,对于绝大多数中国中大型企业而言,客户关系管理(CRM)系统的基础设施建设已经迈过了一个重要分水岭。伴随着信创政策的全面落地与人工智能技术的普惠化,大部分行业头部企业已经基本完成了CRM系统的国产化替换,并在前端部署了丰富的AI辅助功能。

然而,基础设施的完善并没有理所当然地带来业绩的狂飙。麦肯锡(McKinsey)最新发布的企业数字化效能调研报告揭示了一个略显残酷的现实:在过去三年内完成CRM重构或AI升级的中大型企业中,仅有30%的企业通过CRM实现了预期的营收显著增长。剩余70%的企业,陷入了“系统越建越重,业绩却原地踏步”的泥沼。

这一数据揭示了当前大中型企业面临的核心冲突:企业的挑战已不再是缺乏先进的数字化工具,而是滞后的运营体系无法驾驭先进的AI生产力。当销售人员可以用AI一键生成精美的客户跟进邮件时,如果后端的交付团队依然依靠Excel流转订单,这种局部的效率提升对整体营收毫无意义。

本文的主旨在于,指导中大型企业在2026年的新竞争格局下,跳出单纯关注CRM软件功能的技术视角,转向关注营收运营(RevOps)体系的构建。只有真正打通从线索到现金(L2C)的每一个业务堵点,实现数据资产化、应用预测性AI、深化客户全生命周期管理(CLM),并辅以坚决的组织变革,企业才能真正释放数字化的巨大潜能。

一、 2026年CRM应用趋势:跨部门业务协同

进入2026年,企业在数字化转型中遭遇的新危机,已经不再是技术层面的数据隔离,各大系统通过API或中台技术基本已经实现了底层数据的互通。真正致命的,是业务层面的流程割裂

1. 建立以客户为中心的全流程协同机制

传统模式局限在于部门墙导致的效能损耗。在过去很长一段时间里,企业对CRM的认知停留在部门级工具。

市场部使用营销自动化模块,只管清洗和分发线索;销售部使用核心的客户与商机模块,只管打单和报销;客服部使用工单模块,只管接听投诉电话。各部门“各司其职”,在CRM中各自运转,缺乏业务流转的连续性。这种模式下,客户体验是割裂的,线索在跨部门交接时存在巨大的损耗。

2026年,大企业要建立以客户为中心的统一营收团队。具体来讲,在新的商业语境下,CRM不仅是销售团队的打单工具,更是连接市场、销售、客户成功(售后服务)的协同中枢。企业需要建立一个统一的营收团队。在这个体系中,市场、销售和服务的边界被打破,所有直接面向客户、影响收入的动作都被纳入一个统一的运营框架中。

随之而来的是考核指标的根本性转变,从关注MQL转向NRR和CLTV。过去,市场部背负的KPI是产生多少条市场确认线索(MQL),这导致市场部为了凑数量而大肆采买低质量线索;销售部为了当期提成,可能向客户过度承诺。

在2026年的RevOps体系下,企业的核心考核指标全面转向净营收留存率(NRR)和客户终身价值(CLTV)。这意味着,把产品卖出去只是开始,让客户持续使用、成功续费并产生增购,才是整个营收团队共同的目标。

2. 大型企业业务流程中的断点与痛点

尽管系统层面打通了,但由于缺乏统一的运营指挥,业务流程中依然存在大量隐形的流程断点。

  • 痛点一:销售过度承诺导致交付灾难。 销售在前端为了拿下订单,在CRM中随意勾选非标需求,缺乏后端的研发或交付评估。订单一旦流转到交付部门,往往面临无法履约或成本倒挂的窘境。
  • 痛点二:服务触点的增购机会白白流失。 售后服务人员在处理客户工单或定期回访时,是最容易察觉客户是否有扩容、增购需求的。但在传统流程中,服务人员发现的线索无法自动、高效地回流给销售团队,导致商机被竞争对手截胡。

后果: 这些断点直接导致企业的获客成本(CAC)飙升,因为企业总是需要花费高昂的代价去获取新客户来填补老客户流失的窟窿;同时,由于服务体验不佳,客户流失率居高不下,企业陷入了“漏水桶”的增长困局。

二、 核心战略:建立统一的营收运营(RevOps)体系

RevOps(营收运营)并非一种新技术,而是一种重构业务流的管理方法论。它的核心在于通过整合人员、流程和技术,消除业务摩擦,驱动可预测的收入增长。在CRM中落地RevOps,需要把握以下三大战略。

战略一:全业务链条的数据治理与应用

现状: 许多大企业的CRM系统经过多年的运行,内部堆积了海量的“数字垃圾”——离职人员的未跟进线索、信息缺失的无效联系人、停滞数年未关闭的僵尸商机。数据质量的低下,直接导致了数据分析结果的失真,让管理层对CRM系统失去信任。

深化路径:

  • 数据治理自动化: 2026年的CRM深化,必须把数据质量管理放在首位。企业需利用AI技术实现数据治理的自动化。例如,通过接入权威的工商数据库,AI自动补全和校验企业图谱(如复杂的母子集团关系);利用算法自动识别并清洗重复数据、合并相似客户。高质量的数据,是RevOps能够运转的燃料。
  • 行为数据融合: 传统的CRM多用于记录静态信息(如客户的职位、联系方式)和业务员的手工跟进记录。现代RevOps体系要求将CRM与企业的官网、微信小程序、甚至IoT物联网设备数据彻底打通。系统不仅要记录“谁”,更要记录客户的“动态交互行为”——例如,某个大客户的决策人上周观看了公司的产品直播长达40分钟,或者某台部署在客户现场的设备近期报错频率上升。

价值: 这种融合实现了从单纯的“业务记录工具”向“业务洞察引擎”的转变。销售人员在联系客户前,已经拥有了360度的全景视图,沟通不再是盲目的寒暄,而是直击痛点的顾问式营销。

战略二:应用预测性AI辅助管理决策

区别点: 当下最火热的AI多为生成性AI(Generative AI),比如帮助销售写一封漂亮的拜访邮件,或自动生成会议纪要。但在管理层面,更具颠覆性的是预测性AI(Predictive AI)。生成性AI侧重于表达与创作,而预测性AI侧重于计算、推演与概率判断。

应用场景:

  • 精准销售预测: 告别过去依赖销售总监“拍脑袋”或销售员主观填写的预估赢率。预测性AI会基于该商机的历史转化数据、所处行业趋势、甚至近期销售与客户互动的频率和情绪色彩,给出一个客观的置信度评分。在理想状态下,这种预测可以将季度业绩的误差率控制在5%以内,极大提升了供应链和财务排期的确定性。
  • 流失风险预警: 获取一个新客户的成本远高于留住一个老客户。预测性AI能够实时监测客户的活跃度曲线、服务工单的投诉频率及情绪词汇。一旦模型判定该客户健康度恶化,能在客户提出解约或不再续费的30天甚至更早前,向客户成功团队发出红灯预警,留出充足的挽回窗口期。

标杆案例:某头部新能源车企的应用 一家国内领先的新能源车企,通过将车主APP、车载IoT设备数据与后台CRM打通,利用预测性AI分析车主的动态行为。当AI发现某位早期购买紧凑型轿车的车主,近期在APP上频繁浏览SUV车型,且车载系统数据显示其后排儿童安全座椅的接口使用频率急剧上升,系统会自动预测该车主有强烈的“家庭用车升级”意向。这一线索会带着高达90%的置信度评分直接推送给对应销售跟进,使得该类线索的转化和库存周转率提升了20%以上。

战略三:建立主动式客户服务体系

变革: 在RevOps体系下,必须推动服务部门从传统的“成本中心”向“价值创造中心”转型。售后服务不再是擦屁股的工作,而是客户全生命周期(CLM)中创造复购和口碑的核心环节。

落地动作:

  • 建立客户健康度模型: 在CRM中为每一个存量客户建立健康度计分卡。这个分数由产品的登录活跃度、核心功能使用深度、服务工单解决时效、NPS(净推荐值)等多维度数据加权计算得出。当客户健康度处于“优秀”时,即是推送交叉销售和向上销售的最佳时机。
  • 机会回流机制: 服务即营销。售后工程师或客户成功经理在日常服务中,如果感知到客户对新模块的兴趣,可以通过CRM移动端的一键报备功能,将需求记录下来。系统会自动触发一条带有背景信息的“增购/复购”商机提醒给到相应的客户经理。这种由前端服务触发的商机,其转化率往往数倍于冷呼叫。

三、 组织与人才:适应智能化管理的架构调整

再先进的系统和理念,最终都要靠人来落地。当CRM系统从单一的销售工具升级为跨部门的RevOps中枢时,传统的树状垂直管理架构将成为最大的阻碍。工具升级后,组织架构必须随之重塑。

1. 设立CRO(首席营收官)或RevOps委员会

在传统的企业架构中,市场总监(CMO)、销售总监(CSO)和客服总监(CCO)各自向CEO汇报,这就导致在CRM系统的建设和规则制定上,各方往往站在本位主义的立场上争夺资源。

破局之道: 领先的大型企业正在增设CRO(首席营收官)这一高管职位,或者成立由一把手牵头的RevOps委员会。其核心职责就是打破行政壁垒,统筹L2C全流程的规则制定权。由CRO来决定线索的流转标准、商机的准入条件、服务移交的规范。只有这样,才能彻底避免“销售部提出的流程优化需求,IT部评估后无法响应,而市场部的数据清洗需求又无法落地”的内部无休止内耗。

2. IT部门角色的根本性转变

从“系统管理员”转变为“业务赋能者”。 过去,企业的IT部门在CRM项目中往往扮演着“外包验收员”或“系统管理员”的角色,每天疲于奔命地处理各个业务部门提来的加字段、改流程等琐碎工单,业务部门则抱怨IT响应太慢,懂技术的不懂业务。

进入2026年,现代主流的CRM系统(如纷享销客等)都已经具备了极其强大的PaaS(平台即服务)底层能力和低代码/无代码引擎。IT部门的角色应当从“写代码的人”转变为“平台规则的维护者”。

鼓励“公民开发”: IT部门只需负责底层数据的安全性、系统接口的稳定性以及主数据架构的规范。而对于前端具体的业务逻辑——例如大区总监想要搭建一个针对区域经销商的特批审批流,或者市场部想要配置一个特定活动的转化漏斗看板——应通过系统赋能,交由懂业务的“业务BP”或销售运营人员自己通过拖拉拽的方式实现。这种模式极大缩短了业务创新的实现周期,让组织变得空前敏捷。

四、 热门领域:国产化替代与出海业务协同

在当前的宏观经济与地缘政治背景下,中大型企业面临着两大不可逆转的趋势:内部的信创国产化替代与外部的全球化出海。这不仅是IT系统的更迭,更是对企业运营体系的一次巨大考验。

1. 国产化替代过程中的变革管理

核心挑战: 到了今天,将国际化软件(如Salesforce、Oracle等)替换为国产CRM,最大的阻力往往已经不是数据迁移或底层架构的技术难度,而是用户习惯的重塑。在一线业务部门,习惯了外企管理思维和外资软件交互逻辑的团队,极其容易对新上线的国产系统产生抵触心理,导致系统活跃度断崖式下跌。

运营对策:

  • 体验优势转化: 变革管理不能只靠行政命令,必须让一线员工感受到切实的便利。企业应充分利用国产CRM在移动端、社交生态(如与企业微信、钉钉的深度集成)上的天然基因优势。例如,将繁琐的PC端报表审批转化为企微的一键审批,将名片录入与企微好友添加绑定。通过提供优于国际厂商的移动端便捷性,以此作为打消抵触情绪的切入点。
  • 流程本地化重构: 替代的本质是升级,企业绝不能仅仅为了替代而做功能对标或1:1搬运老流程。应该利用系统切换的契机,根据中国市场“高并发、强社交、快迭代”的商业特点,重新审视并重构原有的审批与协作流程。去掉那些为了管控而管控的冗余节点,真正提升一线作战的效率。

2. 全球化业务的统一管控与区域自治

核心挑战: 随着中大型企业加速出海,往往陷入一种两难境地:总部管理层需要一个能够看清全球业务大盘、统一标准的全球数据视图;而海外分公司则面临着截然不同的本地市场环境、文化习惯甚至时差,他们迫切需要灵活、本地化的作战空间。

运营对策:

  • 主数据标准统一: 必须在集团层面严格定义全球统一的客户主数据标准与核心销售阶段定义。无论在欧洲还是东南亚,什么是商机,什么是赢单,其数据字典必须唯一。这是确保总部报表可实时汇总的基础,避免在全球范围内的数据互通障碍。
  • 前端交互因地制宜: 在坚守后端数据底线的同时,必须给予海外团队前端的灵活性。允许海外团队使用符合当地商业习惯的触达工具(如WhatsApp、海外Email、Line等)与客户沟通,但要求这些工具必须通过标准化API,将核心的交互记录回流至总部的统一CRM平台中。
  • 合规运营常态化: 数据出海,合规先行。面对欧洲GDPR或北美CCPA等极其严苛的隐私保护法案,企业不能仅仅依靠IT部门的网络安全策略去拦截风险,必须将合规要求深度嵌入业务流程中。例如,在CRM系统中设计自动化的“被遗忘权”处理工单,当客户提出删除数据请求时,系统能自动触发脱敏或销毁流程,确保业务拓展在安全的轨道上运行。

五、 纷享销客:大中型企业营收运营落地标杆解析

在探讨了2026年大中型企业的CRM深化战略后,企业面临的下一个现实问题是如何选择承载这些战略的底座。在国内市场,纷享销客凭借其智能型CRM新定位与强大的底层平台能力,已经成为众多大型企业深化RevOps体系的首选标杆。

通过拆解纷享销客在不同大中型企业的应用实践,我们可以清晰地看到先进工具如何与业务运营深度融合。

1. 十年沉淀,ShareAI重塑全业务场景智能体矩阵

经过十余年打磨,到2026年,纷享销客定位于智能型CRM,已构建出深入企业业务肌理的企业级智能体(Agent)矩阵,完美呼应RevOps体系的智能化诉求。

  • 销售与营销智能: 客户互动Agent可将多模态沟通语料自动转写提炼,客观还原客户现场(MOT)并识别情绪;情报洞察Agent则全天候捕获工商、招投标等数据,一旦发现风险或增购信号,即刻向销售推送破冰建议,大幅提升赢单率。
  • 服务智能: 呼应主动式服务战略,内置的现场服务Agent能在人员上门前智能分析病灶并推荐备件;完工后自动提炼维修记录沉淀为知识库,真正将售后转化为挖掘增购的价值中心。
  • 管理与IT赋能: 在决策端,管理者通过智能BI Agent以自然语言提问(如“为何本月业绩未达标”),即可秒级获取归因分析与建议;在IT端,代码助手可智能解析与续写代码,大幅降低复杂定制的开发与维护成本。
  • 可信赖的合规底座: ShareAI支持公私大模型灵活接入。AI数据权限与CRM底层严格一致,自动执行脱敏与掩码传输,并恪守数据零留存机制,确保大企业调用AI时的绝对安全。

2. 连接数据孤岛,重塑RevOps生态

正如神州数码集团副总裁兼CIO沈暘所言:“一切没有连接、一切不在线的系统就是‘死’系统。”神州数码作为年营业额超千亿的IT巨头,曾拥有多达20个彼此隔离的CRM系统,形成了严重的数据孤岛。 纷享销客的核心优势在于其原生具备的连接基因。它不仅打通了企业内部市场、销售、服务的壁垒,更通过与企业微信、钉钉等生态的互联,以及开放的API接口,将企业内部系统与外部的工商数据、供应链伙伴、甚至是最终消费者连接起来。这种全方位的连接能力,正是构建RevOps体系、实现L2C全链条数据无缝流转的先决条件。

3. aPaaS低代码平台:赋能业务敏捷响应与公民开发

大中型企业的业务复杂且多变,标准化的SaaS产品往往难以满足深度定制的需求。而在当今时代,依靠长周期的代码定制又无法跟上市场节奏。 纷享销客提供的企业级aPaaS(应用平台即服务)低代码平台,完美解决了这一矛盾。以“快公司”元气森林为例,在面对气泡水市场的高速爆发与下沉渠道的快速拓展时,元气森林放弃了繁重的自研路线,选择纷享销客。借助PaaS平台灵活的拖拽配置能力,短短100天内即完成了针对快消行业特殊访销场景的系统重构与上线,成功支撑了单日1100万订单的高并发与8000人的落地应用。这种敏捷性,让IT真正成为了业务的赋能者。

4. 行业深度:深耕特定场景,提供开箱即用的价值

不同行业的RevOps痛点截然不同。纷享销客没有停留在做通用型工具,而是深耕制造、快消、高科技等核心行业。

  • 在装备制造业: 大型装备的销售往往伴随着漫长的招投标和复杂的非标定制。例如新疆特变电工,通过纷享销客建立了从项目备案、招投标、CPQ(报价选配)到合同执行、售后维保的全流程闭环。这使得其整体报表统计成本降低了70%,企业数据质量提高了100%。
  • 在高科技与装备制造融合领域: 拓斯达通过纷享销客CRM,打通了内部SAP系统、费控系统与企业微信。销售人员在手机端即可进行复杂机械的CPQ报价选配,并将数据直传SAP生成生产订单,将原本需要5天的报价流程缩短至3天,极大提升了商机转化率与交付体验。
  • 在快消行业: 智仁食品通过纷享销客的移动访销模块,规范了全国数千名导购与业务员的巡店SOP(标准作业程序)。通过AI图像识别技术,不仅提升了陈列检查的效率,更实现了费用的精细化管控,让投入的每一分钱都能溯源产效,有效挖掘了下沉市场的新增长点。

5. 出海与全球化支撑

面对大企业的出海浪潮,纷享销客同样具备前瞻性布局。其系统支持多语言、多币种、多时区,能够根据不同国家的组织架构与角色进行精细化的权限适配。这不仅满足了企业出海初期的业务拓展需求,也为大型跨国集团(如某全球商务办公解决方案巨头利用其管理国内上千家伙伴的售后服务网络)提供了兼顾“全球统一管控”与“本地化灵活运营”的坚实底座。

六、 总结

站在2026年的时间节点向未来眺望,我们可以得出一个清晰的结论:CRM不再仅仅是一个用于记录销售数据的IT软件,它已经进化为一种现代企业管理理念的载体。

在基础设施已经相对完善的今天,企业如果继续将精力局限于软件功能的修修补补,注定无法突破增长的瓶颈。真正的跨越,必须依靠营收运营(RevOps)体系的重塑。通过打破部门壁垒实现全业务链条的融合,通过治理数据资产为预测性AI提供优质燃料,通过重塑组织架构让IT真正赋能业务,企业才能在存量博弈的时代中找到新的增量。

未来的领先企业,必定是那些既拥有先进的AI技术底座,又具备高效、敏捷、以客户为中心的营收运营管理体系的企业。借助如纷享销客等优秀的连接型、平台化CRM,将战略意图转化为系统内每一个被严格执行的业务流,这才是中国大中型企业迈向高质量增长、决胜全球市场的必由之路。

昨天我参加了一场 AI 技术大会,满脑子想着学点新东西。

结果最让我震撼的,不是什么新技术,而是大屏幕上的这句话:

“人们经常问我:未来 10 年什么会变?这确实是个好问题。但几乎没人问:未来 10 年什么不会变?“ —— 杰夫·贝索斯

这句话像一盆冷水浇在我头上。

我拼命追逐新的工具,却忘了思考:在这个变化飞快的行业里,到底有什么是永恒不变的?

image.png

1. 变化是唯一的常数

2008 年,Flash 是网页动画的王者,IE 浏览器 一统江湖。

我们以为这些会永远存在。

结果呢?移动互联网一来,Flash 直接被淘汰;IE 也成了“兼容性噩梦”的代名词。

后来,jQuery 统治了前端开发,接着 React、Vue 崛起,现在 AI 又能一秒生成代码了。

我熬了无数夜晚学的技术,很多都贴上了“过时”的标签。

这让我明白一个道理:在这个行业,没有永远的王者,只有不断变化的技术。

image.png

既然技术一直在变,那作为前端工程师,我们到底该抓牢什么?

我总结了三条“原则”——它们不会因为框架更新、工具换代而过时。

2. 原则 1:快,永远是对的

无论是 2008 年还是 2026 年,用户都不会等待一个慢吞吞的网站。

你的电商网站做得再花哨,有 3D 特效、有 AI 聊天机器人,但如果打开要等好几秒,用户转身就走。

即便 AI 写出了代码,分析包大小、定位网络瓶颈、优化掉 0.1 秒的能力——性能优化——始终是一项核心商业竞争优势。

即便框架更迭,性能优化的本质大体不变:

  • 下载了什么?(Bundles / 图片 / 字体 / 第三方脚本)
  • 何时下载?(初始加载 vs. 懒加载)
  • 瓶颈在哪里?(网络 / 渲染 / 主线程)

这些问题,放十年前问有意义,放十年后问依然有意义。

3. 原则 2:让用户爽,而不是让用户懵

AI 能生成漂亮的界面,但真正懂用户的,还是人

想想看:你在买东西时,从看到商品、加购物车到付款,中间可能遇到多少坑?

  • 网络不好,点了半天没反应
  • 手快点了两下,下了两单
  • 付款时库存没了
  • 想返回上一页,结果直接退出

这些“真实使用场景”永远不会像教科书里写得那么完美。

无论用什么框架,用户体验的核心就是:别让用户焦虑,别让用户懵。

这需要工程师真正理解业务场景,而不是只会写代码。

3. 原则 3:可靠性与架构

浏览器兼容问题,以前有,现在还有,只是换了种形式。

  • 出错了怎么办?要有兜底方案
  • 流量突然暴增怎么办?系统不能崩
  • 出问题了怎么快速找到原因?要有监控和排查能力

有句话说得对:好写的代码,往往不好维护。

系统越大越复杂,架构设计能力就越值钱。AI 能帮你写代码,但设计系统结构、把控风险、让系统能应对变化,这些还得靠人。

image.png

最后

技术浪潮一波接一波,追是追不完的。

真正能让你立住脚的,是看透这些变化背后的本质——性能、体验、可靠性。

就像贝索斯说的,与其猜什么会变,不如抓牢什么不会变。

在变化的世界里,找到那些不变的东西,才是安身立命的根本。

我是冴羽,10 年笔耕不辍,专注前端领域,更新了 10+ 系列、300+ 篇原创技术文章,翻译过 Svelte、Solid.js、TypeScript 文档,著有小册《Next.js 开发指南》、《Svelte 开发指南》、《Astro 实战指南》。

欢迎围观我的“网页版朋友圈”,关注我的公众号:冴羽(或搜索 yayujs),每天分享前端知识、AI 干货。

一个还没拿出惊艳产品的初创公司,竟然接到了英伟达送来的 “泼天算力”?

这一次,英伟达把投资触角伸向了这家还名不见经传的 “新 AI 实验室”。

3 月 10 日,前 OpenAI 高管 Mira Murati 宣布,她创办的 Thinking Machines Lab,与 NVIDIA 达成一项长期战略合作。

按照协议,英伟达将为 Thinking Machines Lab 提供至少 1 吉瓦 的下一代 NVIDIA Vera Rubin 系统,用于前沿模型训练和平台建设,支持其大规模交付可定制的 AI 解决方案;而 Thinking Machines Lab 则将围绕 NVIDIA 架构设计训练和服务系统,并扩大企业、研究机构和科学界对前沿人工智能及开放模型的访问。这套系统预计将于明年初正式部署。

简单来说,英伟达提供的是下一代算力底座,而 Thinking Machines Lab 则在这套底座上打磨训练体系、推理系统和模型能力。 这不是一笔普通的算力采购,而是资本、芯片和技术路线的一次深度绑定。

更值得关注的,是这笔合作的 规模

1 吉瓦是什么概念?1 吉瓦等于 1000 兆瓦。

根据全球最权威的能源政策与数据机构之一 IEA 显示,普通数据中心通常只有 5 到 10 兆瓦,大型 hyperscale 数据中心通常在 100 兆瓦以上。而 Thinking Machines Lab 这次拿到的是 接近 10 个 100 兆瓦级大型数据中心的总量级

有业内人士测算,这个规模足以覆盖约 75 万个美国家庭的用电规模,而整体投入成本甚至可能高达 500 亿美元

放在今天的 AI 竞赛里,这已经不是普通创业公司的配置。真正接近这一门槛的,往往只有 最顶级的 AI 实验室

2025 年 9 月,OpenAI 与英伟达公布的战略合作,共同部署 10 吉瓦 AI 基础设施,以支撑下一代 AGI 的开发,这是史上空前的算力投资规模,而 Thinking Machines Lab 拿下的量级,已是它的 十分之一。横向来看,马斯克在 2025 年末为 xAI 买下第三栋大楼,目标将训练能力推至近 2 吉瓦;Meta 在得州推进的新数据中心,拓展目标也在 1 吉瓦级

可以说,在算力储备上,这家创业公司已经和巨头站在同一量级

据美国媒体 Axios 推测,如此庞大的算力,不可能只用来做小模型、垂直应用或轻量化工具。它更对应持续的基础模型训练、多模态系统开发、推理平台搭建,以及面向企业和科研机构的大规模服务能力。

而在 Mira Murati 的推特上,也能找到一些“蛛丝马迹”,她点出一个关键词 “协作式人工智能”

所谓“协作式 AI”,就是强调与人共同完成任务、能按个人或机构需求灵活适配的多模态系统。

图片

作为 Open AI 人才流向中最显眼、最集中的新去处之一,Thinking Machines Lab 从诞生起就自带光环。

这家公司成立于 2025 年 2 月,据路透社报道,刚亮相时团队约 30 人,其中 至少 20 人来自 OpenAI。成立仅 5 个月,它就拿下 20 亿美元种子轮融资,成为硅谷史上最大种子轮之一,投资方名单包括 a16z、英伟达、AMD、思科等巨头。黄仁勋更是直接称其为 “世界一流的团队”。

此次与英伟达的合作,已是英伟达在种子轮之后,再度加码投资 + 绑定算力。这无疑释放了几个信号:

  • Thinking Machines Lab 正在升级,从一家 “明星创业公司”,走向 “前沿模型基础设施玩家”。它瞄准的,不只是应用层的细分赛道,而是下一代前沿模型的核心竞争

  • 而英伟达不只想卖铲子,还想参与建矿了,它希望更深地嵌入下一代 AI 公司的资本结构、算力供给和技术路线图之中。

英伟达的全面布局

如果只把这笔合作理解为英伟达对一家明星创业公司的特殊扶持,可能还是低估了它的意义。

从押注 Thinking Machines Lab,到回看英伟达的整体布局,就能清晰看出这家芯片巨头为巩固断崖式领先所布下的全局棋局。

面对已成型的 AI 巨头,英伟达先是与 OpenAI 达成 10 吉瓦算力合作,共建 AI 工厂,并持续巨额投入;随后又通过微软、英伟达、Anthropic 三方绑定,为 Anthropic 提供下一代硬件、1GW 算力与最高 100 亿美元投资,双方还联合定制模型与芯片架构,实现技术深度锁死。

面对 AI 新势力,英伟达同样全面下注:向 AI 搜索公司 Perplexity 投资 5 亿美元,参投 AI 视频工具 Runway、人形机器人 Figure AI、自动驾驶公司 Wayve 等一众明星项目,几乎覆盖下一代热门赛道。

可以说,英伟达布局逻辑很直白,提前锁定未来大客户,而不是等它们长大再抢单

Thinking Machines Lab 正是英伟达看中的 “超级潜力买家”,它押注的不是某个产品,而是下一个 OpenAI 级别的平台型公司。哪怕这家新实验室目前只有训练 API、研究方向与明星团队,英伟达看重的是其未来长成平台的潜力。越早进入这些公司的资本结构与技术路线,就能越早分享整个生态成长的红利,而不只是单一的芯片收入。

而且,英伟达的 “绑定” 早已不是简单提供算力,而是将客户锁进从芯片、网络、系统软件到数据中心的整套 AI Factory 全栈方案

对英伟达而言,押注 AI 新实验室的意义,不只是提前卖出下一代 GPU,更在于趁这些公司仍处于底层系统搭建阶段,就把自己的架构写进其训练、推理和运维体系。等到模型、集群和服务真正跑起来,客户依赖的将不再只是某一代芯片,而是整套基础设施逻辑,迁移成本也会随之大幅抬升。

黄仁勋在 2026 年 GTC 上曾用一个颇具代表性的框架来解释这种变化。他把 AI 产业概括为一个自下而上的“五层架构”:能源、芯片、基础设施、模型和应用。

图片

过去外界更习惯把 AI 竞争理解为模型之争,但在黄仁勋的叙述里,最底层的能源,才是 AI 基础设施的第一性原理。没有足够的电力、冷却、园区和并网能力,就谈不上后面的芯片集群,更谈不上模型训练和应用落地。

而在最新的长篇博客中,这一判断被进一步推到了产业底层逻辑的高度。黄仁勋的核心意思是:今天的 AI 仍处在极早期阶段。过去几年行业确实已经砸下了数千亿美元,但这些投入更像是在铺设地基,距离 AI 潜力被真正释放,仍有很长的路要走。

他甚至预测,到本世纪末,全球 AI 基础设施支出将达到 3 万亿~4 万亿美元 

顺着这套逻辑看,英伟达现在想推进的,已经不只是“芯片公司”的角色,而是更接近 AI 工厂总包商

它一边与 OpenAI、Anthropic、Thinking Machines 这样的模型公司深度绑定,一边与 Meta 等科技巨头推进多年期基础设施合作,也与 Lilly 这样的制药企业、以及政府和科研机构推动行业级、国家级 AI 基建。

这里最深的一层争夺,其实不是某一笔订单,而是 标准制定权:未来训练大模型、跑推理、做物理 AI、建设 GW 级园区,默认应该采用什么架构、什么网络、什么供电和冷却方式、什么系统软件栈。谁定义了这套默认方案,谁就不再只是供应商,而是在定义下一代 AI 工厂的入口与标准。

Thinking Machines Lab 的野心与动荡

再看 Thinking Machines Lab,这家公司从一开始切入的,其实就是模型后训练和微调基础设施这层“脏活累活”。

具体来说,它给研究者、开发者留足了自主权,可以自己掌控训练用的数据、算法和训练逻辑,训练出来的模型权重,也可以保存、恢复、下载,甚至发布出去。

而这家公司的核心作用,就是提供一套现成的训练工具,帮大家解决训练过程中最头疼的问题,比如分布式训练、任务调度、资源分配和故障恢复,让开发者不用再费心搞这些“底层基建”,能专心做模型本身。

表面看,它是在帮别人微调模型;往深了看,它真正搭建的是一套面向未来的底座。 无论是更大规模模型训练、更复杂的实验流程,还是更高强度的推理需求,最终都要落到这套系统能力上。

而搭建这样的 AI 基础平台,当然离不开超大算力的支撑,这也是它与英伟达展开合作的重要原因。

但或许又有人问了,它从英伟达拿到的 1 吉瓦算力,搞这么大场面,只是为了做这些么?

确实不止如此,我们可以进一步揣测一下 Thinking Machines Lab 的野心。

从公司官网可以看出,这家公司反复强调两件事:

第一,多模态是核心。只有让模型真正具备理解图像、文本乃至真实世界的能力,AI 才可能走向大规模落地。

第二,研究和产品不能分开,研究能否高效推进,最终取决于底层基础设施是否稳定、顺手、可扩展。

如此大规模的算力投入,显然不是为了训练一版模型后就停机,而是为了同时支撑多个层面的任务:前沿基础模型预训练、多模态与大规模 MoE 模型的持续实验、模型后训练与优化、企业客户服务,以及面向科研机构的开放访问。

这也意味着,Thinking Machines Lab 的野心从来不只是做出一个模型,而是想把自己的模型能力、训练能力和服务能力,铺成一张可扩展的分发网络。

如果说过去 AI 竞争比拼的是“谁拥有更好的模型”,那么今天比拼的已经是“谁能同时攥住资本、芯片、供电、园区和系统架构协同”。对于创业公司而言,能和英伟达这样的巨头深度绑定,意味着能获得最稀缺的确定性算力与交付效率。

Thinking Machines Lab 高调亮出 1 吉瓦算力,本质上是在向外界宣告:它不满足于做牌桌旁的旁观者,而是要真正坐上牌桌,与 OpenAI、Anthropic 等巨头正面竞争。

不过,野心越大,组织压力也越大。Thinking Machines Lab 成立仅一年左右,团队就从最初约 30 人扩张到约 120 人。

与此同时,其核心联合创始人集体 “叛逃。2025 年 10 月,联合创始人 Andrew Tulloch 离开公司加入 Meta;2026 年 1 月,两位联合创始人 Barret Zoph 和 Luke Metz 与研究人员 Sam Schoenholz 纷纷回到 OpenAI。

对一家仍处快速扩张期的公司来说,这未必意味着战略失速,但足以说明,它的“全栈野心”正在经受组织动荡的考验。

参考链接:

https://thinkingmachines.ai/news/nvidia-partnership/

https://job-boards.greenhouse.io/thinkingmachines

报错信息

图片.png

openclaw config set gateway.controlUi.allowedOrigins '["http://xxx.xxx.xxx.xxx:18789"]'

解决方案

openclaw config set gateway.controlUi.allowedOrigins '["http://xxx.xxx.xxx.xxx:18789"]'

把 xxx.xxx.xxx.xxx 改成你的公网 ip


报错信息

图片.png

control ui requires device identity (use HTTPS or localhost secure context)

报错信息

图片.png

device identity required

上周六部署了一下龙虾🦞到 macbook 上,然后让龙虾总结一下我的微信聊天记录,今天就收到了账号安全提醒,要做题和签保证书才能恢复

一、概述

本文主要介绍观测云对 Serverless 容器内日志采集的最佳实践,通过观测云 CRD+DataKit Operator 注入 logfwd sidecar 的方式实现采集,方案主要特点如下:

  • 集中管理采集配置:支持监听 Kubernetes ClusterLoggingConfig CRD,并暴露匹配结果供 logfwd sidecar 轮询获取(sidecar 默认每 60 秒向 Operator 发起 HTTP 请求,logfwd 需 ≥ 1.86.0)。
  • 热更新 & 精细匹配:CRD selector(Namespace/Pod/Label/Container)随改随生效,无需重建 Workload。

二、前置条件

  • Kubernetes 集群版本 1.16+
  • 安装 DataKit 并开启 logfwdserver 采集器,例如默认监听端口是 9533
  • DataKit service 需要开放 9533 端口,使得其他 Pod 能访问 datakit-service.datakit.svc:9533
  • DataKit-Operator v1.7.0 以及以上版本
  • 集群管理员权限(用于注册 CRD)

三、采集流程

1. 注册 Kubernetes CRD

  • 使用以下 YAML 注册 ClusterLoggingConfig CRD:
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: clusterloggingconfigs.logging.datakits.io
  labels:
    app: datakit-logging-config
    version: v1alpha1
spec:
  group: logging.datakits.io
  versions:
    - name: v1alpha1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            apiVersion:
              type: string
            kind:
              type: string
            metadata:
              type: object
            spec:
              type: object
              required:
                - selector
              properties:
                selector:
                  type: object
                  properties:
                    namespaceRegex:
                      type: string
                    podRegex:
                      type: string
                    podLabelSelector:
                      type: string
                    containerRegex:
                      type: string
                podTargetLabels:
                  type: array
                  items:
                    type: string
                configs:
                  type: array
                  items:
                    type: object
                    required:
                      - source
                      - type
                    properties:
                      source:
                        type: string
                      type:
                        type: string
                      disable:
                        type: boolean
                      path:
                        type: string
                      multiline_match:
                        type: string
                      pipeline:
                        type: string
                      storage_index:
                        type: string
                      tags:
                        type: object
                        additionalProperties:
                          type: string
  scope: Cluster
  names:
    plural: clusterloggingconfigs
    singular: clusterloggingconfig
    kind: ClusterLoggingConfig
    shortNames:
      - logging
  • 创建 CRD 资源,自动应用采集配置
kubectl apply -f clusterloggingconfig-crd.yaml
  • 验证 CRD 注册
kubectl get crd clusterloggingconfigs.logging.datakits.io

图片

2. 安装配置 DataKit-Operator

  • 安装 DataKit-Operator v1.7.0 及以上版本,可通过命令 kubectl apply -f datakit-operator.yaml 安装最新的 datakit-operator.yaml 即可带上必要权限,或参考下列最小示例:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: datakit-operator
rules:
- apiGroups: ["logging.datakits.io"]
  resources: ["clusterloggingconfigs"]
  verbs: ["get", "list", "watch"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: datakit-operator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: datakit-operator
subjects:
- kind: ServiceAccount
  name: datakit-operator
  namespace: datakit

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: datakit-operator
  namespace: datakit

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: datakit-operator
  namespace: datakit
  labels:
    app: datakit-operator
spec:
  replicas: 1  # Do not change the ReplicaSet number!
  selector:
     matchLabels:
       app: datakit-operator
  template:
    metadata:
      labels:
        app: datakit-operator
    spec:
      serviceAccountName: datakit-operator
      containers:
      - name: operator
        # other..
  • 如下图,在 DataKit-Operator 配置中设置 logfwds 数组,主要配置 namespace_selectors/label_selectors 匹配规则和 log_volume_paths 挂载目录字段,namespace_selectors 和 label_selectors 为且的关系。

图片

3. DataKit Deployment 部署

  • 在超级节点集群安装部署 Deployment 类型的 DataKit,主要注意资源类型,副本,logfwdserver 采集器开关,以及 Deployment 的更新策略修改,如下:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: datakit
rules:
- apiGroups: ["rbac.authorization.k8s.io"]
  resources: ["clusterroles"]
  verbs: ["get", "list", "watch"]
- apiGroups: [""]
  resources: ["nodes", "nodes/stats", "nodes/metrics", "namespaces", "pods", "pods/log", "events", "services", "endpoints", "persistentvolumes", "persistentvolumeclaims", "pods/exec"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
  resources: ["deployments", "daemonsets", "statefulsets", "replicasets"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["batch"]
  resources: ["jobs", "cronjobs"]
  verbs: [ "get", "list", "watch"]
- apiGroups: ["monitoring.coreos.com"]
  resources: ["podmonitors", "servicemonitors"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["logging.datakits.io"]
  resources: ["clusterloggingconfigs"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["metrics.k8s.io"]
  resources: ["pods", "nodes"]
  verbs: ["get", "list"]
- nonResourceURLs: ["/metrics"]
  verbs: ["get"]

---

apiVersion: v1
kind: ServiceAccount
metadata:
  name: datakit
  namespace: datakit

---

apiVersion: v1
kind: Service
metadata:
  name: datakit-service
  namespace: datakit
spec:
  selector:
    app: daemonset-datakit
  ports:
    - name: svc-http-port
      protocol: TCP # for HTTP apis and some collector(inputs) HTTP server, such as DDTrace
      port: 9529
      targetPort: http-port
    - name: svc-statsd-port
      protocol: UDP
      port: 8125
      targetPort: statsd-port
    - name: svc-otel-grpc-port
      protocol: TCP
      port: 4317
      targetPort: otel-grpc-port
    - name: svc-logfwd-port
      protocol: TCP
      port: 9533
      targetPort: logfwd-port

---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: datakit
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: datakit
subjects:
- kind: ServiceAccount
  name: datakit
  namespace: datakit

---

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: daemonset-datakit
  name: datakit
  namespace: datakit
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: daemonset-datakit
  template:
    metadata:
      labels:
        app: daemonset-datakit
    spec:
      hostNetwork: true
      dnsPolicy: ClusterFirstWithHostNet
      containers:
      - env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name

        - name: ENV_K8S_NODE_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP

        - name: ENV_K8S_NODE_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName

        #- name: ENV_K8S_CLUSTER_NODE_NAME
        #  value: cluster_a_$(ENV_K8S_NODE_NAME)

        - name: ENV_DATAWAY
          value: https://openway.guance.com?token=tkn_3a0052c9f6d3498c8ce9ca0988fd9c82 # Fill your real Dataway server and(or) workspace token
        - name: ENV_CLUSTER_NAME_K8S
          value: lyr-test
        - name: ENV_GLOBAL_HOST_TAGS
          value: host=__datakit_hostname,host_ip=__datakit_ip
        - name: ENV_GLOBAL_ELECTION_TAGS # Default not set
          value: ""
        - name: ENV_DEFAULT_ENABLED_INPUTS
          value: statsd,dk,cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container,kubernetesprometheus,logfwdserver,ddtrace
        - name: ENV_ENABLE_ELECTION
          value: enable
        - name: ENV_HTTP_LISTEN
          value: 0.0.0.0:9529
        - name: HOST_PROC
          value: /rootfs/proc
        - name: HOST_SYS
          value: /rootfs/sys
        - name: HOST_ETC
          value: /rootfs/etc
        - name: HOST_VAR
          value: /rootfs/var
        - name: HOST_RUN
          value: /rootfs/run
        - name: HOST_DEV
          value: /rootfs/dev
        - name: HOST_ROOT
          value: /rootfs
        image: pubrepo.guance.com/datakit/datakit:1.86.2
        imagePullPolicy: IfNotPresent
        name: datakit
        ports:
        - containerPort: 9529
          hostPort: 9529
          name: http-port
          protocol: TCP
        - containerPort: 8125
          hostPort: 8125
          name: statsd-port
          protocol: UDP
        - containerPort: 4317
          hostPort: 4317
          name: otel-grpc-port
          protocol: TCP
        - containerPort: 9533
          hostPort: 9533
          name: logfwd-port
          protocol: TCP
        resources:
          requests:
            cpu: "200m"
            memory: "128Mi"
          limits:
            cpu: "2000m"
            memory: "4Gi"
        securityContext:
          privileged: true
        volumeMounts:
        - mountPath: /usr/local/datakit/cache
          name: cache
          readOnly: false
        - mountPath: /rootfs
          name: rootfs
          mountPropagation: HostToContainer
        - mountPath: /var/run
          name: run
          mountPropagation: HostToContainer
        - mountPath: /sys/kernel/debug
          name: debugfs
        - mountPath: /var/lib/containerd/container_logs
          name: container-logs
          mountPropagation: HostToContainer
      hostIPC: true
      hostPID: true
      restartPolicy: Always
      serviceAccount: datakit
      serviceAccountName: datakit
      tolerations:
      - operator: Exists
      volumes:
      - configMap:
          name: datakit-conf
        name: datakit-conf
      # - name: hellopythond
      #   configMap:
      #     name: python-scripts
      - hostPath:
          path: /
        name: rootfs
      - hostPath:
          path: /var/run
        name: run
      - hostPath:
          path: /sys/kernel/debug
        name: debugfs
      - hostPath:
          path: /root/datakit_cache
        name: cache
      - hostPath:
          path: /var/lib/containerd/container_logs
        name: container-logs
      # # ---iploc-start
      #- emptyDir: {}
      #  name: datakit-ipdb
      # # ---iploc-end
  strategy:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate
  • 安装部署执行
kubectl apply -f datakit.yaml

4. 创建日志 CRD 采集配置

apiVersion: logging.datakits.io/v1alpha1
kind: ClusterLoggingConfig
metadata:
  name: demo-logs
spec:
  selector:
    namespaceRegex: "^(default)$"
    podRegex: "^(deploy.*)$"
    podLabelSelector: "app=demo"

  podTargetLabels:
    - app
    - version
    - enviroment

  configs:
    - source: "demo-file"
      type: "file"
      path: "/data/logs/server/server.log"
      tags:
        log_type: "server"
        component: "springboot-server"
  • 应用配置
kubectl apply -f logging-config.yaml

图片

5. 查看日志上报(首次需重启业务)

  • 在 DataKit 容器内,通过“datakit monitor”命令查看日志上报:

图片

  • 容器内日志如下图,数据成功上报到观测云,在观测云控制台筛选相关 source 为"demo-file"即可查看,并可以查看到 CRD 配置的相关字段展示:

图片

在编排自动化测试场景的时候,有一个问题其实很容易遇到。

不同的场景用例,往往会用到同一批测试数据。

比较常见的做法,就是把这份数据复制一份,然后粘贴到其他场景用例里,每个场景各维护一份。刚开始场景不多的时候,这种方式其实也没什么问题。

但随着自动化测试的场景越来越多,同一份测试数据就会被复制到很多地方。

一旦测试数据需要调整,就得逐个场景去修改。场景少还好,场景一多就很难保证每个地方都能同步更新,时间久了也很容易出现数据不一致的情况。

其实在不少项目里,自动化测试维护成本变高,往往就是从这里开始的。

针对这种情况,我们在 Apifox 的自动化测试里增加了一种新的数据管理方式,叫做「共用测试数据」。

共用测试数据

通过共用测试数据,可以把原本分散在各个场景里的测试数据统一管理,多个场景用例都可以直接引用。

当测试数据需要调整时,只需要修改这一处地方,所有引用它的场景用例都会自动同步更新。

共用测试数据支持自动批量生成数据,只需要设置生成规则,就可以一次生成大量测试数据,不需要手动逐条录入。

共用测试数据支持自动批量生成数据

如果已经有现成的数据,也可以直接导入,比如 CSV 或 JSON 文件。同时也支持从数据库读取数据,直接作为测试数据使用。

可以直接导入CSV 或 JSON 文件

下面我们详细看看这个功能具体怎么用,在开始之前,请先将 Apifox 更新到最新版。

创建共用测试数据

Apifox 支持两种方式创建「共用测试数据」,以适应不同的使用场景。

静态测试数据

静态数据适用于那些内容相对固定的场景,比如一组固定的测试账号或地区编码。

进入 Apifox 项目,在左侧菜单栏中点击「自动化测试」,然后切换到「测试数据」标签页。点击该标签页上的 ...,选择「新建测试数据(静态)」。

静态测试数据

进入编辑界面后,可以手动添加数据列(变量),也可以直接导入 CSVJSON 格式的文件。

可以手动添加数据列(

测试数据的「变量名」设置好后,可以根据规则批量生成数据,表格的每一列都会成为一个可在后续测试中引用的变量。

根据规则批量生成数据

编辑完成后,点击保存即可完成静态共用测试数据的创建。

数据库连接测试数据

对于需要从真实数据库中获取数据的场景,比如从用户表中随机抽取一批测试用户进行测试,使用数据库连接的方式会更加高效。

同样在「测试数据」标签页,点击 ...,选择「新建测试数据(数据库连接)」。

数据库连接测试数据

如果项目尚未配置数据库连接,系统会引导你进行设置。选择一个已有的数据库连接,或创建一个新的连接。

配置好「数据库连接」后,你需要在 SQL 编辑区域中编写查询语句,用于从数据库中提取所需的测试数据。这里的 SQL 语句支持使用 Apifox 的环境变量。一个简单的 SQL 查询命令如下:

SELECT id, name, email FROM pets LIMIT 0, 10;

点击「保存」,Apifox 会执行该 SQL 语句,并将查询结果作为测试数据保存下来。

Apifox 会执行该 SQL 语句

需要注意,通过这种方式获取的数据在保存后就变成了静态数据。它不会随着数据库内源数据的变化而自动更新。如果需要同步最新的数据,可以进入该测试数据的编辑页面,手动点击「刷新」按钮来重新获取。

要同步最新的数据

在场景用例中使用共用测试数据

数据创建完成后,就可以在自动化测试的「场景用例」中进行引用了。

打开或新建一个场景用例,在右侧的「运行配置」面板中,找到「测试数据」这一项。

点击下拉框,此时列表中会显示出所有已创建的「共用测试数据」,选择你需要的那个数据集。

在场景用例中使用共用测试数据

引用成功后,这份数据集中的所有列名都会成为当前场景用例可用的变量。在用例的任何步骤中,比如接口请求的 URL、参数或请求体中,都可以通过 \{\{变量名\}\} 的语法来引用这些数据。

通过变量名引用

当运行此场景用例时,如果共用测试数据包含多行记录,Apifox 会为每一行数据都完整地执行一次测试流程,这也就是数据驱动测试的实现方式。

Apifox 会为每一行数据都完整地执行一次测试流程

管理你的共用测试数据

随着项目的推进,对共用测试数据的管理也变得重要起来。

编辑与维护

在「测试数据」列表中,点击任意数据名称即可进入编辑界面。对于静态数据,你可以自由地增删改查数据行和数据列。

对于通过数据库连接创建的数据,其内容是只读的,不能直接编辑。但可以更改数据库连接配置,或者调整 SQL 查询语句,然后重新获取数据。

按环境配置数据

共用测试数据支持按环境配置,你可以为开发环境、测试环境、生产环境等分别维护不同的数据集。

 管理你的共用测试数据

当你在运行测试用例时切换环境,Apifox 会自动加载并使用对应环境下的数据集,无需手动更改。


到这里,「共用测试数据」这个功能的基本用法就介绍完了。

如果你的项目里已经有不少自动化测试场景,不妨试试把一些重复使用的数据整理成「共用测试数据」,整体维护起来会轻松不少。

如果在使用过程中遇到不太清楚的地方,也可以查看 Apifox 的 帮助文档,里面有更完整的功能说明和配置示例。有任何问题欢迎在 Apifox 用户群与我们交流沟通。

同时,Apifox 提供企业私有化部署版本,通过本地化部署、客制化服务,协助企业进一步提升研发团队效能。

导语

大语言模型推理与生成能力强,但在迈向自主智能体时暴露出“短时记忆”短板:大模型本质上是无状态的,即使上下文变长,交互也难以沉淀为长期认知。为此,PolarDB MySQL版推出 Mem0 托管服务,融合内核级向量库与图引擎,100% 兼容开源生态,并将记忆精炼与存储成本降低 30% 以上,帮助 Agent 持续学习进化,实现“千人千面”的智能化体验。

01 AI Agent 缺失的核心能力:长期记忆

在 AI Agent 的进化路径上,感知(多模态)、思考(推理)和工具执行(Function Calling)逐步完善,但仍缺少“时间连续性”。Mem0(Memory Layer for AI)因此诞生,作为大模型的个人记忆层;PolarDB MySQL版 Mem0 则是其云原生托管版,将记忆的存储、抽取与检索一站式集成到瑶池数据库生态。

  • 没有长效记忆的 Agent:每次对话都像“初次见面”,需要反复写 Prompt 维持设定。
  • 拥有 PolarDB MySQL版Mem0 的 Agent:能从对话中提炼结构化事实,并持续演进。
    它不是简单存聊天记录,而是把“原始表达”抽取成“核心事实”。例如从“给女儿买粉色独角兽礼物,但最近手头紧”中提炼关键事实:
  • 用户有一个女儿。
  • 女儿偏好:粉色、独角兽。
  • 财务状态:近期预算有限。
    一个月后问“周末带孩子去哪玩”时,即可据此推荐更合适的低成本方案。这就是长期记忆:它让 Agent 拥有了“读懂人心”的连续性,成为通向通用人工智能(AGI)的重要一环。

    02 五大应用场景

    PolarDB MySQL版Mem0 不仅仅是存储,它更像是在数据库里为每个用户建立了一个“数字分身”。以下是长期记忆在五大领域的应用场景:

  • 智能客服
    Mem0通过存储用户设备型号、报修记录及沟通偏好,使Agent可直接询问类似这样的问题:“王先生,您上次的投影仪问题解决了吗?”连续性体验从“冰冷程序”升级为“专属助理”。
  • 个性化教育
    Mem0记录学生难以掌握的知识点、题目类型、题目正确率等信息,复习时优先推送三天前错题,实现动态教学,避免盲目刷题。
  • 医疗健康
    Mem0存储病史、过敏史及治疗方案,当患者咨询新症状时,关联半年前体检数据,提供时间纵深建议,并提醒药物冲突,实现全周期医疗服务。
  • 情感陪伴
    Mem0存储情绪波动、纪念日及亲友关系等信息,当用户失落时,可主动提及类似如下话题:“记得你上次完成项目会开心很久,现在进展顺利吗?”实现共情式支持。
  • 智能推荐
    Mem0基于客户的长期兴趣,记录其兴趣演变及购买动机,构建动态兴趣图谱,适时主动推荐延续性商品,实现主动服务。

    03 核心优势:为什么是 PolarDB MySQL 版 Mem0?

    过去,实现 AI 长效记忆需要开发者自己手动维护向量数据库、处理复杂的 Prompt 提取逻辑、还要担心数据一致性。PolarDB MySQL 版 Mem0 的出现,本质上是将“记忆”从一种复杂的开发任务,变成了数据库的一项“原生服务”。

  • 100% 兼容开源生态,开箱即用
    PolarDB MySQL版 Mem0 托管服务 100% 兼容开源 Mem0 框架,开发者可以利用成熟的开源社区生态,无需修改现有 Agent 代码逻辑,通过简洁的 RESTful API 即可实现无缝迁移。
  • 资源弹性与低成本
    支持按记忆量收费(标准版)和按资源量收费(企业版)两种模式,标准版记忆成本是Mem0商业版的50%。另外,PolarDB MySQL 版 支持 Serverless 弹性伸缩,对于 AI Agent 这种典型的波峰波谷流量场景,能够帮助企业减少约 50% 的云资源成本支出 。
  • 低时延、高准确性
    PolarDB MySQL 版 Mem0经过专业AI算法优化,相较于自建开源Mem0方案,在标准测试数据集上,正确率提升50%+,时延降低30%+。
  • 融合向量、全文、图的多模态检索能力
    原生集成向量、图、全文检索能力,支持复杂的实体关系推理。深度集成 Lakebase 湖库一体架构,实现冷热数据智能分层,热数据秒级响应,冷数据自动归档 OSS,解决多库堆叠的存储难题。
  • ● 向量检索:快速召回语义相近记忆(如“运动”联想到“跑步”)。
  • ● 图推理:理解人物/实体关系(如“老王是小王父亲”,小王生病时提醒老王关注),纯向量方案难以实现。
  • ● 全文检索:精确命中特定关键词。

04 架构解密:从对话到记忆的“奇妙旅行”

image.png
PolarDB MySQL 版 Mem0 长记忆架构PolarDB MySQL 版 Mem0 的工作原理并非简单的存储,而是一个“动态演进”的过程:

  1. 记忆提取和存储:从“非结构化文本”到“知识单元”

PolarDB MySQL 版 Mem0 不只是存储对话原文,而是支持调用语义提取模型深度解构信息。系统自动识别实体(人/物/地)并进行语义压缩,剔除冗余信息,仅保留核心事实(Fact)。利用 PolarDB MySQL 版 融合引擎,将结构化事实与高维向量同步存储,实现存储效率与检索性能的平衡。

  1. 记忆检索:基于语义的多路检索和召回

PolarDB MySQL 版 Mem0 的检索不只依赖单一的向量匹配,而是采用“向量+图+元数据”三路并行机制。语义检索精准定位概念;图引擎补齐逻辑短板(如从“辣”联想到“胃炎史”的关系推理);元数据过滤则在海量数据中实现基于 user_id 或时间维度的秒级筛选,确保召回既准又深。

  1. 记忆冲突处理:记忆的“新陈代谢”与逻辑自洽

模拟人类遗忘与更正机制。引入时序权重衰减函数,赋予新信息更高置信度。在写入(add)逻辑中自动触发冲突检测:若新旧信息矛盾(如“单身”变“已婚”),系统将执行增量更新或逻辑覆盖,确保 AI 记忆始终符合当前事实。

  1. 多级隔离:安全与隐私的“防弹衣”

构建层级化元数据索引体系,原生支持 user_id、agent_id、run_id 三级隔离。这种精细化的物理与逻辑控制,确保了不同应用、不同用户间的记忆完全独立,为企业级 AI 应用提供严密的隐私保障。Agent ID对应智能体/应用级隔离,确保不同功能的 AI 逻辑独立;User ID对应用户级,保护个人隐私,实现个性化;Run ID对应会话/任务级,针对特定任务的短期上下文隔离。

05 开发者福利:三步开启长期记忆

PolarDB MySQL 版 Mem0 现已集成在阿里云 PolarDB for MySQL版体系中,接入简单:
步骤一:实例创建与白名单配置
在 PolarDB MySQL 版 Mem0购买页创建 Mem0 实例。需注意应用白名单与集群白名单相互独立,需单独配置 IP 白名单或安全组,以确保 ECS 或本地服务器具备访问权限。
步骤二:自定义提取策略
利用系统内置或自定义 Prompt 策略指导 LLM 提取记忆。支持会话摘要策略(保留对话整体背景)与语义记忆策略(提取离散事实,如医疗体征或金融偏好),适配不同业务场景。
步骤三:API 集成与调用流程,在AI Agent的代码中集成PolarDB MySQL 版 Mem0的API,实现 AI Agent 记忆存储。
PolarDB MySQL 版 Mem0 提供了遵循 RESTful 风格的 API 文档(可通过控制台端点访问)。通过标准的 RESTful API 将记忆能力无缝集成至 AI Agent 代码中:

  • 添加(/v1/memories):发送对话内容,系统自动执行语义分析与事实持久化。
  • 搜索(/v2/memories/search):基于查询文本检索 TopK 相关记忆及其元数据,作为上下文回填 LLM。
  • 维护:支持基于 memory_id 的精确更新或基于 user_id 的批量清理,实现记忆的精细化管理。

06 结语:从“对话”到“进化”,让 AI 实现长期的认知积累

PolarDB MySQL 版 Mem0 托管服务的推出,为企业构建AI应用提供了新的数据基础设施选择。在大模型与 Agent 技术浪潮中,数据不再是冰冷的行列记录,而是赋予机器智慧的认知载体 。
通过深度集成开源 Mem0 的灵活性与 PolarDB MySQL 版 的极致性能,这一托管服务不仅解决了 AI Agent 的“健忘”难题,更通过降本增效、安全加固与场景深耕,为企业构建新一代智能应用提供了坚实的底座。随着PolarDB “AI Lakebase”架构的进一步成熟,数据库与大模型的协同将更加紧密 。对于每一位致力于打造极致用户体验的开发者而言,PolarDB MySQL 版 Mem0 都是实现“让 AI 记住一切”愿景的重要工具。
目前,PolarDB MySQL 版 Mem0 正在火热邀测中,欢迎前往阿里云官网提交工单申请体验,开启您的 Agent 进化之旅。
如您在使用PolarDB Mem0的过程中有任何问题,欢迎搜索钉钉群号“ 28000021116”加入PolarDB专家面对面群咨询。

延伸阅读:PolarDB 长期记忆 Mem0

直奔主题,网页开发应用文档地址:飞书开发者文档

开放接口(H5 JSAPI)

开放平台提供了网页应用可以调用的 H5 JSAPI。调用 JSAPI 依赖开放平台提供的工具包 JSSDK,使用时只需要在调用 JSAPI 的页面引入 JS 文件即可,引入方式如下代码所示。

<script
type= "text/javascript"
src= "https://lf-scm-cn.feishucdn.com/lark/op/h5-js-sdk-1.5.44.js"
></script>

配置应用免登流程

前端要做的就是获取code请求后端接口,让后端生成身份access_token从而存储在cookie

/**
 * 飞书工具类
 */
import { APP_ID } from '@/configs/feishu'

export class FeiShu {
    static handleOAuth() {
        if (window.tt.requestAccess) {
            window.tt.requestAccess({
                // 网页应用 App ID
                appID: APP_ID,
                scopeList: [],
                success: (res: Record<string, any>) => {
                    // 用户授权后返回预授权码
                    const { code } = res
                    // 通过code请求后端接口获取用户信息
                },
                fail: (error: any) => {
                    // 需要额外根据errno判断是否为 客户端不支持requestAccess导致的失败
                    const { errno, errString } = error
                    if (errno === 103) {
                        // 客户端版本过低,不支持requestAccess,需要改为调用requestAuthCode
                        callRequestAuthCode()
                    } else {
                        // 用户拒绝授权或者授权失败
                        alert('用户拒绝授权或者授权失败');
                    }
                },
            })
        } else {
            // JSSDK版本过低,不支持requestAccess,需要改为调用requestAuthCode
            callRequestAuthCode()
        }

        function callRequestAuthCode() {
            window.tt.requestAuthCode &&
                window.tt.requestAuthCode({
                    // 网页应用 App ID
                    appId: APP_ID,
                    success: (res: Record<string, any>) => {
                        // 用户免登录后返回预授权码
                        const { code } = res
                        // 通过code请求后端接口获取用户信息
                    },
                    fail: (error: any) => {
                        // 免登失败,返回相应的errno和errString
                        const { errno, errString } = error
                        
                    },
                })
        }
        return
    }
}

这里注意了!

必须要配置重定向的地址,不然静默授权会失败!
进入飞书开放平台的开发者后台,在左侧导航栏的【安全设置】页面配置允许重定向的URL免登授权码跳转地址
image.png

如何判断是飞书内置浏览器

export const getIsFeiShu = () => {
    const userAgent = navigator.userAgent.toLowerCase()
    return userAgent.includes('feishu') || userAgent.includes('lark') // 飞书
}

如何进行调试

开发者调试描述
点击【网页应用远程调试工具】
image.png

如图所示,将 <script src='https://lf-package-cn.feishucdn.com/obj/feishu-static/op/fe/devtools_frontend/remote-debug-0.0.1-alpha.6.js'></script> 引入 html head
点击【生成并打开调试地址】,激活后再点击如下 【调试】按钮即可打开开发者调试工具窗口
image.png

image.png

作为运维工程师,在日常排查网络故障或分析恶意攻击时,使用IP查询工具几乎是我们基本操作。但最近圈子里热议的一个话题让我不得不警惕:这些免费的IP查询工具,真的安全吗?今天我们就来唠唠,IP查询工具是如何泄露个人信息的,以及我们该如何练就火眼金睛,选择既专业又安全可靠的工具。在这方面,IP数据云因其高精度的定位能力和对数据隐私的严格把控,成为了我们团队在处理这类需求时的首选参考工具。

一、为什么一个简单的查询会泄露隐私?

很多兄弟可能觉得,我就查个IP归属地,能泄露什么?其实风险主要来自两个方面:
双向风险:当你使用小作坊的查询网站时,对方不仅记录你查询的目标IP,还会悄悄获取你的公网IP、User-Agent甚至Cookie,用于二次售卖或植入恶意代码。
数据滥用:小型查询站往往没有完善的隐私政策,你的查询行为可能被用于绘制用户画像,甚至将IP对应的家庭宽带信息出售给营销公司。

二、如何验证一个IP查询工具是否“干净”?

1.看网络请求:打开F12开发者工具,查看Network面板。查询时除了目标IP的请求外,是否有额外JS向未知域名上报数据?
2.验数据精度:专业服务商遵循数据最小化原则,返回字段足够用于定位和风险判断,但不过度收集。对于金融反欺诈等高合规场景下尤为重要。
3.测风险识别:安全的工具应能识别代理、Tor出口节点。利用专业风险识别引擎区分真实宽带与数据中心IP,能有效避免误信“伪住宅IP”导致的风控漏洞。

三、实战:搭建你的安全查询工作流

在运维工作中,我们不能依赖单一工具,而是要建立一套“SOP”。
1.基础排障:使用支持HTTPS加密的站点做基础定位。
2.深度风险分析:安全事件分析时,我会使用IP数据云的批量查询功能,上传日志直接导出包含经纬度、行政区划码及风险标签的报告。毫秒级响应,且提供免费测试额度,完全满足日常攻防演练的需求。
3.离线数据处理:对于涉密环境,建议采用离线库。选择支持定制化更新频率的服务商,在物理隔离环境下保障数据的实时性和安全性。

四、核心选择标准总结

结语

在数字化时代,IP地址不仅是网络标识,更是重要的个人信息资产。我们运维人员在利用工具提高效率的同时,也必须守好数据安全的底线。IP数据云这类工具之所以成为我们团队的基础设施,因为他把数据合规与私有化安全作为核心目标,让我们在每一次查询时都能做到心中有数。
选择靠谱的工具,不仅是对自己的技术负责,更是对用户的隐私负责。

据说第一批养龙虾的人已经后悔了。因为养不起了。

OpenClaw 是个开源智能体,下载和安装都不花钱,但是要养它,那就要狠狠地烧Token了。

因为龙虾的费用不只来自核心模型回复,还有网页读取、记忆检索、压缩总结、工具调用,以及系统提示里塞进去的 workspace 文件和 bootstrap 配置,上下文一长,账单冷不丁就是梆梆两拳。

用 Claude Sonnet 跑 OpenClaw,单月累计一千万输入加一千万输出 token,光费用就接近上百美元。真把它当全天候执行 Agent、用高阶模型跑难度较高的任务,一个月烧掉几千块也不奇怪了。就比如 OpenRouter 处理的 token 量从每周 6.4 万亿直接涨到 13 万亿。

本来想让AI帮自己打工,结果工资全上交给了AI。

image.png

因为云端 Token 的支出太贵了,所以本地化运行就是一个不错的选择。OpenClaw 与 Ollama 配合食用。

Ollama 负责在本地机器上运行 Llama、Mistral 或 DeepSeek 等开源模型,API 不就降下来了嘛。除了显卡的风扇转得快点,没其他毛病,而且所有私有数据和代码处理都留在本地,无需上传至云端,在实现成本可控的同时,也保障了隐私安全。

实战:OpenClaw 与 Ollama 的本地结合

OpenClaw 是一个基于 Node.js 开发的框架,要求环境必须使用 Node.js 22 或更高版本。

那可以选择 ServBay 来部署 Node.js 环境。

作为一个本地 Web 开发环境管理工具,ServBay 能够管理不同版本的 Node.js。通过其图形化界面,用户就可以快速切换到 Node.js 22 环境,避免了手动配置环境变量或处理版本冲突的过程。

image.png

在环境准备就绪后,通过简单的命令即可完成 OpenClaw 的部署。

curl -fsSL https://molt.bot/install.sh | bash
openclaw onboard --install-daemon

还是通过 ServBay,可以一键下载并安装Ollama

image.png

然后在 ServBay 左侧的菜单栏中,选择合适的大模型下载即可。

image.png

OpenClaw 并不直接具备思考能力,它需要通过以下命令连接 Ollama:

ollama launch openclaw

这个命令会将 OpenClaw 配置为使用本地 Ollama 提供的模型。

安全防护:Git 兜底与权限控制

当 AI 获得系统操作权限时,安全风险也随之升级。相信大家也没少看 OpenClaw 误删邮件的新闻。

一个拥有执行权限的智能体如果误解了指令,会对系统造成破坏。为了应对这些潜在风险,我们要做好防护机制。

Git 作为安全网

OpenClaw 建议将整个工作空间(包括配置文件和记忆日志)纳入 Git 管理。

git init
git add AGENTS.md SOUL.md memory/
git commit -m "初始化智能体工作空间"

如果智能体在执行任务时安装了错误的技能,或者对配置文件进行了异常修改,开发者可以利用 git revert 快速将系统状态回滚到安全的时间点。这种版本控制化的演变让 AI 的行为变得透明且可逆。

权限限制与沙箱模式

智能体的能力来源于技能系统。为了防止第三方技能携带恶意代码,在安装前应人工审核其源代码,确认其执行的命令。此外,对于处理复杂任务的智能体,建议将其运行在虚拟机或 Docker 容器等隔离环境中。

身份验证与私有访问

Gateway 服务不应直接暴露在公网。安全的做法是开启网关认证,并通过 openclaw doctor 进行风险诊断。在远程访问时,配合 VPN 或内网穿透工具,确保只有授权用户能向智能体发送指令。

总结

OpenClaw 挺好的,拿来做一个玩具还行,但是真正要它成为一个24小时的雇员,成本和风险都还是挺高的。

本次我们筛选了目前国内市场上主流、高认可度的五款开源电商系统,从开源模式、技术架构、功能特性、维护迭代等核心维度展开盘点,结合实际使用体验给出客观推荐,希望能为大家的电商系统选型提供实用参考。

1、Mall4j
推荐指数:★★★★★☆

开源模式:基础版免费开源,商业版付费增值

开源程度:所有版本 100% 开源,无加密,无授权限制

推荐原因:作为国内轻量级开源电商系统的标杆产品,Mall4j 深耕电商领域多年,技术团队拥有丰富的商城系统开发与落地经验。后端基于SpringBoot3+Spring OAuth2.0 主流框架打造,搭配 MyBatis、Redis 构建高性能分布式架构,自带分布式锁、XSS 攻击防范能力,为生产环境多实例部署做好完全准备;前端适配 Vue3+Uniapp 技术栈,实现前后端彻底分离,兼容高并发、高扩展的业务场景,数据库为 B2B2C 模式专属设计,拥有完整的 SKU 管理和下单流程,基础电商功能打磨极致,bug 率低。同时支持二次开发与定制化服务,代码可读性高、拓展性强,适配中小企业快速落地与中大型企业深度定制的双重需求。官网社区活跃度高,技术文档完善,迭代更新速度快,兼顾技术前瞻性与商业实用性,综合实力稳居前列。

3d3da6b5378673e98e1c2746cebcce95_202603111701469629.001.png
e432308c8855437ef641d95e8c48276d_202603111701469629.002.png
f718323ba35a85caf96a64500463a684_202603111701469629.003.png
2、shop++
推荐指数:★★★★☆☆

开源模式:大部分产品开源,商业授权提供增值服务

开源程度:开源部分 100% 无加密

推荐原因:拥有十余年发展历程的老牌开源商城系统,早期在行业内知名度颇高,是传统电商系统开发的经典选择。主打 SpringMVC 框架,技术架构成熟稳定,适配偏好传统技术体系的开发者与企业,系统支持视频 / 直播、页面可视化、积分商城、IM 客服等主流功能,全渠道覆盖 iOS、Android、WAP、微信公众号、多平台小程序等终端,能打造完整的移动电商解决方案。开源部分无加密处理,可进行基础的二次开发,商业授权后还能获取官方增值服务与技术支持,整体产品落地性经过市场长期验证。
3e8088a9c587f03cdc816eb070838365_202603111701469629.004.png
3、CRMEB
推荐指数:★★★★☆☆

开源模式:标准版开源免费下载,其余付费

开源程度:部分版本有加密,授权有限制

推荐原因:老牌 PHP 开源电商产品,产品线覆盖广泛,主打 PHP 项目并衍生出 Java 版本,技术栈基于 SpringBoot/vue2,虽技术栈相较于新兴产品不占优势,但在 GitHub 上关注度高,社区活跃度出色。系统支持源码交付、独立部署,可摆脱插件与 SaaS 束缚,二次开发灵活高效,能助力企业打造自主可控的私域电商平台,适配 B2C、B2B2C、O2O、知识付费等多种业态,是 50 万 + 企业的选择,稳定性与落地性经过市场充分验证。

cad559a7dfd9af4c576b32c911a53daf_202603111701469629.005.png
4、Lilishop
推荐指数:★★★★☆☆

开源模式:单体版全端开源,商业授权付费开源

开源程度:所有版本 100% 开源,无加密

推荐原因:早年知名度较高的开源电商产品,后端基于 SpringBoot 开发,前端兼容 vue2/vue3,商城功能覆盖前台到后台全流程,能满足电商运营的核心需求。支持会员分销返佣、可视化装修、直播带货、零售 + 批发等多种能力,100% 源码提供可实现深度定制,同时无缝对接第三方登录、支付平台,接口化开发让系统拓展性更强。不足之处在于代码更新与维护频率相较于新兴开源产品略低,技术迭代速度有待提升。
d8f2a269fdfbc29cfa2cb655c233e970_202603111701469629.006.png
5、微同商城
推荐指数:★★★★☆☆

开源模式:基础版免费开源,高阶版开源状态未公开

开源程度:基础版 100% 开源,高阶版开源状态及加密情况官方未明确透露

推荐原因:在 Gitee 码云排名稳居前列,受众认可度极高,前后端基于 uniapp+Java 开发,能帮助开发者快速搭建微信小程序商城,减少重复开发工作。支持 B2B、B2B2C、SaaS 等多种模式,基础版功能可满足中小企业和个人开发者的电商落地需求,累计下载安装超 160000 次,拥有完善的运营看板大屏,可实现流量、订单、会员数据的实时监控。不足之处在于代码更新与维护频率略低,且高阶版的开源状态、功能细节及授权方式官方未明确透露,企业进阶商业使用需进一步咨询官方。
5a2fdd79af73d3848ed1e709c9e0015e_202603111701469629.007.png