2026年3月

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

开放接口(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小时的雇员,成本和风险都还是挺高的。

V 友们应该绝大部分都是程序员,不知道是不是还在为每次调试本地存储、Cookie 反复点开开发者工具、一层层找数据而烦躁?

今天给大家安利一款极简高效的浏览器插件——Me Storage,专门解决浏览器存储管理痛点。


它能帮你做什么?

一键查看/复制 localStorage 、sessionStorage 、cookie
直接编辑 键值对,不用在控制台操作
一键清空 清理数据更高效
便捷转移 方便跨环境复制登录态
界面清爽直观 不用再深度挖掘 F12 面板

一句话:所有浏览器存储操作,点一下插件就能搞定


为什么推荐它?

  • 轻量化、无广告、不卡顿
  • 不用写代码,可视化操作
  • 调试页面、排查存储问题速度翻倍
  • 适合前端开发、测试、以及对浏览器控制台不熟悉的后端用户

以前调试一个 localStorage 要:F12 → Application → Storage → 操作,非常不方便查看。
现在:点插件 → 直接改 → 实时生效


安装方式

Edge 浏览器商店直达:
https://microsoftedge.microsoft.com/addons/detail/me-storage/ikholnmonhaioiefbheeabdadbakmkeo

Chrome 浏览器火速上线中...


如果你每天和前端存储打交道,真心建议装上试试,提升调试幸福感

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

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

Cisco Secure Firewall 6100 Series FTD Software 10.0.0 & ASA Software 9.24.1.5

Firepower Threat Defense (FTD) Software - 思科下一代防火墙系统软件

请访问原文链接:https://sysin.org/blog/cisco-firepower-6100/ 查看最新版。原创作品,转载请保留出处。

作者主页:sysin.org


Cisco Secure Firewall 6100 系列

面向 AI 就绪数据中心的最高性能密度

思科的超高端防火墙系列,集成于 Cisco 的 Hybrid Mesh Firewall,提供卓越性能、线速威胁防护和模块化可扩展性。

Cisco Secure Firewall 6100 Series

Cisco Secure Firewall 6100 系列概览

部署超高端防火墙,实现高性能 AI 数据中心和电信移动基础设施中对加密威胁的高效、稳健保护。

  • 最大化性能密度以优化经济效益

    实现最高 5 倍的性价比、每机架单元最高吞吐量,以及高达 8 Tbps 的威胁检查,同时节省 80% 空间、60% 功耗,以及三分之一成本。

  • 利用 AI 防御加密的零日威胁

    将 Encrypted Visibility Engine 与硬件加密卸载结合,以大规模检查加密流量 (sysin)。使用 SnortML 检测零日威胁,无需新签名或解密。

  • 集成到 Cisco 的 Hybrid Mesh Firewall 架构中

    通过 Cisco Security Cloud Control,实现数据中心、园区和分支机构的统一安全管理,提供一致策略、全面可视化和无缝操作工作流。

  • 在万兆级别提供运营商级安全

    高效终止大量 IP Security (IPSec) 连接,作为高性能安全网关,针对 5G 电信基础设施和超高速加密流量进行了优化。

了解 6100 系列产品

Cisco Secure Firewall 6160

Throughput:

  • Next-gen firewall: 520 Gbps
  • IPS: 520 Gbps
  • IPSec VPN: 400 Gbps
  • Decryption: 100 Gbps

Cisco Secure Firewall 6170

Throughput:

  • Next-gen firewall: 650 Gbps
  • IPS: 600 Gbps
  • IPSec VPN: 500 Gbps
  • Decryption: 150 Gbps

查看数据表

下载地址

Secure Firewall 6100 Series, Firepower Threat Defense (FTD) Software - 10.0.0

File InformationFile NameRelease DateSize
Firewall Threat Defense install and upgrade package for the Secure Firewall 6100 series. Do not untarCisco_Secure_FW_TD_6100-10.0.0-140.sh.REL.tar03-Feb-20261667.07 MB

Cisco Adaptive Security Appliance (ASA) Software for the Cisco Firepower

File InformationFile NameRelease DateSize
Cisco Adaptive Security Appliance for the Cisco Firepower 6100 Series.cisco-asa-csf6100.9.24.1.5.SPA02-Mar-2026853.65 MB

更多:Cisco 产品下载链接汇总

Cisco Jabber 15.2 (Andriod, iOS, macOS, Windows) - 面向企业的多合一通信工具

即时消息、语音和视频通话、语音邮件、桌面共享、会议和在线状态

请访问原文链接:https://sysin.org/blog/cisco-jabber-15/ 查看最新版。原创作品,转载请保留出处。

作者主页:sysin.org


思科 Jabber

Cisco Jabber

使用任意设备随时随地开展协作

移动办公不应成为影响工作效率的不利因素。Cisco Jabber 将即时消息、语音和视频通话、语音邮件、桌面共享、会议和在线状态等多种功能集于一身,可以帮助您随时找到合适的人员,确认其是否有空,并以更有效地方式与他们协作。

Jabber 简介

Introducing Jabber

  • 与 Spark 互通

    与 Spark 互通

    Jabber 能够与 Spark 互通 (sysin),从而确保您能轻轻松松地引入 Cisco Spark。

  • Jabber 多线路功能

    Jabber 多线路功能

    多线路功能确保用户即使离开工位也不会影响工作。

  • Android 设备自动集成

    Android 设备自动集成

    通过 Android 设备自动集成功能,用户可以一边安全地回复消息,一边专心赶路。

  • 更出色的用户体验

    更出色的用户体验

    总体用户体验进一步提升,用户可以更轻松地找到所需之人并快速与之建立连接。

功能和优势

Capabilities and benefits

  • 即时消息和在线状态

    Cisco Jabber Advisory

    此功能有助于提高工作效率 (sysin)。通过参考即时在线状态信息来使用即时消息传输功能,您可以避免延误工作。您不仅能看到组织内部联系人的忙闲状态,也能看到组织外部的联系人是否有空。

  • 企业级语音和视频体验

    Cisco Jabber 个人会议室

    此功能有助于确保通信清晰。Cisco Jabber 的软件电话功能支持高清语音和视频及桌面共享,可为您提供安全可靠的通信体验。

  • 随时随地的协作

    Cisco Jabber 协作

    此功能可确保您放心前往需要您的地方。您可以在移动过程中使用 Cisco Jabber 的所有功能(包括语音会议),就像在桌面设备上使用 Cisco Jabber 一样简单。

  • 直接从 Microsoft Office 发起通信

    Cisco Jabber 与 Microsoft Office

    此功能有助于简化使用体验。您可以从各种 Microsoft Office 应用直接访问 Cisco Jabber。只需轻点鼠标,即可发起聊天、语音/视频呼叫或多方会议。

下载地址

Cisco Jabber Release 15.2(x) 21-Jan-2026

File InformationFile NameRelease DateSize
Cisco Jabber for Mac (Automatic update installation file)CiscoJabberMac-15.2.1.310617-AutoUpdate.zip21-Jan-2026185.20 MB
Cisco Jabber for Mac (Manual Installation file)CiscoJabberMac-15.2.1.310617.dmg21-Jan-2026186.18 MB
Cisco Jabber for Windows AdminCiscoJabber-Admin-ffr.15-2-1.zip21-Jan-20260.16 MB
Cisco Jabber for Windows InstallCiscoJabber-Install-ffr.15-2-1.zip21-Jan-2026205.30 MB
Cisco Jabber for AndroidJabber_15.2.0.310459.apk21-Jan-2026139.79 MB
Cisco Jabber for Android WearJabber-watch_15.2.0.apk21-Jan-20266.73 MB
Cisco Jabber for iPhone/Apple WatchApp StoreN/AN/A
Cisco Jabber for iPadApp StoreN/AN/A

更多:Cisco 产品下载链接汇总

日常开发中经常需要 SSH 到内网的 Linux 服务器上干活,但这些服务器没有外网访问权限,Claude Code CLI 自然也连不上 Anthropic API 。

琢磨了一下,发现可以利用 SSH 反向隧道解决这个问题——SSH 连接时顺带把本地 Mac 上的 API 代理端口"带过去",远程服务器通过 localhost 就能访问 API 。

于是封装成了一个工具包 claude-ssh-proxy,一条命令搞定:

claude-ssh user@内网服务器

自动完成:启动本地代理 → SSH 连接 → 建立反向隧道 → 配置远程环境变量。进去之后直接 claude 就能用。

特性:

  • 纯 Shell + Node.js 源码,零编译,无二进制依赖
    • 完整支持 SSE 流式输出
    • 一个代理可同时服务多条 SSH 隧道
    • 支持 token 鉴权(团队共用)
    • 支持离线安装 Claude Code 到无外网服务器

原理:

远程内网服务器                     开发者 Mac
┌─────────────────────┐           ┌──────────────────────┐
│  Claude Code CLI    │           │  API Proxy (:18080)  │
│    ↓                │           │    ↓                 │
│  localhost:18080  ──┼── SSH-R ──┼→ 127.0.0.1:18080     │
│                     │  tunnel   │    ↓                 │
└─────────────────────┘           │  api.anthropic.com   │
                                  └──────────────────────┘
                                  ```
                                  
                                  GitHub: https://github.com/Heliner/claude-ssh-proxy
                                  
                                  前置要求只需要两端都有 Node.js >= 18 。欢迎试用和反馈。

请教下国内模型大部分都不支持结构化输出,普通的问答倒是无所谓,开发上做一些结构化入库有什么好方法呢,有结构化输出之前,我是直接字符串截取。

比如:从对话中提取用户的姓名,放到 name 字段入库。
还有特别 sb 的是模型会回复:好的,我不输出其他内容直接给你输出 {name:xxxx}

还有像 codex 和 cc 这种需要完全准确的代码和指令的,会需要结构化输出吗?

根据环球市场最新播报:韩国电商巨头Coupang受大规模数据泄露事件影响,其第四季度营业利润同比暴跌97%。根据Coupang在一份新闻稿中的内容显示,截至12月的三个月内,集团的营业利润从2024年同期的4353亿韩元,暴跌至115亿韩元(约为800万美元)。净利润也从2024年同期的1827亿韩元,直接暴跌至负377亿韩元。此前Coupang方面表示约3000个账户的数据遭到泄露,但经过公私合作机构联合调查发现,已有超3360万个账户的信息已被曝光。官方发言人表示,数据泄露事件对集团业绩造成了极其沉重的负面影响,对企业第四季度的营收增长、活跃客户数量、付费Wow会员数量以及盈利能力均造成不利影响。JoySSL市场分析专家指出,Coupang数据泄露事件的冲击远不止事件本身,其对企业长远发展的影响,会以更隐蔽、更致命的方式出现,不断侵蚀企业核心生命力。作为保障数据安全与身份可信的中坚技术,SSL证书的战略意义在一次次数据泄露中被不断定义:不仅是合规的基础,更是企业构建抵御网络风险、维护品牌价值和实现持久发展的终极防护系统。

事件透析 企业利润暴跌背后的信任塌方

数据泄露事件让Coupang直接面临监管机构的天价罚单,被泄露信息的用户也展开集体诉讼,用户信任基础开始动摇,活跃度呈明显下滑趋势,新增用户后继无力。为此,Coupang不得不投入巨额营销费用挽回口碑与形象,获客成本急剧拉升。

除了直接经济影响外,品牌信誉的长期折价,才是对Coupang的致命一击。一次重大的安全事故,将会在用户心中留下不可磨灭的不安全印记,直接转化为客户流失率提升、复购率下跌、品牌溢价能力严重削弱,一系列负面影响将持续多年,拖累企业市场价值。

核心作用 SSL证书构筑多重抗风险防线

面对数据泄露引发的一系列网络风险,SSL证书以安全加密技术和身份验证等多重技术,构建安全防线。以先进算法实现高强度加密,对支付数据、登录凭证和个人资料等信息进行密文处理,杜绝在途泄露风险。

Coupang数据泄露事件反映出当下市场,钓鱼攻击频率激增,攻击者利用仿冒网站等手段,成功潜入内部系统,实施信息窃取。通过部署EV证书,可为企业提供权威的真伪验证手段,从源头切断钓鱼欺诈的路径,利用可视化信任标识,维系用户信任。

战略影响 数字证书重塑企业长远发展韧性

对Coupang这类商业巨头来说,危机应对必须考虑长远发展。显然,SSL证书无论是价值层面还是战略层面,均满足企业安全与发展双向需求。它是品牌信任的定期存款,在用户的每一次访问与使用中构建信任基础。JoySSL品牌总监表示,数字证书是企业提升市场竞争力的隐性加分项,更是应对未来风险的战略基础,规范部署SSL证书,提前规划布局,有利于企业从容应对各式网络风险和未来格局变革。

聚焦未来 数字化时代 安全投资不可懈怠

保护数据,就是保护利润,赢得信任,就是赢得未来。在数字化时代,安全早已从成本中心向利润中心转化。SSL证书也不再是单一的技术工具,而是企业实现长远发展的战略资产,守护每一次数据交互,维护品牌声誉,为提升企业竞争力持续发力。

3 月 11 日 AWE 2026 期间,高德地图携手全球先进消费级AR品牌雷鸟创新(RayNeo),正式发布全新的雷鸟智慧生活。这是自2025年5月双方达成战略合作以来的又一标志性成果。本次合作,将雷鸟创新的 AR 空间计算技术与拥有近 10 亿月活的国民级 APP高德的本地生活能力进行深度融合,推动 AR 眼镜从“极客玩具”向“全能生活伙伴”跃迁。

图片

高德地图依托雷鸟AR眼镜特有的第一视角交互与空间感知优势,将深耕多年的本地生活服务能力注入雷鸟智慧生活,对其服务链路进行了系统性重构。不仅融入了高德开放平台LBS Agent和AR沙盘导航,更将高德现象级的“扫街榜”和即时响应的“周边快搜”等多项快捷能力,搬进了您的视野。从此,不再只是那个只告诉您“怎么走”的传统导航,而是进化为一位懂决策、精服务的智能助手,在您需要时主动提供LBS深度服务,帮您判断“去哪好”、“怎么选”,让每一次出行都成为轻松的生活体验。

从“人找信息”到“服务找人”高德 Agent,让意图秒变行动

依托于高德开放平台LBS Agent,眼镜能够理解用户随口说出的导航或搜索等模糊意图,并结合用户的习惯、位置和需求,主动推荐解决方案方案或行程规划,雷鸟智慧生活可根据返回结果将虚实融合的画面信息呈现在眼前,更快理解周边环境,旨在实现从“人找信息”到“服务找人”的跨越。

图片

高德“扫街榜”登陆,AR眼镜看到即了解,了解即导航

高德现象级产品“扫街榜”也正式登陆 AR 眼镜,雷鸟 X3 Pro可基于用户位置与偏好主动推送周边高口碑门店,并在视野中展示商户评分、客单价、特色标签等关键信息,帮助用户在海量信息中快速圈定范围,实现“看到即了解、了解即导航”的决策闭环。

同时,针对“找咖啡”、“找便利店”等高频即时需求,周边快搜功能基于 LBS 定位,可在眼前快速呈现周边常用门店,实现“看到即找到”的高效体验。后续还将上线“眼镜点单”功能,进一步打通“搜索-决策-导航-交易”的服务闭环。

图片

首创“抬头 HUD+ 低头沙盘”双模导航,复杂路况零思考辨位

在交互设计上,雷鸟X3 Pro首创“抬头 HUD+低头沙盘”双模导航,日常行走时关键信息以精简模式悬浮于视野上方,提供低干扰、一眼即得的行程进度提示。而需要全盘规划时低头即可调出沙盘地图,利用 3D 沙盘、楼体模型,建立真实世界和 AR 地图的直观映射,让自身位置与周边路网关系一目了然、力争实现零思考辨位,在打车、商圈、城中村等多岔路复杂场景下也能做到对全局路况轻松掌握。

图片

此次智慧生活服务上线,不仅是高德地图与雷鸟创新双方技术能力的融合,更是 AR 服务迈入生活化阶段的重要一步。未来,高德地图与雷鸟创新还将持续深化合作,探索 AR+AI+LBS 的创新组合,为用户带来更加智能的空间交互体验,让 AR 服务融入大众日常生活每一刻。

作为《冰与火之歌》的书迷,十几年来,我一直以来都有这样一个奇怪的想法,就是用乔治马丁的写作方式重构一下中国背景的历史小说——当时想到的背景和情节最接近的就是三国。

因为自己的写作能力有限,再加上三国的人物和事件是在是繁杂,这件事一直都只是停留在想法层面,怎么执行毫无头绪。直到这两年,大模型的出现给这件事指出了一个新的解法:不用我自己写了,直接让 AI 来做这件事,包括事件,人物的整理以及正式章节的编写,我不用把自己培养成一个作家,只做一个编辑就可以了。

因为原著实在是太大,所以即使是 AI ,也不可能一蹴而就,要解决长上下文的一致性问题,解决文风的一致问题等等等,这些我还在调研中,打算用程序员的方式,完成一个解决这些问题的工作流。

目前已经用纯话聊的方式在 ChatGPT 的帮助下完成了几个章节,整体上看,AI 的写作能力应该在当今绝大多数网文写作者之上(当然这只是我自己的暴论)。我选了两个章节在这里,给大家预览一下(这肯定不是最终的版本,甚至故事情节都一定会变化),看看如果是这种形式,是否会有人有阅读的欲望。或者是大家有什么更好的建议,也可以在这里讨论。

第一章 刘备

雨下了一整天。

先是细雨,像从灰白的天缝里漏出来的雾,后来越下越密,沿着屋檐、旗杆和低矮的土墙往下淌,把涿县城外那条原本就不怎么平整的土路泡成了一滩烂泥。挑担的、赶车的、牵驴的,人人都低着头,缩着肩,像在躲一场看不见尽头的灾。

刘备把草鞋摊子收进屋檐下时,手指已经冻得有些僵了。

今天生意不好。

其实近来每天都不好。

这年头,先饿死的不是卖草鞋的人,也不是穿草鞋的人,而是那些以为自己还撑得住的人。等他们终于想明白,家里那点谷子熬不过下一个月,鸡鸭也换不来多少铜钱时,一切往往已经迟了。有人卖地,有人卖牛,有人把祖上留下来的铜镜、玉佩、族谱一卷卷抱出来,换半袋陈粮。还有人什么都没有,只能卖身,或者卖儿女。

刘备见得多了,也就不再轻易出声。

他把最后几双湿气未干的草鞋提起来,挪到稍高些的木板上,又把织了一半的席子卷好,靠墙放稳。门外的檐水滴答不停,像有人一下一下敲着一只破碗。

“玄德,今日又是白守一天?”

隔壁卖盐巴的老周头缩着脖子,从半掩的门板后探出头来。他鼻子冻得通红,说话时嘴里冒着白气,像只快咽气的老狗。

“卖了两双。”刘备说。

“两双也算好了。”老周头咂了咂嘴,“我这半斤粗盐摆到现在,连问价的人都没有。都说北边乱了,县里要征粮征丁,谁还舍得买这些。”

刘备嗯了一声,没有接话。

老周头却显然憋了一肚子话,站在檐下不肯走:“你没听说?说是冀州那边闹起来了,裹黄巾的,到处都是。州郡官兵压不住,朝廷要各地募人。今早县衙门口贴了文书,我远远看见一眼,红泥印子还新着呢。”

“黄巾?”刘备抬起头。

“谁知道是什么东西。”老周头压低声音,左右看了看,仿佛怕有耳朵从雨里长出来,“有人说是妖人作法,也有人说是活不下去的饥民。反正都是要杀人的。官家一发狠,到头来死的还是咱们这样的。”

他说完又叹了口气。

刘备看着雨幕外模糊不清的街道,没有立刻说话。

他这些年卖过鞋,贩过席,也替人运过木料,帮豪家看过院子,见过很多事。世道好时,穷人不过是穷一点;世道坏时,穷人便连命都轻得像路边一摊被雨打散的泥。朝廷离他们太远,洛阳更远,皇帝这个词落到涿县,连个影子都没有,只有税册、差役、仓吏和催征时的皮鞭是实实在在的。

可即便如此,“乱了”这两个字,还是让人心里发沉。

乱世从来不会只长在远方。

它会先从传闻里来,再从告示里来,最后从脚步声、哭声和火光里来。等你真看见它的时候,它往往已经进门了。

老周头又絮絮叨叨说了几句,见刘备没什么兴致,便缩回自己铺子里去了。雨还在下,天色比平日暗得更快。街上人影零落,偶尔有一两辆驴车吱呀过去,轮子陷进泥里,车夫就骂几声天,再骂几声官。

刘备把手伸到袖中暖了暖,低头看自己的掌心。

粗糙,干裂,虎口处生着硬硬的茧。

这不是读书人的手,也不像什么宗室之后的手。

小时候,母亲曾对他说过他们这一支的来历。中山靖王之后,听起来很像回事,可那是远得不能再远的事。宗室血脉若真有用,他也不至于守着一摊草鞋过活。那些体面的姓氏、漂亮的祖宗,大多只能在寒冬夜里给穷人添一点不值钱的暖意。

刘备不大爱想这些。

但人一旦活得太苦,总会需要点什么来支撑自己,不然日子就只是日子,和路边的烂泥没有两样。

街口忽然传来一阵骚动。

先是女人尖利的叫声,然后是男人怒骂,接着便是木棍砸在肉上的沉闷声音。刘备皱了皱眉,站直身子往外看。雨幕里,几个穿皂衣的差役正在掀一辆破板车,车边跪着个老妇,头发散乱,一边哭一边去抱其中一人的腿。

“官爷,官爷,再宽几日吧……家里真没有了……”

“没有?”那差役一脚把老妇踢开,“没有粮,就拿人顶!县里要凑军粮,要征丁,你家两个儿子躲哪儿去了?”

老妇扑在泥里,半天爬不起来,只顾哭:“大儿病死了,小儿、小儿前日也逃了……家里只剩个孙儿,才九岁啊……”

另一名差役已经把车上盖着的破席掀开,露出下面半袋发霉的谷壳和一只瘦得见骨的鸡。他嗤笑一声:“你这不是有么?”

老妇像疯了一样扑过去,死死抱住那半袋谷壳,声音都哑了:“那是孩子的命,那是孩子的命啊——”

差役嫌她碍事,抡起棍子就打。

第一下打在肩背,老妇叫了一声,身体却没松。第二下落在手上,骨头发出一声令人牙酸的闷响。她终于松开了,整个人蜷在泥水里,嘴里还在念叨着“孩子”“孩子”。

街边的人都在看。

有人皱眉,有人低头,有人装作没看见,更多的人只是麻木。大家都明白,这时候站出来并不能改变什么,只会让自己也被拖进去。每个人家里都有一本难念的经,也都有一口刚刚够吊着不死的气。

刘备站在檐下,看着那老妇被按在泥里,看着差役拎起那半袋谷壳,就像拎起一块路边的破石头。

他想起母亲病死前那个冬天。

那时家里也只剩一点米。母亲总说自己不饿,让他吃。后来刘备才知道,人若真饿得狠了,连说谎的声音都会变轻。

雨水顺着额角流下来,凉意钻进脖颈里。

他本该像旁人一样低头。

低头并不丢脸。穷人若事事逞强,多半活不到明年。刘备这些年吃的苦够多,早学会了忍。他知道什么时候该退,什么时候该闭嘴,什么时候该把屈辱吞下去。若没有这点忍耐,他也撑不到今天。

可这一回,他的脚还是自己动了。

“住手。”

声音不算大,却把那几个差役都惊得回过头来。

为首的是个黑脸短须的中年汉子,披着半旧蓑衣,脸上横着一道刀疤。他盯着刘备,从上到下打量了一遍,看见的不过是个衣着寒酸、身量却还算高的卖草鞋汉子,便冷笑起来。

“你在同谁说话?”

刘备走出檐下,雨水立刻打湿了肩头。

“那是孩子的口粮。”他说,“征粮有征粮的规矩,打人算什么?”

差役们先是一愣,随后都笑了。

这笑里没有多少快意,倒更多是疲惫和烦躁。像他们这种人,平日挨上头的骂,出门再拿穷人撒气,早成了习惯。如今忽然冒出个人讲规矩,实在像个笑话。

“规矩?”刀疤脸啐了一口,“县里要粮,要丁,要名册上的数。你跟我讲规矩?你替她出?”

刘备看了一眼地上的老妇。她半边脸都是泥,眼神却死死盯着那袋谷壳,像溺水的人盯着最后一块浮木。

“我替她说句话。”刘备道。

“说话顶个屁用。”刀疤脸走近两步,棍子点在刘备胸口,“你是谁?县尉么?主簿么?还是你也姓刘,就真把自己当个贵人了?”

几个差役又笑起来。

刘备没有退。

这让那刀疤脸脸上的笑意淡了些。他这种人,最懂看人。真正的豪强子弟往往不用自己出面,真没根底的人通常一吓就软。像刘备这样衣衫普通却不退的,反倒最麻烦——不是有点底气,就是有点不要命。

“滚回去卖你的鞋。”刀疤脸压低声音,“今儿我心情还没坏到要多抬一具尸回衙门。”

刘备还未开口,街那头忽然传来一声浑厚的嗓音。

“几个大男人,围着个老太婆使威风,也算本事?”

众人齐齐回头。

雨里走来一人,身形极高,脸色发红,蓄着长髯,戴一顶旧笠,青布袍子被水浸得发暗。他背上斜背着包裹,腰间悬着刀,步子不快,却稳得很。那人走近时,目光先落在地上的老妇身上,随后才抬眼看向那几个差役。

他的眼神并不凶狠,只是冷。

冷得像一块压在井底多年的铁。

刀疤脸皱了皱眉:“你又是哪来的?”

红脸汉子把笠帽往后一掀,露出那双细长却极有神的眼:“路过的。”

“路过就少管闲事。”

“看不过去,也算路过。”

这话一出,街边顿时静了静。

刘备看着来人,心里先是一动。他不认识此人,却莫名觉得此人不像寻常游民。那种气息不是来自衣着,而来自站姿与眼神——像一把包在鞘里的刀,平时不见锋芒,一旦出鞘,便是见血的。

刀疤脸显然也察觉出这点,神色更沉了几分:“今天是什么日子,卖鞋的、走路的,一个个都来教我做事?”

他说着,棍子一横:“再不滚,连你们一块拿了!”

“拿谁?”

又一个声音插了进来。

这回来的不是独行客,而是个身躯壮硕、满脸络腮胡的黑脸汉子,衣襟半敞,披着件短褐,脚下踩得泥水四溅,像是刚从哪处庄上冒雨赶来。他肩宽背厚,走起路来几乎带风,到了近前,一眼看到地上的老妇,脸色立刻沉下去。

“老子出门买酒,就看见你们在这儿打老弱?”他咧嘴一笑,笑意里却没半点善气,“官差是吧?好大的官威。”

刀疤脸的脸色终于难看了。

一个还能压,两个也许能吓,三个凑在一起,味道就不对了。尤其是眼前这三人,一个沉,一个冷,一个横,怎么看都不像好拿捏的。

“你们想造反?”他喝道。

那黑脸汉子哈哈大笑:“造反?你也配。”

话音未落,他已经上前一步,抓住那根举起的木棍,猛地一扯。刀疤脸猝不及防,被带得一个踉跄,差点扑进泥里。旁边两个差役见状,立刻扑上来,其中一人挥棍砸向黑脸汉子的肩,另一人则直奔刘备而来。

场面一下乱了。

刘备几乎没有思索,本能地抬臂去挡,棍子擦过手肘,火辣辣一阵疼。他趁那人收棍不及,一把抓住对方手腕,往前一拽,膝盖顶上去,对方闷哼着弯下腰。刘备并不擅长打斗,但这些年苦活做多了,手上有劲,加上对方本就没把他放在眼里,竟被他一下撞得退了几步。

另一边,那黑脸汉子已经把刀疤脸掀翻在地,骑上去就是两拳,打得泥水四溅。

最稳的却是那红脸汉子。

他几乎没有废动作,只一闪身,便避开迎面砸来的棍头,随即一掌切在对方小臂上。那差役吃痛松手,他顺势夺棍,反手往对方膝弯一敲,那人扑通跪进泥水里,半天没起来。

街边终于有人惊叫起来。

差役毕竟是差役,再怎么不值钱,也终归代表官面上的那点威势。寻常百姓见他们欺人时不敢动,见有人动他们,照样不敢动。大家只会退得更远,仿佛这片泥地忽然成了一处会吞人的陷坑。

刀疤脸在地上挣扎着爬起来,满脸泥水和血,眼中凶光毕露:“你们等着……等着!县里不会放过你们!”

黑脸汉子还想上去再补一脚,刘备却一把拉住了他。

“够了。”

黑脸汉子甩开刘备的手,瞪着眼道:“够什么?这等狗东西不狠狠干一顿,他明日还来!”

“再打就真收不住了。”刘备低声说。

那人胸膛起伏几下,终究还是停了。

刀疤脸捂着脸,恶狠狠地看了他们一眼,招呼同伴连滚带爬地退开,连那半袋谷壳都忘了拿。走出几步,他又回头骂了句脏话,才带人消失在雨里。

街上安静下来。

只有檐水滴答,和老妇压抑不住的哭声。

刘备俯身把那半袋谷壳扶好,又去搀老妇。老妇手骨像是伤着了,一碰就哆嗦。她仰头看着刘备,眼里既有感激,也有更深的惶恐,像是在怕自己连累了这几个出头的人。

“回去吧。”刘备把袋子递给她,“今夜先别留在这里。”

老妇嘴唇哆嗦着,半晌才说出一句“恩公”,随后抱着袋子,踉踉跄跄地走了。

黑脸汉子甩了甩手上的泥,骂道:“晦气。酒还没喝上,就先活动了筋骨。”

红脸汉子把夺来的木棍随手扔在一边,没有说话。

刘备这才转身,朝两人拱了拱手。

“今日多谢二位。”

黑脸汉子打量他两眼,咧嘴道:“谢什么,我就是看不惯。再说,先出声的是你,不是我。你要是没迈那一步,我大概也懒得管。”

刘备笑了笑,笑意有些淡:“迈了那一步,后头的事就不由人了。”

这话说得很轻,黑脸汉子却像听出了点意思,哈哈一笑:“有点意思。你叫什么?”

“刘备,字玄德。”

“刘备?”黑脸汉子挑了挑眉,“卖草鞋那个?”

“正是。”

“好。”那人拍了拍自己胸口,“我叫张飞,字益德。这边庄上有点薄产,平日也卖酒卖肉。你方才那句话我喜欢,迈了那一步,后头的事就不由人了。”

说罢,他转头看向一直沉默的红脸汉子:“你呢?总不能真叫路过的。”

那红脸汉子看了他一眼,才缓缓道:“关羽,字长生。”

“长生?”张飞咂咂嘴,“这名字倒不像你这张脸。”

关羽并不理会,只把目光落在刘备身上:“你方才若不拦着,那几个差役今天至少得断两条腿。”

刘备听出他话里没有责怪,反而带着一点试探,便道:“断了腿,今日痛快。可他们背后还有县衙,有主簿,有县尉,有比他们更大的手。咱们若只图眼前痛快,往后便没有路走了。”

关羽的眼神动了动。

张飞却嗤了一声:“这世道,哪还有什么路?有刀、有酒、有胆,便是路。”

“那也只是一时的路。”刘备道。

风从街口灌进来,带着雨腥气和牲口棚的味道。远处传来几声犬吠,又很快被雨声淹没。

三个人就这么站在泥水里,彼此打量。

张飞像火,关羽像铁,而刘备自己最像什么,他一时也说不清。也许像一截被雨泡得发软的木头,外头看着不起眼,里面却还留着点不肯烂透的筋。

张飞忽然道:“这里不是说话的地方。我庄上有酒,也有火。二位若不嫌弃,去避避雨?”

刘备看了看天色。

若换作平日,他未必会随便应陌生人的邀。可今天这一场事过后,街上多半已没有他安稳摆摊的余地。再者,他心里也的确想多看看这两个人。

于是他点了点头。

“叨扰了。”

张飞大笑:“扰什么,正好喝酒。”

关羽没说去,也没说不去,只把笠帽重新压低一些,转身便走。张飞似乎早习惯这种人,也不生气,只朝刘备招呼一声,大步在前领路。

张家庄离城不远,过两条泥路,再绕一片桃林便到。

雨中的桃树尚未开花,枝桠乌黑,湿漉漉地交在头顶,像一双双枯瘦的手。风吹过时,枝条摩擦,发出细细的响动。张飞一边走一边骂今年天气邪门,春寒久不散,又说城里那些当官的若真要征丁征粮,自己庄上先得把年轻后生藏几个起来。

“黄巾若真打过来呢?”刘备问。

“打过来就打。”张飞满不在乎,“总比让那些衙门里的狗一点点啃死好。”

“可黄巾也未必是什么善人。”刘备说。

张飞回头看他:“你替官家说话?”

“我替活人说话。”刘备平静道,“穿黄巾的未必都该死,穿官衣的也未必都该活。乱起来以后,倒霉的是谁,不难猜。”

张飞怔了怔,随后咧嘴笑起来:“玄德,你这人有点意思。看着软,说出来的话却不软。”

关羽走在一旁,一直没有加入两人的交谈。可刘备能感觉到,那人并不是没在听。

庄子不大,却收拾得利落。进门时,有几个庄丁正躲在廊下磨刀,见张飞领了两个陌生人回来,都多看了两眼。张飞摆摆手,让人去温酒,又命厨房切肉。庄里生火很旺,热气扑出来,人站进去,才觉得骨头缝里那点寒意慢慢退了。

刘备把湿透的外衣解下,搭在木架上,低头时看见自己袖口裂了一道口子,是方才挨那一棍时蹭开的。

张飞已经拎起酒坛,拍开泥封:“来,先暖暖身子。”

酒碗摆开,肉也切上来了。外头风雨未歇,屋里火光跳动,把三个人的影子拉长在墙上。火盆上烤着湿鞋,发出轻微的噼啪声,带一点草叶和泥土被烘干后的焦气。

张飞先灌了一大口,抹了抹嘴,道:“今日那几下打得痛快。只是痛快归痛快,玄德说得也对,那几个差役后头还有人。你们两个,往后有什么打算?”

刘备端着碗,没有立刻喝。

“活下去。”他说。

张飞哈哈一笑:“这算什么打算?”

“先活下去,再说别的。”刘备看着碗里浑浊的酒液,“世道快变了。黄巾若真成了势,州郡必会大募乡勇。到时候,不想拿刀的人也得拿刀。不想卷进去的人,也一样会被卷进去。”

“所以你想从军?”张飞问。

刘备抬眼:“若真到了那一步,不从也得从。”

张飞摸了摸胡子:“我倒早有这个心。与其守着几亩地,看那些官差一年比一年凶,不如自己拉一票人,真打起来,谁怕谁。”

关羽终于开口:“你能养几个人?”

张飞一愣,随即道:“二三十个总养得起。”

“二三十个,打得过一个县?”关羽问。

张飞被噎了一下,瞪着眼看他:“那你说怎么办?”

关羽垂眸看着酒碗,声音不高:“要么走远些,要么跟一支真能成事的人。”

“什么叫真能成事?”张飞追问。

关羽没有答,反而抬眼看向刘备。

那目光平直而沉,像是在看,也像是在问。

刘备明白他的意思。

什么叫真能成事的人?

是有门第的,是有兵的,是有钱粮的,还是有一个让旁人愿意拿命来押的理由?

他忽然想起白天那老妇在泥里抱着谷壳不放的样子,想起差役棍子落下时街边众人低下去的头,想起老周头絮叨的黄巾、征丁和坏消息。世道像一锅已经煮开却没人敢揭盖的汤,每个人都知道它要溢出来,却还在假装火不是烧在自己灶下。

“成不成事,我不知道。”刘备慢慢道,“可若真有一条路,能让百姓不再被人这样按在泥里打——哪怕只是让少一些人这样——总该有人去试试。”

张飞愣住了。

关羽也没有立刻说话。

屋里只听见火炭裂开的一声轻响。

过了好一会儿,张飞忽然又笑了,只是这回笑得不那么闹腾,反倒带了几分认真:“玄德,你这话听起来像读书人,也像疯子。”

“多半二者都不是。”刘备说。

“那你是什么?”

刘备想了想,道:“一个不想再低头的人。”

这句话说出口时,连他自己都怔了一瞬。

它像是在心里埋了很久,久到他平日甚至不会去碰。可今夜,在这间有火、有酒、有两个陌生男人的屋里,它忽然自己长出了声音。

张飞把酒碗重重一放。

“好!”他大声道,“就凭这句,今夜该再喝三碗!”

关羽终于举起碗,轻轻碰了一下桌沿。

火光映在他那张冷硬的脸上,眼神却比方才多了一丝说不清的东西。

“世道要乱。”他说,“乱了之后,话就没那么值钱了。”

“我知道。”刘备道。

“那你还说?”

“总得先有人说。”

屋外风声更紧,桃枝拍在窗纸上,沙沙作响。

关羽看了他片刻,终于把碗送到唇边,一饮而尽。

张飞大笑,也跟着喝下。刘备抬碗时,酒液入口辛辣,顺着喉咙一路烧下去,烧得胸口都暖了起来。那不是醉意,更像一团被压了很久的火,终于在湿冷的夜里得了一点气。

没人再提白天那场小小的冲突。

可三个人都知道,从他们在街上迈出第一步开始,有些东西已经变了。

火盆里的炭越烧越红,映得屋中一片暖色。外头的雨却还没停,像要把整座城都泡进泥里。刘备望着门外黑沉沉的夜色,忽然生出一种极怪的感觉——仿佛今夜之后,很多人都会继续照旧活着,照旧挨饿,照旧缴税,照旧低头;可也有些人的命,会从某个不经意的瞬间悄悄转向,再也回不到原先的路上。

他不知道自己算不算其中一个。

但他知道,自己已经不想再只是卖草鞋了。

第四章 刘备

雨到后半夜才渐渐小了。

先前打在窗纸上的声音急而密,像有人隔着黑夜不停往屋上撒豆子,后来便稀下来,只剩檐角还时断时续地滴着水。院中那几株桃树被一场春寒浇透,枝上不见花,只有湿黑的细条,在风里轻轻发颤。火盆里炭烧得正旺,屋中暖和,木架上烘着三人的外衣,湿气被火一逼,散出一点泥土与草叶混杂的味道。

张飞又拍开一坛酒。

泥封一揭,酒香立刻漫出来,厚而烈,把屋里原本的炭气和肉香都压下去几分。他像是个天生闲不住的人,坐着嫌闷,站着又嫌热,索性把袍子往肩后一甩,赤着半边胳膊给三人满碗。

“今夜不醉不散。”他说。

关羽看了酒碗一眼,没说话。

刘备接过酒,手心被碗壁烫得微微发热。他已许久没这样安安稳稳地坐在火边喝酒了。平日卖草鞋挣来的那点钱,能换粗饭已算不错,哪里轮得到这样一碗热酒、几盘厚切的酱肉。可也正因如此,这一刻反倒让人更容易生出某种虚幻之感,仿佛屋外的风雨、街上的差役、那些关于黄巾与征丁的坏消息,全都暂时被隔在了门外。

可刘备知道,那些东西并没有走。

它们只是等着。

“玄德。”张飞把酒碗一举,“先喝这一碗,压压白天那股晦气。”

刘备笑了笑,抬碗与他轻轻一碰。

关羽没有碰碗,只自己端起来,喝得极稳。酒入喉时,他眉头都没动一下,像喝的不是酒,而是一碗再寻常不过的热水。张飞看得直乐,大声道:“长生,你这人连喝酒都像在守丧。”

“酒是拿来喝的,不是拿来吵的。”关羽道。

“哈。”张飞咧嘴,“你若再冷一些,屋里的火都要叫你压灭了。”

刘备看着二人,嘴角带一点淡淡笑意,却没急着说话。他从白日到现在,心里始终悬着一根线,不上不下。眼前这两个人,一个豪烈,一个沉静,脾性全然不同,却都不是寻常人物。可也正因如此,他更不敢轻易把一时意气当成什么天定缘分。

乱世里,酒能让人靠近,也能让人送命。

张飞是痛快人,最先开口的总是他。

“玄德,我白日听你说那些话,倒不像个卖鞋的。”他咬了一口肉,边嚼边道,“你到底是什么来路?总不能真只是靠那几双草鞋过活。”

“过活是真的。”刘备把碗放下,“来路也没什么稀奇。我是中山靖王之后,传到我这一支,已没剩多少像样的东西了。小时候家里也想让我读书,可家贫,母亲病后,更顾不上这些。后来便做些买卖,什么能换口饭吃,就做什么。”

张飞一愣,随即失笑:“还真有点来头。”

“那点来头换不来一斗米。”刘备说。

张飞听罢,重重拍了一下膝盖:“这话对我脾胃!什么世家、宗亲、名门,到头来还不是要吃饭穿衣。城里那些人整天把祖宗挂嘴边,真叫他们去地里拔两天草,怕是腰都直不起来。”

关羽这时抬眼看了刘备一眼:“你既知那血脉无用,为何还记着?”

刘备被问得微微一顿。

火盆里的炭塌了一块,迸出一点细小的火星。

“因为总要记着点什么。”刘备缓缓道,“人若什么都不记,活着就只剩吃和睡。今日有饭便吃,明日无饭便饿,谁踢你一脚,你便往旁边缩一寸。久了,自己都不知道自己算什么。”

这番话说得很平,却让屋里静了一瞬。

张飞原本还想再灌一大口酒,听到这里,动作也慢了慢。

关羽则低下头,看着手里的酒碗,眼里神色沉了些。刘备这话像是说给自己听,也像是说给别人听。关羽最明白那是什么意思。一个人若连自己是谁都不记了,便真的只能任人驱使。可偏偏这世道,最先叫人忘的,往往就是这些。

“那你记着自己是什么?”关羽问。

“我也说不好。”刘备苦笑了一下,“但总不能只是个卖草鞋的。”

张飞哈哈一笑:“好!这话比白日那句还像样。”

他说完又给刘备添酒,随口问:“长生呢?你总不至于也是哪家王侯之后吧?”

关羽沉默片刻,才道:“我不是。”

张飞等了等,见他不往下说,忍不住追问:“那你是做什么的?看你手上那茧,不像一直走江湖的,也不像军里出来的。”

“杀过人。”关羽说。

屋里再一次静下去。

张飞眨了眨眼,像是没想到他会说得这样直。刘备却没露出意外神色。白日街上那几下,他已看出来了。关羽出手太稳,稳得不像寻常打架,更不像一时逞勇。那是见过血的人才有的稳。

“为钱?”张飞问。

“不是。”

“为仇?”

关羽抬起眼,灯火在他眸中晃了一下:“为一个该死的人。”

张飞先是一怔,随即咧开嘴:“那便没什么。世上该死的人多了。”

刘备却没有笑。

他看着关羽,轻声问:“后来呢?”

“后来我走了。”关羽道,“一路往北,不敢久留,也不敢投官。官府若拿我,问我后不后悔,我大概会说不后悔。可人总得活,于是只能继续走。”

他说得仍旧很平淡,仿佛那不是自己的过往,只是一段谁都能说出口的旧事。可正是这份平淡,反倒更叫人听出底下压着的东西。若不是真逼到极处,谁会背着命案一走千里?若不是心里还有一股气撑着,又怎能在这种日子里仍把背挺得这么直?

张飞叹了口气:“你们一个卖鞋,一个跑路,倒衬得我最像个没见识的粗人。”

“你也未必真只是个粗人。”刘备笑道。

“我?”张飞把酒碗往桌上一顿,“我家在这边有点田产,也做酒肉生意。先父死得早,我算是自己把这庄子撑起来的。平日喜欢结交些有本事的人,也看不惯衙门里那些狗。你要说有什么志向——”

他说到这里,忽然停住了。

酒意似乎终于有一点往脸上涌,叫他眼底那点一向张扬的神气稍稍沉下来。

“我小时候,总觉得这世道再坏,也坏不到哪去。”张飞道,“交了税,低头做人,遇上当官的绕着走,总还能把日子过下去。可后来我看见的越来越多。去年我庄上一个佃户,因为欠了两石租,老婆被逼得投井,儿子给人牵去做奴。再往前两年,邻村有人闹饥,县里不放粮,反倒先来征赋。你说这叫什么世道?”

他看着酒碗,像在看什么脏东西。

“我若只是个粗人,也就罢了。偏偏我明白他们是怎么欺人的。越明白,越想狠狠干他娘的一场。”

关羽听完,只道:“你有庄,有人,有酒肉,也敢打官差,确实不像只会喝酒。”

张飞嘿了一声:“长生,这算夸我?”

“算。”关羽说。

刘备忍不住笑了。

那笑意不大,却叫屋里的气氛稍稍松了些。火盆里的炭又塌下去一层,热气更盛,窗外雨声也细了,只有桃枝偶尔扫过窗纸,发出沙沙轻响。

张飞忽然站起身,在屋里来回走了两步。

“今日你们既来了,我便把话说透。”他转过身,看着刘备与关羽,“这世道只会越来越乱。黄巾若真起来,朝廷必征丁,地方豪强也要自保,到时候谁都躲不开。与其各自被人赶着走,不如先聚在一处。你们觉得如何?”

刘备抬头看他。

这话其实并不突兀。从白日街上出手那一刻起,这个结果便已有了影子。只是从影子到真正说出口,总还差一道坎。那道坎不是义气,而是信。

关羽也没有立刻回答,只问:“聚在一处,做什么?”

“还能做什么?”张飞道,“募些人,备些粮,真乱起来便不至于任人宰割。若官府还算个人样,我们便听调去平乱;若官府不是东西,也总有个自保的本钱。”

关羽看了他一会儿,忽然道:“你愿听谁的?”

张飞一愣。

这问题像把刀,直接把热闹划开,露出底下最硬的那层骨头。

是啊,聚在一处,谁说了算?

若只是三个陌生人喝酒吹牛,自然不必问;可若真要把命往一处拴,这话便非问不可。

张飞先看关羽,又看刘备,半晌才道:“我不喜那些空口讲大道理的。谁有胆、谁有心、谁真肯替底下人想,我便听谁几分。”

“几分?”关羽道。

“总不能叫我一见面就把命卖给人家。”张飞理直气壮。

关羽难得扯了下嘴角,像是冷笑,又像只是觉得有趣。

刘备却低下头,轻轻转着手里的酒碗。

他不是没想过这种事。

从街上差役殴打老妇,到张飞把他们带进庄子,再到这几碗酒下肚,刘备心里一直有个声音在问:若真要起势,该怎么起?靠什么起?靠一腔不甘,还是靠两三个能打的人?都不够。可若连眼前这一步都不敢迈,那日后便更无从谈起。

他抬起头,看着张飞,也看了看关羽。

“我也把话说透。”刘备缓缓道,“我无甚家资,也无高门可倚。平日卖鞋度日,说到底不过是勉强活着。可我不想一直这样活。我想做点事,不是为富贵——至少不只是为富贵——而是想让这世道别再把人按在泥里,连哭都没人敢听。”

张飞的眼睛亮了一下。

关羽则仍看着他,没有动。

刘备继续道:“可我也知道,只靠几句好听话成不了事。成事要人,要粮,要规矩,要有人肯在关键时信你。若二位愿意把这一步同我一起迈,我不敢说将来必成什么大业,但我能保证一件事——凡我刘备手下的人,只要我还有一口饭,便不会先让你们饿死;只要我还站着,便不会先把你们推出去顶祸。”

话不算多,也不算激昂。

可正因不激昂,反倒更像是真话。

张飞站在那里,胸膛微微起伏,像是忽然被什么撞了一下。他这辈子听过太多人说漂亮话,什么忠义、气节、报国、安民,人人都会挂在嘴上。可像刘备这样,不先讲大义,反先讲“有一口饭不让你饿死”的,他还是头一次听见。

关羽的神色也终于动了。

他这一生见过的人不算少。豪强有豪强的嘴脸,官吏有官吏的腔调,路上结交的游侠也多半只认一时酒肉。刘备这样的人,他一时竟有些拿不准。说他心软吧,白日街上他敢站出来;说他软弱吧,方才谈起“不能总只是个卖鞋的”时,他眼里那点东西又并不软。更重要的是,他说的不是“你们跟我,日后必大富大贵”,而是“别先饿死,别先顶祸”。

这世道里,这种话比豪言更重。

“你凭什么保证?”关羽问。

刘备看着他,慢慢道:“凭我这些年也一直是底下的人。人被踩着是什么滋味,我知道。”

关羽没有再问。

屋里一下静下来,静得只剩火盆里木炭偶尔轻爆的细声。张飞来回走了两步,忽然一拍桌子:“好!我信这一句。”

他本就是决断快的人,一旦认准,反倒比谁都痛快。

“我张飞家里虽算不上大富,拿出些钱粮、招几个人还是做得到。玄德,你若真有这份心,我便跟你做这一遭。”他说完,又转向关羽,“长生,你呢?”

关羽没有立刻应。

他缓缓起身,走到窗边,把木牖推开了些。夜里的潮气立刻涌进来,夹着桃枝和湿土的味道。院中一片昏黑,只有廊下灯笼映出树影斜斜。关羽望着那几株被雨打湿的桃树,许久没说话。

刘备和张飞都没有催他。

过了好一会儿,关羽才道:“我在路上走了很久。”

他背对着二人,声音低而稳。

“见过很多人。有人嘴上讲义气,真到要紧处,先拿别人挡刀;有人口口声声说为国,到头来只想着自己的官帽;还有人今日同你称兄道弟,明日便能为了几袋粮把你卖出去。你们若只是想趁乱聚众,博个前程,我现在便可走。”

张飞张了张嘴,像想说什么,终究没插话。

“可若真如玄德所说,”关羽继续道,“至少先让手底下的人别饿死,别白白替人顶祸——那这条路,我可以试试。”

他说完,转过身来,目光先落在刘备身上,又缓缓扫过张飞。

“但有一条,”关羽道,“若将来有一日,你们也变成那些人,我会先走。若你们拿我去换富贵,我也会先杀人。”

张飞听得一愣,随即大笑起来:“好!这话痛快!若真有那一日,也别等你动手,我先把自己砍了。”

刘备却没有笑。

他站起身,郑重朝关羽拱手:“若真有那一日,是我刘备先负了今日。”

关羽看着他,没再说话,只是缓缓点了一下头。

张飞见状,再也按捺不住,转身便往外走:“喝酒有什么意思!既然话都说到这份上,不如索性做个见证!”

“做什么见证?”刘备问。

“桃园在外头。”张飞头也不回,“虽没开花,总也还是个地方。天地在上,咱们三个既然要一起走,总不能连句明白话都没有。”

刘备微微一怔。

关羽也皱了皱眉:“你喝多了。”

“我没多!”张飞回头瞪他,“乱世里今日不知明日,兴许明日就要各自提刀了。能活到什么时候谁也说不准。趁今夜雨住了,先把话说定,有什么不好?”

这话粗,却不无道理。

刘备心里忽然一阵发热。

不是酒意,也不是少年人的冲动,而是一种更难说清的东西。像有人在黑地里点了一盏灯,灯不大,却足够照见前头确有一条路,哪怕那路还满是泥。

“好。”刘备道。

三人各披外衣,推门出去。

雨果然停了,只是地还湿着,空气寒凉。云层未散,天上没有月,只有几处极淡的星,像被风吹薄了的银砂。桃园就在屋后不远,几十株桃树高高低低立着,枝叶尚疏,夜里看去如一片静默的影。泥地被雨泡软,踩上去微微陷脚。远处庄丁们已睡,四下无人,只有风过枝头,带起簌簌轻响。

张飞先走到园中一块稍高的空地上,回头看他们:“这里便成。”

他说完,又叫人取来一张小几,一盏灯,一把短刀,外加三碗酒。庄丁虽满脸疑惑,却也不敢多问,只把东西放下便退了。灯罩在风里微微摇晃,把三人影子拉得长长短短。

张飞先把酒倒满,自己端起一碗。

刘备和关羽也各自端起。

三个人站在桃树之间,谁都没有立刻开口。

若真按那些说书人的讲法,这时总该有一番惊天动地的大话,什么匡扶汉室、救民于水火、同生共死、名垂青史。可真到了眼前,反倒没人说得出那样的话。因为此刻的他们,都还只是乱世边上的三个普通人:一个卖鞋,一个亡命,一个庄主。没兵,没官,没地盘,连明天官府会不会来拿人都未可知。

也正因如此,这一刻才格外重。

不是因为他们将来会成为什么,而是因为他们在什么都还没有的时候,就先决定把彼此放进命里。

最后还是刘备先开口。

他的声音不高,在夜风里却很稳。

“今日结此约,不是为了逞一时意气,也不是为了嘴上好听。”他说,“世道将乱,人命如草。我们三人若愿同行,便当彼此扶持,不相弃,不相害。将来若有富贵,未必人人都能得;若有灾祸,愿先替同伴挡一挡。若手下有人跟着,也当尽力使其有饭吃,有路走,不叫他们白白去死。”

他说到这里,顿了顿。

“我不敢许什么天大的愿,只求从今往后,无论走到哪里,都记得今夜说过的话。”

张飞胸口起伏了一下,像是被这番朴实话语撞得更狠。他举起酒碗,大声道:“我张飞没那么会说,只认一条——今夜既认了你们两个,从今往后,能一起喝酒吃肉,便也能一起挨刀受难。谁若欺你们,先过我这一关。谁若负了今夜这番话,我第一个不放过!”

他这话说得直白,像一块石头砸进地里,响声不雅,却最扎实。

关羽最后才举起碗。

风吹动他的长髯,也吹得灯火轻晃。他眼里映着一点火色,神情仍沉,可那沉里已多了一层别的东西。

“我关羽飘零至此,本不信轻易结人。”他说,“今夜既答应同行,便不做虚言。日后有难,我不先走;有利,我不先取;若你们不负我,我亦不负你们。”

说完这句,他顿了一瞬,像是把什么更深的话咽了回去。

三人互相看了一眼。

没有人喊什么宏大的口号,也没有人故意去强调生死与年寿。因为那些话在此刻都太轻了。真正重的,是他们都知道,今夜之后,彼此便再不是白日里街头偶遇的陌路人。

刘备先举碗。

“敬今夜。”

张飞大声道:“敬今夜!”

关羽没有重复,只将酒碗轻轻一抬。

三碗酒在空中一碰,发出极轻的一声脆响,随后各自饮尽。

酒很烈,顺着喉咙一路烧下去,把夜里的寒意都逼退了些。张飞喝完,抹了把嘴,忽然一把抽出那柄短刀,往掌心一划。刘备与关羽都微微一惊,还未来得及拦,他已把带血的手按在小几上,咧嘴道:“总得留个记号。”

“胡闹。”关羽皱眉。

“这算什么胡闹。”张飞笑,“你们若不愿,也不必学我。可我张飞认这桩事,就得见点血。”

刘备看着他掌心鲜红一点点洇开,心头忽然猛地一跳。不是被这莽气吓到,而是某种极深的触动。世上有些誓言,靠的是嘴;有些誓言,靠的是血。张飞这样的人,原本就更信后者。

刘备没有多想,伸手把刀接过,也在自己掌心轻轻割了一下。

伤口不深,却立刻疼起来。血珠缓缓渗出,在掌纹里聚成一线。刘备把手按在小几上,声音不高:“记住便是。”

关羽看着二人,眼底神色难辨。

片刻后,他也伸手拿过刀。

刀锋在他掌中一过,极稳,连眉都没皱一下。第三只手按上去时,三人的血色在灯下慢慢汇在一处,像一团很小,却很真切的红。

夜风穿过桃枝,发出低低声响。

一时间谁都没说话。

刘备望着那三只交叠在小几上的手,忽然想起白日里被差役打得蜷在泥里的老妇,想起老周头嘴里那些关于黄巾、征丁和坏消息的絮叨,想起自己多年来一次次低头、忍让、避祸的日子。那些东西像一层层旧壳,直到此刻才终于裂开一道细缝。

裂缝不大,却已足够透进风来。

“行了。”张飞先把手抬起来,笑声里竟带了一点少见的郑重,“从今往后,咱们便不是街上临时搭手的关系了。”

“本来也不是。”刘备道。

张飞怔了一下,随后大笑。

关羽收刀入鞘,低低道:“夜深了。明日还要想明日的事。”

这话一出口,三人都静了静。

是啊,结了这约,也不意味着明日便有出路。黄巾如何,官府如何,县里会不会因白日之事来拿人,庄上还能撑多久,若真要募人备粮又从何处开始——这些都还是实打实摆在眼前的难处。

可难处并没有让这一夜变得轻。

恰恰相反,正因为难处都在,今夜这件事才显得更真。

张飞收起小几上的碗,叫人来撤。刘备却没立刻回屋,只在桃树间多站了一会儿。地上湿,鞋底踩着泥,寒气顺着裤脚往上钻。可他心里并不冷,甚至比白日任何时候都更清醒。

他知道自己做了一件可能改变一生的事。

而改变一生的事,往往在发生时看起来并不惊天动地。没有雷,没有风,没有满园花开。只是三个男人,几碗酒,一把刀,一夜刚停的雨。

仅此而已。

回屋后,张飞很快又闹着要喝,结果自己先撑不住,歪在榻边睡了过去,鼾声如雷。关羽则坐在火边,把掌上的伤简单裹了,随后闭目养神,也不知是真睡还是假寐。

刘备一个人坐在火盆旁,听着炭火轻响。

窗外风已弱了,偶尔只剩一两滴迟落的雨从枝头坠下,啪嗒一声打在石阶上。屋里酒气渐沉,混着烘干衣物的暖味,叫人昏沉,却又不至于真睡过去。

刘备低头看自己的手。

布条下隐隐透出一点血色,伤口不深,疼却还在。那点疼让他不断想起方才在桃园里的情形,也不断提醒他——今夜并不是一场酒后的梦。

他缓缓吐出一口气,靠在身后木柱上,望向火光。

这些年他一直活得像个旁人。看人脸色,避人锋芒,靠一点本分和一点忍耐,把日子一寸寸拖过去。可从今晚起,事情好像有些不一样了。他还说不清究竟哪里不一样,只觉得像黑夜里忽然多了两个并肩的人,哪怕前路依旧暗,也不像从前那样一脚踩下去全是空的。

火盆里,一截炭啪地裂开。

刘备眨了眨眼,竟在这一瞬间生出一种近乎荒唐的念头——也许,自己这辈子并不只是来卖草鞋的。

那念头很轻,轻得像一缕热气,稍不留神就会散。可它到底还是升起来了。

而有些东西,一旦升起来,就再难压回去。

今日速览

  1. Visual Translate by Vozo:视频翻译神器,一键搞定屏幕文本翻译。
  2. Chronicle 2.0:AI 演示助手,告别繁琐的幻灯片制作。
  3. Claude Code Review:多智能体代码审查,提前捕捉 AI 生成代码的 bug。
  4. Your Next Store:AI 优先的电商平台,聊天就能建商店。
  5. Fish Audio S2:富有表现力的语音合成,用自然语言指挥声音。
  6. sitefire.ai:代理网络营销套件,自动生成并推送品牌内容。
  7. New Macaly Agent:全能 AI 助手,从建站到数据库一键搞定。
  8. Agent Skills:跨平台 AI 技能目录,一次搜索覆盖 30+ 平台。
  9. Spine Swarm:管理 AI 代理团队,自动化完成复杂任务。
  10. Sonarly:自动修复生产环境问题,智能分类警报并生成 PR。


1. Visual Translate by Vozo

视频翻译终于迎来终极形态!这款神器能帮你翻译视频中的屏幕文本,比如幻灯片、图表和标签,同时保持原汁原味的动画和布局,轻松打造多语言视频,触达全球观众。

  • 识别并翻译视频中的屏幕文本,无需重新制作视觉内容
  • 支持幻灯片、图表、提示框和标签等多种元素
  • 保持原有布局、风格和动画效果,翻译后视频依然流畅
  • 将视频转变为多语言版本,扩大全球受众覆盖

热度:🔺612

Visual Translate by Vozo

访问官网 Product Hunt 详情


2. Chronicle 2.0

告别 AI 废话,这款演示文稿助手专为高效设计而生。它能在几分钟内把你的笔记或提示变成美观的幻灯片,通过对话快速迭代,打造符合品牌形象的初稿。

  • 将笔记、提示或现有幻灯片转换为美观的演示文稿
  • 通过问答生成初稿,对话式交互帮助完善内容
  • 快速制作符合品牌形象的幻灯片,节省设计时间
  • 专注于实用功能,避免 AI 生成冗余信息

热度:🔺612

Chronicle 2.0

访问官网 Product Hunt 详情


3. Claude Code Review

代码审查进入多智能体时代!这支 AI 代理团队能像专家一样分析拉取请求,专门捕捉 AI 生成代码中的隐藏 bug 和安全问题,确保代码质量。

  • 多代理代码审查,模拟专家团队分析拉取请求
  • 检测 bug、安全问题和 AI 生成代码的逻辑缺陷
  • 验证发现以减少误报,提供高质量反馈
  • 在代码进入生产环境前提前发现问题

热度:🔺456

Claude Code Review

访问官网 Product Hunt 详情


4. Your Next Store

想快速搭建电商店铺?这个 AI 优先的平台让你通过聊天就能创建商店,背后是结构化的 Next.js 应用,原生集成 Stripe,随时投入生产。

  • 通过 AI 聊天创建商店,简化电商搭建流程
  • 基于 API 提供商业基本组件,支持设计优先品牌
  • 每个商店都是生产就绪的 Next.js 应用,原生支持 Stripe
  • 与 AI 工作流程无缝连接,完全拥有代码控制权

热度:🔺414

Your Next Store

访问官网 Product Hunt 详情


5. Fish Audio S2

语音合成技术再升级!这款开源工具让你用自然语言指挥声音,添加情感提示,一次性生成多说话者对话,支持 80 多种语言。

  • 富有表现力的文本转语音,支持自然语言指令
  • 可添加如[低声说]或[紧张地笑]等情感提示
  • 一次性生成多说话者对话,模拟真实交流场景
  • 支持 80 多种语言,创造栩栩如生的语音效果

热度:🔺351

Fish Audio S2

访问官网 Product Hunt 详情


6. sitefire.ai

专为代理网络打造的营销平台,不仅能监测内容表现,还能自动撰写品牌文章并推送到 CMS,帮你省去 SEO 和内容专员的费用。

  • 分析哪些内容能吸引引用,自动生成品牌相关文章
  • 直接推送内容到 Framer、Webflow 等 CMS 系统
  • 挖掘影响 AI 回答的公关渠道和用户生成内容
  • 提供定制推广建议,针对代理网络优化营销

热度:🔺210

sitefire.ai

访问官网 Product Hunt 详情


7. New Macaly Agent

这款 AI 助手的能力超乎想象!从生成登录页面到搭建数据库,它帮你自动化各种任务,大幅提升工作效率。

  • 从 YouTube 视频生成登录页面,快速创建营销素材
  • 根据网址重新设计网站,一键优化在线形象
  • 将电子表格转化为仪表盘,可视化数据洞察
  • 搭建数据库、添加身份验证和用户角色管理
  • 为应用增添 AI 功能,扩展产品能力

热度:🔺182

New Macaly Agent

访问官网 Product Hunt 详情


8. Agent Skills

寻找 AI 代理技能?这个目录覆盖 30 多个平台,拥有超过 10 万项安全审核的技能,一次搜索就能找到所需。

  • 最大的跨平台 AI 代理技能目录,支持 Claude Code、Cursor 等工具
  • 拥有超过 10 万项技能,覆盖 30 多个主流平台
  • 每个条目经过安全审核,确保使用安全可靠
  • 一次搜索覆盖所有平台,简化技能查找流程

热度:🔺179

Agent Skills

访问官网 Product Hunt 详情


9. Spine Swarm

想管理一支能实际工作的 AI 团队?Spine 让你部署大量代理,自动化完成从研究到文档生成的复杂任务。

  • 管理和部署 AI 代理,自动化从头到尾的复杂任务
  • 代理可以浏览网络、进行深入研究、撰写战略文档
  • 生成详细演示文稿和交互原型,只需一个指令
  • 结果在可视化画布上呈现,可审计且全面准确

热度:🔺165

Spine Swarm

访问官网 Product Hunt 详情


10. Sonarly

监控工具只能报警?Sonarly 更进一步,自动分类警报并修复生产环境问题,结合上下文生成 PR,让运维更智能。

  • 连接 Sentry、Datadog 等监控工具,自动分类警报并去除冗余
  • 在了解生产系统完整背景下自动修复错误
  • 将重复警报归类,提供包含证据的生产相关 PR
  • 基于 Claude Code 和 Opus 4.6 技术,确保修复准确高效

热度:🔺143

Sonarly

访问官网 Product Hunt 详情

是的!离职了!交接完了,过了 18 点我就自由了!爽!加班加麻了!出差也出麻了!就是爽!
但最近有个疑惑想要问问过来人,我和我对象交往 1 年多了,预计今年见家长了。但是她妈妈觉得我们家太远了,我开车 3 小时出头就到了,中间隔着一个地市,我对象和她妈妈说的是我们两个还在接触,还没正式交往,然后她妈妈今年年初就不让我们继续下去,年后就是前段时间给她介绍了相亲对象,详情对象是和她同个乡镇的,工资不到 5 千,但是家里开厂,有房子在省会,目前她是已经加了相亲对象的微信了,和我说没这么聊,但是她说那个男的很会聊。还有一些信息,她们那边聘金 38.8 万,也就是彩礼,这还不包含五金,然后她说会留一部分给她家里,然后带回来一部分,实际情况我就不知道了。然后我也有个弟弟,弟弟在家待业。
ok 说重点,她昨晚和我说要让我们家在省会城市买房,叫我爸妈出钱至少出一半的首付 100 万,有些地段 100 万够全款买了,但是她就是想要好一点的,然后打着为我好的旗号(从我角度出发),说以后结婚后就少还点贷款。然后我们福建农村自建房,那种农村别墅,今年也要装修,预计花费 30 万至少。年初我和我妈聊,我妈也觉得远,然后也想让我找个我们那附近的。目前来看我家也是没有给出 100 万的能力,所以只能说拜拜。
目前我们双方的态度就是,都省不得放下对方,但又被现实难倒,然后她在给我上压力,叫我给家里上压力!头大啊!

在广告投放的全链路漏斗中,流量请求 → 流量识别 → 广告召回 → 出价竞价 → 胜出反馈 → 展示→ 点击→ 数据回收是完整闭环。

本篇作为广告投流系列第一篇,完整梳理整个漏斗,并聚焦展示→点击阶段的 StarRocks 实时分析能力,解决“出价/素材实时监控”与“素材创意优选”两大难题。同时结合 Pinterest 真实生产案例,展示方案在亿级规模广告场景下的落地效果。

一、广告投放完整漏斗分析

广告投流本质上是多阶段漏斗,每一环都存在损耗, 本文 StarRocks 方案主要服务于阶段三的实时监控与决策,同时通过分钟级数据反馈反哺阶段一、二的召回与出价优化。

1.1 阶段一:请求阶段(流量进入→识别→召回→出价)

流量进来后,系统首先要做的是识别流量,匹配人群与定向,再进行广告召回和出价决策。

1.2 阶段二:竞价反馈阶段(胜出通知 → 展示准备)

竞价成功后,DSP 会收到反馈,进入投放阶段的展示环节,但竞价成功与实际展示之间存在漏斗损失(fill rate、超时、可见性等)。

1.3 阶段三:  展示交互与数据回收阶段(展示→点击→转化)

在投放交付阶段,展示后产生点击,数据实时回收,形成闭环监控与优化。

1.4 漏斗整体损耗关键点分析

  • 请求多 → 召回少(召回率低)
  • 竞价胜出 → 实际展示少(Win-to-Impression 损失)
  • 展示多 → 点击少(CTR 低)

通过以上三个阶段的完整漏斗分析,可见展示→点击阶段的 CTR 直接影响 eCPM 排名,是起量成败的最关键变量。本文 StarRocks 方案主要针对阶段三的实时监控与素材优选,同时通过数据闭环反哺前序召回与出价,实现全链路提效。

二、业务方案分析

2.1 经典永不过时:eCPM 公式拆解  (广告主视角)

广告系统的核心竞价公式:

eCPM (effictive cost per miile)=出价*CTR*CVR*1000
  • 出价: 广告主愿意为高潜力流量支付的金额
  • 点击率(CTR):点击次数 ÷ 曝光次数,反映创意素材的吸引力, 起量阶段最关键变量(直接影响 eCPM 排名)
  • 转化率(CVR):转化数 ÷ 点击数,用于优化素材、出价与用户路径,提升 ROI

在程序化广告(RTB/竞价)中:

  • 广告主看到的是“我的 eCPM 出价 / 预估成本”(系统根据出价 + 预估 CTR/CVR 计算的千次展示预估花费)
  • 广告商看到的是“广告位的 eCPM 收入”

eCPM(千次展示有效收益)本质上是广告系统对单次展示价值的综合预估,它直接决定了广告在竞价排序中的竞争力(eCPM 越高 → 排名越靠前 → 曝光机会越多  → 起量越轻松)。

如上文完整漏斗所示,在展示-点击阶段,CTR 是最为关键的变量。提升 CTR 不仅能直接降低点击成本(CPC),还能显著提高 eCPM,从而在竞价队列中获得更多胜出机会。一份高 CTR 的广告足以证明其创意、文案、视觉设计或目标定向足够吸引用户。

CTR 诊断三类情况:

  • 高 CTR + 低 CVR:广告吸引力强,但落地页或产品难以满足预期,需优化转化链路;
  • 低 CTR + 高 CVR:广告定向精准但曝光不足,应扩大人群覆盖或改进创意;
  • 双低指标:需从定向、创意、落地页全链路排查问题。

2.2 适用对象

本方案主要面向广告主的投放团队、增长团队以及运营团队,特别适用于以下场景:

  • 新账户冷启动阶段: 需要快速找到精准人群;
  • 老账户遭遇起量瓶颈: 展示量或者点击率持续低迷;
  • 多素材并行测试: 需要实时监控各素材表现, 并快速决策。

2.3 业务痛点

在流量获取阶段,运营人员通常面临三大核心痛点:

(1)冷启动困难

新账户/新素材/新计划上线后,平台算法(如 oCPM/oCPC/oROI)需要积累足够样本(点击、转化数据)来学习和匹配人群。没有历史数据 → 系统不敢给优质流量 → 曝光少 → 起量慢 → 预算烧得慢或烧不出去。

这对广告主来说是典型的高成本低效率阶段:钱花了但没效果,测试期拉长,试错成本高。

(2)素材衰退

素材衰退:老素材 CTR 下滑(用户审美疲劳)→ eCPM 下降 → 排名掉 → 曝光减少 → 量级萎缩。广告主需要不断迭代创意,否则 ROI 崩。

(3)空跑浪费

空跑:高曝光但低点击/无转化 → 预算白烧(无效流量)。这直接导致广告主 CPA 暴涨、ROI 负值,甚至赔付(如果平台有成本保障)。优化师常见事故就是“账户总空跑”“计划前端转化好后端差”“预算瞬间跑超但没转化”。这些也都是广告主/代理商/优化师的普遍痛点。

2.4 业务目标

通过数据驱动的方式,实现以下三个核心目标:

  • 缩短冷启动周期:提供分钟级甚至秒级反馈,把测试周期从天压缩到分钟级/小时级,大幅减少试错预算。
  • 提升 CTR 与 ECPM:通过精准召回 + 素材优化,快速淘汰低质素材,放大高潜素材。
  • 避免空跑流量:通过实时监控秒级发现异常计划,分钟级暂停低效素材,降低无效消耗。

2.5 相关指标设计

三、场景实践 1:基于 StarRocks 构建实时指标监控

实现创意×渠道×地域×人群标签 CTR 趋势监控 + 分钟级智能告警

3.1 场景描述

广告投放团队需要对不同 创意 × 渠道 × 地域 × 人群标签 的 CTR 趋势进行实时监控, 当某个创意的 CTR 突然下降超过 20%,或某个渠道的 CTR 异常上升但人群转化没有提升,系统应该在分钟级发出告警。

  • 素材优选:对于 CTR 表现优异的新素材,需要立即增加预算。
  • 空跑预警:对于“曝光过万,点击寥寥”的低质素材,必须在分钟级内发现并关停,防止预算浪费。

广告主投放团队在起量阶段常见的常见需求:

  • 多维 CTR 趋势监控:创意 × 渠道 × 地域 × 人群标签;
  • 分钟级告警:创意 CTR 突降 >20% / 渠道 CTR 异常上升但人群转化未提升
  • 素材优选:高 CTR 新素材自动加预算;
  • 空跑预警:曝光 >1 万且点击寥寥的低质素材分钟级发现并关停;

StarRocks:把等数据、人工盯盘变成实时智能决策引擎

  • 分钟级数据新鲜度:异步物化视图自动刷新,远超传统 T+1 或 15 分钟延迟;
  • 亚秒级多维下钻:支持上百人不同维度的分析, 同时查询不卡(CBO + Pipeline 执行引擎);
  • 极速查询性能: 针对亿级别的大表的关联操作,可以实现秒级别的查询响应;

3.2  架构设计

采用 Flink + StarRocks (明细模型 + 物化视图) 架构选型。

在广告实时监控这类高吞吐、Append-only 的场景中,我们选择 Duplicate Key(明细模型) + 异步物化视图 的组合方案。
  • 数据写入:通过 Flink 作业实时消费 Kafka 中的广告日志,通过 Flink StarRocks Connector 实时写入 StarRocks 的明细表。
  • 预聚合:利用 StarRocks 的异步物化视图实时物化视图,自动按 ad_idcreative_id + 人群标签聚合 CTR 维度聚合曝光量和点击量,计算 CTR。
  • 查询:BI 看板直接查询物化视图,实现亚秒级响应。

3.3 方案设计

曝光和点击数据通过流式 append 写入 StarRocks 明细表,每条广告展示事件实时更新聚合表。

(1)明细表设计

CREATE TABLE fact_ad_events (
    event_time     DATETIME NOT NULL,
    ad_id          BIGINT,
    creative_id    BIGINT,
    campaign_id    BIGINT,
    creative_version STRING,
    channel        VARCHAR(64),
    region         VARCHAR(32),
    user_tag       VARCHAR(128),     -- 人群标签(兴趣/年龄/性别/LTV分层等)
    event_type     VARCHAR(20),      -- 'show' / 'click' / 'convert'
    cost           DECIMAL(18,6),
    user_id        BIGINT
)
DUPLICATE KEY(event_time, ad_id, creative_id)
PARTITION BY RANGE (event_time) ()
DISTRIBUTED BY HASH(ad_id) BUCKETS 64
PROPERTIES ("replication_num" = "3");

(2)创建异步物化视图,每分钟刷新

CREATE MATERIALIZED VIEW agg_ad_realtime
PARTITION BY date_trunc('minute', event_time)
DISTRIBUTED BY HASH(creative_id)
REFRESH ASYNC EVERY (INTERVAL 1 MINUTE)
AS
SELECT
    date_trunc('minute', event_time)          AS event_minute,
    event_time,                               -- 必须保留原始列,让分区能找到
    ad_id,
    creative_id,
    creative_version,
    channel,
    region,
    user_tag,
    COUNT_IF(event_type = 'show')             AS impression_count,
    COUNT_IF(event_type = 'click')            AS click_count,
    COUNT_IF(event_type = 'convert')          AS convert_count,
    SUM(cost)                                 AS cost
FROM fact_ad_events
GROUP BY
    date_trunc('minute', event_time),
    event_time,                               -- 对应上面保留的列
    ad_id,
    creative_id,
    creative_version,
    channel,
    region,
    user_tag;

(3)指标监控 1:素材优选, 高 CTR 新素材, 及时增加预算

WITH ranked_new_material AS (
    SELECT
        creative_id,
        creative_version,
        channel,
        user_tag,
        SUM(click_count) AS click_counts,
        SUM(impression_count) AS impression_count,
        ROUND(SUM(click_count) * 100.0 / NULLIF(SUM(impression_count), 0), 2) AS ctr_percent,
        RANK() OVER (PARTITION BY channel ORDER BY
            ROUND(SUM(click_count) * 100.0 / NULLIF(SUM(impression_count), 0), 2) DESC
        ) AS ctr_rank
    FROM agg_ad_realtime
    WHERE  event_minute >= NOW() - INTERVAL 1 HOUR
    AND creative_version LIKE '%new%'   -- 新素材标识
    GROUP BY creative_id, creative_version, channel, user_tag
    HAVING SUM(impression_count) >= 10   -- 先过滤低曝光素材,提升性能
)
SELECT
    creative_id,
    creative_version,
    channel,
    user_tag,
    impression_count,
    ctr_percent,
    ctr_rank
FROM ranked_new_material
WHERE ctr_rank <= 5
  AND ctr_percent >= 4.0 AND impression_count >= 20;
ORDER BY channel, ctr_rank; -- Top5 且 CTR≥4%(行业可调), 且曝光至少300才参与排名

DEMO 执行示意

(4)指标监控 2:查询近 60 分钟多维 CTR 趋势, 毫秒级查询响应

SELECT 
    event_minute,
    creative_id,
    creative_version,
    channel,
    region,
    user_tag,
    impression_count,
    click_count,
    ROUND(click_count * 100.0 / NULLIF(impression_count, 0), 2) AS ctr_percent,
    ROUND(convert_count * 100.0 / NULLIF(click_count, 0), 2)     AS cvr_percent
FROM agg_ad_realtime
WHERE event_minute >= NOW() - INTERVAL 60 MINUTE
ORDER BY event_minute DESC, ctr_percent DESC;

DEMO 执行示意

(5)异常监控 1: 使用 StarRocks 的窗口函数计算移动平均,识别 CTR 突降 20%异常

WITH ctr_trend AS (
    SELECT creative_id, creative_version,
           ROUND(click_count * 100.0 / NULLIF(impression_count, 0), 2) AS ctr_percent,
           AVG(ROUND(click_count * 100.0 / NULLIF(impression_count, 0), 2))
               OVER (PARTITION BY creative_id ORDER BY event_minute ROWS BETWEEN 10 PRECEDING AND CURRENT ROW) AS moving_avg
    FROM agg_ad_realtime
    WHERE event_minute >= NOW() - INTERVAL 30 MINUTE
)
SELECT * FROM ctr_trend
WHERE (moving_avg - ctr_percent) / moving_avg > 0.20
ORDER BY (moving_avg - ctr_percent) DESC;

DEMO 执行示意

(6)异常监控 2:滑动窗口进行空跑预警, 一分钟刷新一次(曝光过万 + 点击极低)


SELECT creative_id,
       creative_version,
       impression_count,
       click_count,
       ROUND(click_count * 100.0 / NULLIF(impression_count, 0), 2) AS ctr_percent
FROM agg_ad_realtime
WHERE impression_count > 10000
  AND click_count < 50
  AND event_minute >= NOW() - INTERVAL 10 MINUTE;

四、场景实践 2:基于 StarRocks 创意 A/B 测试与多版本对比

4.1 场景描述

广告主同时投放 3-5 个不同版本的创意素材,需要快速识别哪个版本的 CTR 最高。A/B 测试要求:流量均匀分配到各版本,实时对比各版本的曝光量、点击量、CTR,达到统计显著性(通常需要 1000+转化或 10000+曝光)后决定胜出版本,并关闭低劣版本,避免预算继续浪费在低效创意上。

用户核心诉求如下:

  • 分钟级看到真实差异;
  • 多维度拆解:版本 × 渠道 × 地域 × 人群标签 × 时段;
  • 高效判断统计显著性;
  • 行动: 胜出即扩投、劣版即关停;

StarRocks 核心优势:助力把握最佳决策期

传统方案要导出数据 → 用 Python/R 跑卡方 → 等半天 → 经常错过最佳决策窗口。StarRocks 支持将 SQL 一键计算,亚秒级出结果,物化视图每分钟自动刷新。

StarRocks 把 A/B 测试从“等数据、跑脚本”变成分钟级科学决策, 投放团队分钟级就能看到“版本 B 卡方值 18.7,已显著胜出”,立刻关停劣版。

4.2 架构设计

采用 Flink + StarRocks(异步物化视图)架构:

  • Flink 实时消费 Kafka 中的广告日志,Sink 到 StarRocks 明细表。
  • 异步物化视图自动按 creative_version + 多维度聚合曝光/点击/转化,分钟级刷新。
  • 查询:BI 看板 直接访问物化视图,实现亚秒级响应。
  • 决策自动化:自动化服务提交 SQL 判断结果,自动调整预算/关停版本。

4.3 方案设计

(1)异步物化视图定义

CREATE MATERIALIZED VIEW agg_ad_abtest
PARTITION BY event_minute                      -- 直接用别名分区(3.1+ 支持)
DISTRIBUTED BY HASH(creative_id, creative_version)
REFRESH ASYNC EVERY (INTERVAL 1 MINUTE)
AS
SELECT
    date_trunc('minute', event_time)          AS event_minute,
    campaign_id,
    creative_id,
    creative_version,
    channel,
    region,
    user_tag,
    COUNT_IF(event_type = 'show')             AS impression_count,
    COUNT_IF(event_type = 'click')            AS click_count,
    COUNT_IF(event_type = 'convert')          AS convert_count
FROM fact_ad_events
GROUP BY
    date_trunc('minute', event_time),         -- 对应 event_minute
    creative_id,
    creative_version,
    campaign_id,
    channel,
    region,
    user_tag;

(2)实时多维对比看板

SELECT 
    creative_version,
    channel,
    region,
    user_tag,
    SUM(impression_count) AS impressions,
    SUM(click_count) AS clicks,
    ROUND(SUM(click_count) * 100.0 / NULLIF(SUM(impression_count), 0), 2) AS ctr_percent,
    ROUND(SUM(convert_count) * 100.0 / NULLIF(SUM(click_count), 0), 2) AS cvr_percent
FROM agg_ad_abtest
WHERE event_minute >= NOW() - INTERVAL 24 HOUR
GROUP BY creative_version, channel, region, user_tag
ORDER BY ctr_percent DESC;

Demo执行示意

(3)统计显著性自动判断(卡方检验,胜出决策核心)

WITH stats AS (
    SELECT creative_version,
           SUM(impression_count) AS imp,
           SUM(click_count) AS clk
    FROM agg_ad_abtest
    WHERE campaign_id = 1234
      AND creative_version IN  ('V1_old','V1_new','V2_old','V2_new')
      AND event_minute >= NOW() - INTERVAL 12 HOUR
    GROUP BY creative_version
)
SELECT a.creative_version AS winner, b.creative_version AS loser,
       ROUND(a.clk*100.0/a.imp,2) AS ctr_a,
       ROUND(b.clk*100.0/b.imp,2) AS ctr_b,
       POWER(a.clk - a.imp*p,2)/(a.imp*p) + POWER(b.clk - b.imp*p,2)/(b.imp*p) AS chi_square
FROM stats a CROSS JOIN stats b
CROSS JOIN (SELECT SUM(clk)*1.0/SUM(imp) AS p FROM stats) total
WHERE a.creative_version != b.creative_version
HAVING chi_square > 0.003 AND ctr_a > ctr_b;

Demo执行示意

(4)分时段细分分析

某美妆品牌发现创意 A 在晚上 8-10 点 CTR 最高,而创意 B 在中午时段表现更好。StarRocks 的分时段分析帮助实现 Dayparting 策略,实现不同时段投放不同创意:

SELECT 
  HOUR(event_time) as hour_of_day,
  creative_version,
  COUNT(CASE WHEN event_type='impression' THEN 1 END) as impressions,
  COUNT(CASE WHEN event_type='click' THEN 1 END) as clicks,
  ROUND(clicks * 100.0 / NULLIF(impressions, 0), 2) as ctr_percent
FROM fact_ad_events
WHERE campaign_id = 1234
  AND event_time >= date_sub(NOW(), INTERVAL 7 DAY)
GROUP BY hour_of_day, creative_version
ORDER BY hour_of_day, creative_version;

Demo执行示意

五、案例:Pinterest 广告主报表重构

全球知名图片社交平台 Pinterest 在广告主报表场景中,也经历了类似的架构升级。

5.1 背景与痛点

Pinterest 拥有海量广告主,其提供的 Partner Insights工具旨在帮助广告主通过自定义仪表板查看广告的实时表现(如曝光、点击、CTR)。在原有架构中,Pinterest 使用 Druid 来存储和提供实时洞察数据。随着广告业务规模扩大,广告商对实时性、自定义分析能力及成本效率的要求日益提升, 原架构因此面临严峻挑战:

  • 成本高昂:为了维持高性能,Druid 集群需要大量的实例资源,导致资源消耗大。
  • SQL 支持有限 :Druid 对标准 SQL 的支持不足,无法满足广告商复杂分析需求;
  • 数据新鲜度不足:部分数据处理链路延迟较高,难以做到真正的“实时”,通常是 T+1 或分钟级延迟,无法满足广告主即时调优的需求。
  • 灵活性差:原有架构在处理复杂自定义指标分析时,依赖 JSON 配置繁琐,且对标准 SQL 支持不够完善,增加了开发和客户 Onboarding 的复杂度。

5.2 解决方案

Pinterest 将 Partner Insights 的底层分析引擎迁移至 StarRocks,利用 StarRocks  SQL 能力替代 Druid 的 JSON 查询 DSL,并构建了统一的低延迟分析层,直接接入广告曝光和点击流数据。核心优化点:

  • 架构升级与数据摄取简化 :利用 StarRocks 标准 SQL 接口替代复杂 JSON 配置,广告商可直接通过 SQL 提取数据,大幅简化客户入职流程;
  • 性能优化 :通过向量化引擎加速查询,结合物化视图预计算高频指标,降低实时分析延迟;
  • 存算分离与资源效率 :采用存算分离架构(已落地 100 + 客户),支持灵活扩缩容,降低资源消耗 

新的架构图如下:

5.3 方案收益

迁移至 StarRocks 后,Pinterest 在广告报表场景取得了显著收益:

1. 性能提升:P90 查询延迟降低了 50%,广告主查看报表的体验更加丝滑。

2. 成本大幅降低:所需实例数量减少了 68%(仅为原来的 32%),性价比大幅提升。

3. 数据极速鲜活:数据新鲜度从分钟级/小时级提升至 10 秒级,广告主可以看到 10 秒前发生的广告曝光数据。

4. 流程简化:通过标准 SQL 进行数据提取,省去了 JSON 配置的麻烦,简化了客户 Onboarding 流程,广告主实时决策效率显著提高。

总结

广告投放的本质是在不确定性中快速迭代决策。每一次的数据分析都应该转化为可执行策略,通过引入 StarRocks,在流量获取阶段把起量监控变成实时智能决策引擎,让 CTR 与 eCPM 真正跑赢竞品。

具体收益如下:

1. 冷启动成本大幅降低:向量召回 + 实时监控,把测试周期从“天”压缩到“分钟级”,大幅减少试错预算,提升 CTR。

2. 运营效率倍增:秒级监控 + 异常预警 + 精准人群分析,让团队从“拉数”中解放,专注策略与创意迭代。

下期预告:广告投流第二战——如何利用 StarRocks 解决“转化归因”与“ROI 实时计算”难题?敬请期待。