2026年5月

日常处理 PDF 时,经常会遇到一个很实际的问题:一个 PDF 文件太长,只想单独取出其中几页;或者扫描件里混在一起的合同、发票、资料,需要拆成多个独立文件。如果专门安装 PDF 软件,只为拆分几页文件,反而有些麻烦。

所以我用 Vue 开发了一个在线 PDF 拆分工具,主要面向普通用户使用。打开页面后上传 PDF,选择要拆分的页码范围,就可以在浏览器里生成新的 PDF 文件,不需要复杂设置。

在线工具网址:https://see-tool.com/pdf-split
工具截图:

这个工具适合这些场景:

  • 从完整 PDF 中提取指定页
  • 把一个大 PDF 拆成多个小文件
  • 拆分合同、简历、发票、扫描件
  • 删除不需要的页面后重新导出
  • 按页码范围整理资料

使用方式也比较直接。先选择本地 PDF 文件,工具会读取页数并显示基础信息。然后输入要保留或拆分的页码,比如 1-358-10 这类范围。确认后点击拆分,就可以下载处理后的 PDF。

整个处理过程是在浏览器本地完成的,文件不需要上传到服务器。对于包含个人资料、合同内容、证件扫描件的 PDF 来说,这一点会更安心。普通用户不需要理解 PDF 的内部结构,只需要按页码选择即可。

我在开发时更关注几个细节:页码输入要简单,错误提示要清楚;文件较大时要有处理状态;导出的文件名要容易区分;手机和电脑上都能正常操作。因为这类工具不是给专业排版人员用的,而是解决“现在马上要拆一下 PDF”的需求。

技术上,这个工具基于 Vue 实现页面交互,PDF 处理部分在前端完成。Vue 负责文件选择、页码范围输入、状态展示和结果下载,让整个流程保持轻量,不依赖臃肿的软件安装。

如果你只是想快速把 PDF 拆开、提取几页或整理扫描文件,这个在线 PDF 拆分工具会比较方便。

基本情况:

  • 通过 Google play 付款订阅了美区 ChatGPT plus ,目前正常使用(虽然只有两个月),但每个月 20$还是有些超出预算。
  • 我的 YouTube Premium 是通过土耳其区 apple id 订阅的,已经超过一年,都是购买充值卡。

问题:

  • 之前不知道土耳其 ChatGPT 便宜,现在想切换过去(保持账号不变),请问会不会有风险?有没有 V 有操作过?害怕鸡飞蛋打。
  • ChatGPT 账号需要转区、修改号码之类操作么?

感觉物价明显降低了, 内卷严重, 一块钱就是当成两块钱花

在小县城, 各种当地高档餐厅, 也推出了人均 50 的套餐

人气最高的商场, 也出现了几家店铺倒闭, 还没人接手的情况, 没有熬过五一呢

今日亮点

今天 AI 圈有几件大事:OpenAI 的 GPT-5.5 发布仅一周,API 收入就创下了新高,而其 Codex 工具也展现出强大的企业级编码和日常办公自动化能力。与此同时,Anthropic 的 Claude 在处理个人指导时的“谄媚”问题上取得了显著改进,并在生物数据分析方面表现出色。此外,OpenAI 还为 ChatGPT 账户推出了高级安全功能,并在一个有趣的“哥布林”事件中展示了模型训练的复杂性。

💡 产品动态

OpenAI GPT-5.5 API 营收创新高,Codex 助力企业级应用

OpenAI 宣布,GPT-5.5 发布仅一周,其 API 营收增速已超过所有以往版本两倍,标志着迄今为止最强劲的模型发布。同时,Codex 在企业对代理式编码工具的强劲需求下,收入在七天内翻番。

为什么重要: 这表明 GPT-5.5 和 Codex 的市场接受度和商业价值极高,尤其在企业级应用中,代理式 AI 工具正迅速成为提升开发和运营效率的关键力量。

阅读原文

OpenAI Codex 功能全面升级,深度融入日常办公

OpenAI 详细介绍了 Codex 在日常工作中的多项新功能。它现在能作为个人助手,帮助用户总结多应用数据、规划步骤、起草文稿、整理研究、制定项目计划,并支持在工作线程内直接审阅和修改文档。Codex 还能在设置时推荐实用插件,并引导用户连接 Slack、Google Workspace、Microsoft365 等常用应用,其工作过程透明,用户可随时查看任务进度和使用的工具。

为什么重要: 这些更新让 Codex 从编码工具进一步扩展到全面的办公自动化助手,显著提升了跨应用协同和工作效率,尤其适合需要处理复杂文档和流程的专业人士。

阅读原文

Anthropic Claude 优化“谄媚”行为并增强生物数据分析能力

Anthropic 发布报告称,其 Claude Opus 4.7 在处理个人指导时的“谄媚”(sycophancy)率比 Opus 4.6 降低了一半,而新推出的 Mythos Preview 版本在此基础上再次减半。此外,Claude 还成功分析了真实的生物数据,解决了专家组都无法解答的约 30% 的问题。

为什么重要: 减少 AI 的“谄媚”行为对提高其回答的客观性和可靠性至关重要,尤其是在提供个人建议时。同时,Claude 在生物数据分析上的突破展现了其在科学研究领域处理复杂信息的强大潜力。

阅读原文

阅读原文

ChatGPT 推出高级账户安全功能 🛡️

OpenAI 为 ChatGPT 账户提供了新的高级安全设置。高风险用户可以选择启用此功能,获得更强的保护,包括防钓鱼登录和更安全的账户恢复机制。

为什么重要: 在 AI 应用日益普及的今天,提升账户安全性对于保护用户数据和防止潜在的网络攻击至关重要,特别是对那些可能成为攻击目标的个人或组织。

阅读原文

🌍 行业观察

OpenAI 解密模型中的“哥布林”现象

OpenAI 揭示了其 GPT-5.1 模型中出现“哥布林”相关内容激增的现象。官方确认,这是由于训练过程中对“书呆子(Nerdy)”人格的过度奖励,导致模型强化了对这些魔法元素的提及。OpenAI 已移除未来模型中与“哥布林”相关的奖励信号,并过滤了训练数据中在不相关语境下出现生物的案例。

为什么重要: 这一案例凸显了大型语言模型训练过程中潜在的偏见和意外行为,即使是看似无害的“书呆子”设定也可能导致模型生成特定倾向的内容。这提醒开发者需更精细地调整奖励机制和过滤数据,以确保模型行为符合预期。

[来源: OpenAI Twitter]

💻 开源项目

  • symphony (⭐ NA):OpenAI 开源的 AI 项目工作框架,将项目工作转化为独立的、自主的实现运行,旨在帮助团队管理工作流程,而非仅监督编码智能体。→ GitHub
  • graphify (⭐ NA):AI 编码助手技能,能将任何包含代码、文档、论文或图像的文件夹转换为可查询的知识图谱,支持 Claude Code、Codex 等多种 AI 工具。→ GitHub
  • code-review-graph (⭐ NA):Claude Code 的本地知识图谱工具,能构建代码库的持久映射,让 Claude 在代码审查时减少 6.8 倍的 token 消耗,日常编码任务中最高减少 49 倍。→ GitHub
  • free-claude-code (⭐ NA):允许用户在终端、VSCode 扩展或 Discord 上免费使用类似 OpenClaw 的 Claude-code 功能。→ GitHub
  • ppt-master (⭐ NA):AI 工具,能从任何文档生成原生的、可编辑的 PPTX 文件,直接创建真实的 PowerPoint 形状而非图像,无需设计技能。→ GitHub
  • career-ops (⭐ NA):基于 Claude Code 构建的 AI 驱动求职系统,提供 14 种技能模式、Go 仪表板、PDF 生成和批量处理能力。→ GitHub
  • pi-mono (⭐ NA):AI 智能体工具包,包含编码智能体 CLI、统一 LLM API、TUI 和 Web UI 库、Slack 机器人和 vLLM pods。→ GitHub
  • obsidian-skills (⭐ NA):Obsidian 的智能体技能插件,可以教您的智能体使用 Markdown、Bases、JSON Canvas 和 CLI。→ GitHub
  • awesome-gpt-image-2 (⭐ NA):一个提示词即代码的项目,提供 GPT-Image2 工业级提示词引擎与模板库,包含 329 个案例逆向工程和 13 套工业级模板。→ GitHub
  • warp (⭐ NA):一个智能体开发环境,直接在终端中构建。→ GitHub
  • sandcastle (⭐ NA):用于在 TypeScript 中编排沙盒化编码智能体。→ GitHub

今日速览

  1. Postiz:AI 代理助你一次调度 30+平台帖子。
  2. Zed 1.0:Rust 编写的高性能开源代码编辑器。
  3. Marx Finance:AI 代理在市场上辩论观点。
  4. Buda:招募 AI 代理,组建你的数字公司。
  5. Bitgrain:比 Figma 轻,比 Canva 灵活的设计工具。
  6. Montage:让 AI 代理生成 UI 快 10 倍。
  7. Genspark for Word:AI 直接嵌入 Word,写作不跳转。
  8. TrafficClaw:与你的 SEO 数据对话,找出流量下降原因。
  9. Ghosted:离开自动暂停媒体或锁定屏幕。
  10. Beauty Diagram:让代码图表颜值飙升。

深度阅读

1. Postiz

Postiz 让你把 AI 代理(比如 OpenClaw)连接到社交媒体调度系统,一次性管理 30 多个平台的帖子发布。支持 SKILL、CLI 和 MCP 等多种连接方式,是代理机构的批量内容管理利器。

  • 连接个人 AI 代理,一键调度 30+平台
  • 支持 Postiz SKILL 和命令行界面
  • 支持 MCP 远程服务器连接
  • 适合代理机构批量管理内容

热度:🔺416

Postiz

访问官网 Product Hunt 详情


2. Zed 1.0

Zed 是 Rust 从头构建的代码编辑器,速度飞快,能充分利用多核 CPU 和 GPU。它支持并行运行多个代理辅助编程,团队协作功能也原生内置。

  • 基于 Rust,高效利用多核 CPU 和 GPU
  • 并行运行多个代理,流畅编辑和导航
  • 内置团队协作:聊天、结对、共享屏幕
  • 开源,高性能

热度:🔺283

Zed 1.0

访问官网 Product Hunt 详情


3. Marx Finance

Marx Finance 是第一个让 AI 代理在市场上辩论的平台。它们讨论新闻、分享交易信号、表达观点,用金融视角帮你分析事件。

  • 自主 AI 代理讨论市场新闻
  • 分享交易信号和观点
  • 金融事件深度分析
  • 代理间的社交层

热度:🔺211

Marx Finance

访问官网 Product Hunt 详情


4. Buda

如果说 OpenClaw 给你一个代理,Buda 就给你一家公司。你可以在市场上招募或销售代理、技能和团队,通过组织者协调,实时监控所有工作。

  • 招募和销售 AI 代理、技能、团队
  • 组织者协调所有代理工作
  • 浏览器和终端实时监控
  • 兼容 Slack、Discord、微信等
  • 无需设置,安全沙箱

热度:🔺174

Buda

访问官网 Product Hunt 详情


5. Bitgrain

Bitgrain 是全新的设计工作室,比 Figma 轻量,比 Canva 灵活。从抖动效果起步,发展为完整的模板编辑器,几分钟就能创作出有质感的视觉作品。

  • 轻量级,比 Figma 更简洁
  • 灵活度高于 Canva
  • 丰富的模板编辑器
  • 快速产出有纹理的视觉作品

热度:🔺143

Bitgrain

访问官网 Product Hunt 详情


6. Montage

AI 代理生成 UI 太慢又贵?Montage 让代理只发送简化意图,服务端编译成生产组件,加载快 10 倍,输出 token 减少 50-100 倍。

  • 服务端编译意图为 UI 组件
  • 10 倍加载速度,token 减少 50-100 倍
  • 不依赖特定模型或框架
  • 支持品牌主题定制

热度:🔺120

Montage

访问官网 Product Hunt 详情


7. Genspark for Word

不用在 AI 工具和 Word 之间来回切换,Genspark 直接把草稿、编辑、研究和格式化塞进 Word,写作者和分析师的最佳伙伴。

  • AI 草稿、编辑、研究一体化
  • 直接在 Word 内操作
  • 适合写作、分析、办公
  • 无缝集成

热度:🔺103

Genspark for Word

访问官网 Product Hunt 详情


8. TrafficClaw

流量下降但 GA 和 Search Console 没给答案?TrafficClaw 让你直接问“为什么流量下降”,基于真实数据分析原因,而不是泛泛建议。

  • 连接 GA4 和 Search Console
  • 自然语言提问,获得具体原因
  • 基于实际数据,非通用建议
  • 快速定位问题并给出解决方案

热度:🔺99

TrafficClaw

访问官网 Product Hunt 详情


9. Ghosted

Mac 上的“离开模式”。通过设备内存在检测,离开自动暂停媒体或锁定屏幕,回来自动恢复。完全本地,无需云或账号。

  • 离开自动暂停媒体播放
  • 离开自动锁定屏幕
  • 返回自动恢复
  • 设备内检测,隐私安全
  • 无需云服务或账号

热度:🔺98

Ghosted

访问官网 Product Hunt 详情


10. Beauty Diagram

Beauty Diagram 让你的 Mermaid 和 PlantUML 图表告别丑陋。选主题、加动画、导出 SVG/PNG/GIF,还能通过 Web、CLI 或 API 集成到文档和 PR 中。

  • 多种精美主题
  • 支持动画效果
  • 导出 SVG、PNG、GIF
  • 支持 Web 编辑器、CLI、API
  • 轻松嵌入文档和 PR

热度:🔺90

Beauty Diagram

访问官网 Product Hunt 详情

背景

要理解 wrangler 是什么、解决了什么问题,需要先把它涉及的三层技术说清楚。

Cloudflare Workers 是 Cloudflare 的边缘计算平台。和传统的云函数不同,Workers 不是跑在某个固定的数据中心,而是分布在 Cloudflare 全球 300 多个节点上,每次请求会被路由到距离用户最近的节点执行。

Workers 的运行时不是 Docker 容器,也不是虚拟机,而是 V8 isolate——Chrome 和 Node.js 背后的同一个 JavaScript 引擎。每个请求在独立的 isolate 里执行,启动时间在微秒级,远低于容器的冷启动延迟。这套架构让 Workers 在延迟和资源利用率上都有明显优势。

但最初的 Workers 只支持 JavaScript。

原文地址:https://blog.cloudflare.com/introducing-wrangler-cli/


JavaScript 的边界在哪里

JavaScript 在写业务逻辑、处理请求、调用 API 这类场景下表现很好。Node.js 的出现让 JavaScript 从浏览器延伸到了服务器,这是一次重要的扩展。

但 JavaScript 有一个固有的局限:它不适合做计算密集型任务。

游戏引擎、图像处理、音视频编解码、密码学运算、科学计算——这些场景对性能的要求是 JavaScript 无法满足的。不是语言设计不好,而是动态类型、GC、JIT 编译这些特性在带来开发效率的同时,也带来了性能上的不确定性和上限。

WebAssembly(WASM) 在 2017 年以一种务实的方式解决了这个问题。它不是要取代 JavaScript,而是在 Web 平台上为高性能代码提供一个专属的运行环境。

WASM 是一种二进制格式的指令集,可以在现代浏览器和 V8 等运行时中以接近原生的速度执行。关键一点是:C、C++、Rust 这些语言都可以编译成 WASM。这意味着大量原本只能在本地运行的高性能库,现在有机会在 Web 平台上运行。

V8 同时支持 JavaScript 和 WebAssembly。这也意味着 Cloudflare Workers 从一开始就有支持 WASM 的基础,要做的只是把这条路铺好。


Rust 为什么成为首选

WASM 的工具链有几条路:

  • Emscripten:面向 C 和 C++,是最早成熟的 WASM 工具链,历史悠久,但配置相对复杂
  • AssemblyScript:面向 TypeScript 开发者,语法接近 TypeScript,学习曲线低
  • Rust + wasm-pack:Rust 的 WebAssembly 工作组在 2018 年投入了大量精力,把 Rust 到 WASM 的整个工具链打磨得非常完整

Cloudflare 选择先从 Rust 开始,原因是工具链在当时已经足够成熟,而 Rust 本身在性能、内存安全、跨平台这几个维度上也完全契合 Workers 场景的需求。

Emscripten 和 AssemblyScript 的支持计划在后续跟进,Rust 只是起点。


工具链完整不等于开发者能用

这里有一个容易被忽略的问题:技术可行,不等于开发者能顺畅地用上它。

在 wrangler 出现之前,如果你想在 Workers 上跑一个 Rust 写的 WASM 模块,需要经历这些步骤:

  1. wasm-pack build 编译 Rust 代码,生成 .wasm 文件和 JS 胶水代码
  2. 手动改造 JS 胶水代码,因为 wasm-pack 生成的是面向浏览器的 ES module 格式,Workers 的 WASM 实例化方式不同,需要手动删掉 import 语句、重新组织 importObject、调整模块结构
  3. 写 Worker 脚本来调用 WASM 函数
  4. 通过 Cloudflare API 手动上传 .wasm 文件和 Worker 脚本

这个流程对于深度了解 WASM 工作原理的人来说是可操作的,但对于刚接触这套技术栈的开发者来说,光是胶水代码的改造就可能让人卡住很久。

Cloudflare 在之前的博客里也记录了这个手工流程,并且明确提到这是一个繁琐且容易出错的过程。

wrangler 要解决的就是这个问题:把上面这些手动步骤全部封装进去,让开发者可以专注在代码本身。


wrangler 做了什么

wrangler 是一个用 Rust 写的命令行工具,提供三个核心动作:

build:调用 wasm-pack,编译 Rust 代码为 WASM,同时自动处理 JS 胶水代码的适配,生成可以直接在 Workers 上运行的产物。

preview:把构建产物发送到 Cloudflare 的预览服务,在真实的 Workers 运行时环境里测试代码行为,不需要先正式发布。

publish:将 WASM 文件和 Worker 脚本一起上传到 Cloudflare,完成部署。

安装方式直接用 cargo:

cargo install wrangler

整个工作流从这里开始:

# 编译 Rust 到 WASM
wrangler build

# 在预览环境测试
wrangler preview

# 发布到全球边缘节点
wrangler publish

三条命令,覆盖了从本地开发到线上部署的完整路径。


现阶段还缺什么

博客里对此有很诚实的说明:wrangler 在发布时是一个"够用但不完整"的工具。

明确缺少的能力包括:

  • 代码检查(lint):识别潜在问题和不规范写法
  • 测试框架集成:在本地跑单元测试
  • 性能基准测试(benchmark):量化代码性能
  • 体积分析(size profiling):WASM 产物的体积直接影响冷启动时间,是一个重要指标

这些功能都在计划里,但 Cloudflare 选择先把能用的部分发出来,而不是等到"完整"之后再发布。


为什么要在这么早的阶段开源

这个决策背后有一个明确的工程哲学。

新技术在内部打磨得再久,都不如放到真实开发者手里迭代快。开发者在使用过程中遇到的障碍、提的 issue、反馈的 workflow 诉求,是产品设计阶段预料不到的。

缩短从产品到用户的反馈循环,比追求初始版本的完整度更重要。

wrangler 在这个阶段开源,目的是邀请更多开发者进来:提 issue、构建项目模板、写使用体验、参与讨论。工具的形态应该由用它的人来塑造,而不只是由设计它的人来决定。


小结

wrangler 是一个工具,它本身的代码量不大,逻辑也不复杂。但它背后代表的是一条完整的技术路径:

Rust 源码
  → wasm-pack 编译
  → WASM 二进制 + 胶水代码(wrangler 自动处理适配)
  → Cloudflare Workers 预览 / 发布
  → 跑在全球 300+ 边缘节点

更重要的是它背后的判断:当一项技术本身已经可用,但开发者仍然无法顺畅使用时,工具链的缺失才是真正的障碍。wrangler 做的事,是把这条路上的石头搬开。

对于关注边缘计算、WebAssembly 或者 Rust 生态的人来说,这个方向值得持续关注。五年之后的今天,Cloudflare Workers 已经成为边缘计算领域最成熟的平台之一,wrangler 也早已进化为功能完整的开发工具,支持了当初 TODO 列表里所有缺失的能力。

为什么防火墙引擎的性能变得紧迫

Cloudflare 的防火墙规则产品(Firewall Rules)背后是一个叫做 Wirefilter 的表达式匹配引擎。用户写下类似这样的规则:

ip.geoip.country eq "CN" and http.request.uri.path contains "/wp-admin/"

每一条进入 Cloudflare 网络的 HTTP 请求,都要被拿来和这些规则做匹配,判断是否需要拦截、放行或者做其他处理。

Wirefilter 最初只为防火墙规则服务。但随着 WAF(Web 应用防火墙)等更多产品计划接入同一套引擎,它的 CPU 使用量将在不久后占到整个边缘节点相当可观的份额。

在安全产品里做性能优化,是一件需要格外谨慎的事。本文记录的正是 Cloudflare 的工程师们在这个约束下所做的一系列工作。

原文地址:https://blog.cloudflare.com/building-even-faster-interpreters...


先解决"怎么量"的问题

在动手优化之前,需要一套可靠的测量方法。

最直觉的指标是时间,但时间在分布式环境下太不稳定——同样的代码跑两次可能差出 20%。Cloudflare 的工程师转向了硬件计数器,其中指令数(instruction count)被证明是最稳定的一个指标,而 CPU 周期数则波动太大,不适合做对比。

测量工具选用了 Linux 内核提供的 perf_event_open 系统调用,直接在 Wirefilter 的二进制内部插桩,分阶段采集数据:解析(parsing)、编译(compilation)、分析(analysis)、执行(execution)各自单独记录,互不干扰。这个思路来源于 Rust 编译器的自剖析机制。

还有一个容易被忽视的工程细节:Cloudflare 常规的 CI 节点使用了虚拟化和沙箱技术,这让访问硬件计数器几乎不可能。他们最终在专用的裸机节点上运行基准测试,才拿到了可复现的结果。

这套框架还被嵌入到发布流程里:每次发新版本之前,都会跑一次完整的基准测试,用于检测性能回退。


让基准测试本身跑得起来

有了测量框架之后,第一个实际问题出现了:基准测试太慢了

Cloudflare 存储了大量真实客户的防火墙规则,如果把所有规则都跑一遍,需要好几个小时,这完全不现实。工程师们用了三个办法把这个时间压到 20 分钟以内:

去重:检查后发现,大约三分之二的规则在结构上和其他规则是重复的。Wirefilter 可以把规则序列化为 JSON,结构相同的规则序列化结果也相同,去掉这些重复的规则之后,测试集直接缩减到三分之一。

采样:去重之后规则量仍然很大,随机采样是简单有效的解法。关键是要保证每次采样的结果相同,否则不同时间的跑分结果就没有可比性。

分区:直接采样有一个风险,可能某些重要的语言特性恰好没被采到。解决方案是先按 Wirefilter 的语言特性对规则分区,再在每个分区内采样。这样不仅保证了覆盖面,还让测试结果能按特性拆开来看,更容易定位优化效果来自哪里。


优化从哪里入手:先看数据

有了基准测试框架,接下来是找优化点。

最直觉的猜测是:Wirefilter 是一个解释器,动态分派(dynamic dispatch)应该是性能瓶颈——每次执行操作都要通过虚函数表查找,有开销。JIT 编译、选择性内联、复制等解释器优化技术都在考虑范围内。

但 profiler 的数据打破了这个预期:

操作CPU 时间占比
matches 操作符0.6%
in 操作符1.1%
eq 操作符11.8%
contains 操作符51.5%
其他35.0%

动态分派的开销不是主要矛盾。真正的瓶颈是 contains 这一个操作符,独占了超过一半的 CPU 时间

优化方向从此清晰了:先搞定 contains


一次意外发现引出的优化路径

contains 是字符串子串搜索:给定一段文本(haystack),判断其中是否包含某个子串(needle)。

Wirefilter 最初用的是 memmem crate,它实现了经典的两路(two-way)子串搜索算法,在理论上是高效的。

但有工程师注意到一个奇怪的现象:contains 改写成等价的正则表达式,速度反而更快

# 原写法
http.host contains "example"

# 改成正则表达式后,莫名其妙更快
http.host matches "example"

正则表达式比 contains 功能强大得多,在简单场景里不应该更快。

顺着这个线索查下去,发现了原因:Rust 的 regex crate 内部对它认为"简单"的模式做了特殊处理,会自动分派到专门的 SIMD 加速路径,而不是走通用的正则匹配逻辑。

既然 regex crate 能做到,为什么不直接用呢?问题在于 Wirefilter 是一个解释器,使用了动态分派机制。如果把 contains 的匹配逻辑塞进 regex crate 深处的某个 enum 分支里,额外的调度开销会抵消 SIMD 带来的收益。更理想的方案是:在 contains 表达式被调用时,直接分派到一个专用的 SIMD 实现,不走任何中间层。

工程师们找到了 Wojciech Muła 此前开源的 sse4-strstr 库,把它接入了 Wirefilter。结果令人满意:

基准指令数改善
使用 contains 的表达式72.3%
简单表达式(无 contains0.0%
所有表达式综合31.6%

SIMD 子串搜索:算法是怎么工作的

这个算法的核心思想是用 SIMD 指令做批量过滤,把大量不可能匹配的位置快速排除掉,只对少数候选位置做精确比较。

以在一段文本里搜索 "example" 为例,步骤如下:

第一步:把 needle 的第一个字节('e')填满一个 SIMD 寄存器,比如 AVX2 的 32 字节寄存器里放 32 个 'e'

第二步:把 haystack 的前 32 个字节加载进另一个寄存器,与第一个寄存器做按位相等比较。结果中,不等于 'e' 的位置全部置 0——这些位置不可能是匹配的起点,直接排除。

第三步:对 needle 的最后一个字节('e')重复同样的操作,但把 haystack 偏移 needle 长度减一的距离。

第四步:把两次比较的结果按位 AND,进一步缩小候选集合。

第五步:对剩余的候选位置,用 memcmp 做完整比较。

第六步:如果没找到,移动到 haystack 的下一段,重复直到搜索完毕。

这个算法快的本质是:SIMD 寄存器一次比较 32 个字节,而且绝大多数位置在前两步就被过滤掉了,真正需要 memcmp 的候选极少。


一个必须解决的安全问题

原始的 sse4-strstr 有一个问题:当 haystack 的长度不是 32 字节的整数倍时,最后一批数据装不满一个寄存器,算法会继续读取 haystack 末尾之后的内存,直到填满寄存器为止,然后用位掩码忽略越界部分。

这种行为在 Cloudflare 的环境里是不可接受的。读取越界内存属于未定义行为,在安全产品里有不可预测的风险。

Cloudflare 的工程师把 sse4-strstr 移植到了 Rust,并引入了"重叠寄存器"技巧:当最后一批数据装不满时,把寄存器往前移,让它和前一个寄存器有所重叠,用已经读过的合法内存来填满寄存器,而不是越界读取。重复的字节不会影响最终的匹配结果,修改是安全的。

当 haystack 本身就小于一个寄存器宽度时,重叠技巧无法使用,这时会降级到更小的指令集(AVX2 → SSE2 → SWAR),直到能容纳 haystack 为止。再小的情况则使用 Rabin-Karp 算法。

这个移植版本以 sliceslice 为名开源在了 crates.io 上。


还有一个最坏情况问题

选用 needle 的首字节和末字节作为过滤条件是个聪明的设计,但也引入了一个可被利用的弱点。

考虑这条规则:

http.request.uri.path contains "/wp-admin/"

needle 是 /wp-admin/,首字节和末字节都是 /。如果攻击者构造一个全是 / 的超长请求路径,每个位置都会通过前两步的过滤,导致每个位置都要做 memcmp,整个算法退化为暴力搜索。

对于首末字节的选择,无论选哪两个字节,攻击者都可以针对性地构造最坏情况。

解决方案是引入随机性:第一个比较字节仍然固定选 needle 的首字节,但第二个比较字节每次随机选取 needle 中的某个位置。攻击者无法预知这个随机选择,因此无法稳定地构造最坏情况。

代价是性能有所损失——指令数提升从 72.3% 回落到 49.1%,但这仍然是对原方案的巨大改进,而且不以牺牲安全性为代价。

基准sse4-strstr(原版)sliceslice(Cloudflare 版)
使用 contains 的表达式72.3%49.1%
简单表达式0.0%0.1%
所有表达式综合31.6%24.0%

几点值得记住的东西

性能测量先于性能优化。这篇文章花了相当篇幅在讲测量框架的建设,不是凑字数,而是因为没有可靠的测量,所有优化都是在猜。用时间作指标、在虚拟化环境里跑基准——这两个常见做法在 Cloudflare 的实践里都被证明是不够的。

Profiler 的结果经常打破直觉。动态分派被认为是解释器的主要开销,但实测下来只占一小部分,真正的瓶颈在一个具体的字符串操作上。在数据面前,预设的性能模型需要修正。

安全边界不能因为性能压力而放松。原始的 sse4-strstr 在边界处理上走了捷径,这在通用工具里或许可以接受,但在防火墙引擎里不行。额外的移植工作是必要成本。

随机化是对抗最坏情况攻击的有效手段。当算法的确定性行为可以被预测和利用时,引入随机性能以较低的性能代价换来对攻击者的不可预测性。

OP 是油耳,带 10 分钟就出油的体质,但又刚需强力降噪
之前用 APP1 很难带住,但因为降噪就强迫自己适应...看 APP3 改了结构,会不会好点?(店里短暂使用没感到差别)

单位环境不能装 vpn ,但我自己账户还是订阅了 codex 等服务。想问下有没有什么优雅的方式使用原版服务呢?我目前有两种想法:

  1. 海外搞个服务器,上面跑一个 CLI ,本地通过 ssh 连接
  2. 海外服务器上部署 CLIProxyAPI 把 codex 转成 api 然后本地 codex 修改供应商到这个 api

这两种办法有尝试过吗?感觉第二个更方便但第一个更安全?大佬们有什么经验吗?

个人是比较喜欢赛车的,虽然不是真正的硬核玩家,平时也不太有时间开,地平线 5 大概 500 小时左右。

现在地平线 6 快发了,之前都是手柄,现在想搞个方向盘开。

需求就是,能玩地平线这种休闲游戏就行,并不追求拟真的赛车模拟,但是希望方向盘手感不要过于拉稀。

因为是娱乐需求,不准备花太多钱。我看有上万元的模拟方向盘,实在是买不起这种。

希望买那种技术上说得过去(不太清楚方向盘都有哪些驱动技术),的入门产品。

不知道有没有熟悉的 v 友推荐个

这两天 plus 过期了,之前是找代充的,最近这几天有点封得太狠了。不太敢找代充买 pro 。

现在什么办法可以稳定买 pro 啊,早上研究了一圈,太麻烦了,想花钱都这么难。

纵马赴夏日,豪礼皆自达。即日起至2026年5月31日,长安马自达继续加码全系车型购车礼遇。MAZDA EZ-60(以下称EZ-60)马年版领衔登场,售价13.99万起,全系车型至高可享23,000元购车权益,进店试驾即赠国家非遗金陵金箔。MAZDA EZ-6(以下称EZ-6)限时超级置换季开启,至高可享17,000元置换厂补和20,000元以旧换新国补。

在这里插入图片描述

EZ-60马年版:千面影帝梁家辉实力背书 合资新能源SUV最优选

作为连续6个月蝉联合资新能源中型SUV销量冠军的全球车型,EZ-60持续优化产品阵容,马年版车型在北京车展正式上市,以增程200马年版13.99万元、纯电600马年版14.59万元的诚意定价,成为五一小长假自驾、露营、跨城出游的座驾最优选。活动期间,EZ-60全系车型在至高20,000元以旧换新国补基础上,叠加6重专属购车礼遇:

  1. 置换礼:至高可享7,000元置换厂补;
  2. 拥车礼:免费赠送价值950元交强险;
  3. 自燃包赔礼:赠送价值7,999元终身零燃权益,不限车主、不限里程;
  4. 畅充礼:免费赠送价值3,999元原厂充电桩;
  5. 升级礼:免费赠送3,000元专属选装基金;
  6. 金融礼:支持0首付5年低息购车方案,年均费率低至1.99%。

在这里插入图片描述

作为全球唯一同时斩获德国iF、美国IDA等7项国际顶级设计大奖的新能源SUV,EZ-60马年版完整传承了车型硬核实力,更精准响应马粉需求:开放原顶配车型专属紫色内饰选装,满足个性化定制需求;标志性9风道空气动力学设计,兼顾魂动美学与空气动力学性能,高速自驾时车身更稳;2,902mm超长轴距带来宽绰车内空间,轻松容纳全套露营装备、婴儿车与多件行李箱,后排座椅放倒秒变2米纯平大床,景区游玩间隙随时躺平休息;中日德三国四地工程师联合调校,搭配“人马一体”的精准操控,无论是高速、山路,还是非铺装路面,都能带来从容稳定的驾乘体验,更有马自达独家“不晕车”黑科技,老人孩子长途乘坐也能全程舒适。

EZ-6:限时超级置换季开启 至高享17000元置换厂补+20000元国补

作为斩获“2026世界年度设计车大奖”的全球战略车型,同时也是首款达成全球主流安全认证大满贯的合资新能源轿车,EZ-6自上市以来便树立了合资新能源B级轿车价值标杆。电感「人马一体」的调校,精准复刻马自达标志性线性加速与弯道操控,兼顾舒适家用和操控乐趣;越级的车身尺寸与宽绰座舱,兼顾前排驾驶体验与后排乘坐舒适性,出行久坐不累,更有母婴级环保座舱材质,新车无异味,全家出行更安心。活动期间,进店试驾EZ-6即可获赠国家非遗金陵金箔,更有多重购车权益,全方位降低用户购车与用车门槛:

  1. 限时超级置换季:至高17,000元置换厂补,至高20,000元以旧换新国补;
  2. 拥车礼:免费赠送价值3999元原厂充电桩+价值950元交强险;
  3. 金融权益礼:支持0首付5年低息购车方案,年均费率低至1.99%;
  4. 自燃包赔礼:赠送价值7,999元终身零燃权益,不限车主、不限里程。

在这里插入图片描述

CX-50行也:焕新一口价13.98万起 至高享21,000元补贴

“山系生活宽体SUV”CX-50行也,天生适配户外出行生活方式,完美契合当代家庭“城市通勤+户外旅行”的多元出行需求。4785mm越级车长搭配宽体车身设计,带来远超同级的车内空间与后备箱容积,帐篷、天幕、折叠桌椅、山地自行车等户外装备均可轻松收纳;高离地间隙搭配专业级底盘调校,城市铺装路面、乡间非铺装小路、山野轻度穿越路况皆可从容应对,带你解锁更多小众风景。活动期间,CX-50行也焕新一口价13.98万元起,叠加6,000元置换厂补与至高15,000元以旧换新国补,综合补贴可达21,000元。

在这里插入图片描述

与此同时,长安马自达多款经典燃油产品同步奉上五一专属福利,全面覆盖不同用户的出行需求:

  1. 次世代MAZDA 3昂克赛拉:全系8.99万起,购车可享至高14,000元以旧换新国补,灵活好开、油耗经济,是年轻群体城市通勤、假日出游的乐趣之选;

在这里插入图片描述

  1. MAZDA CX-5:限时11.58万起,至高可享15,000元以旧换新国补与6,000元置换厂补,全球超400万用户口碑背书,兼顾家用舒适与操控乐趣,全家出行无压力;

在这里插入图片描述

  1. MAZDA CX-30:全系9.99万起,叠加至高14,000元以旧换新国补,潮酷造型灵动小巧,城市打卡、山路自驾都能轻松驾驭,是自驾出行的个性之选。

在这里插入图片描述

即日起,可前往长安马自达全国授权经销商门店,或通过“悦马星空”APP、官方小程序查询政策详情、预约试驾及预订新车。无论是燃油车时代,还是新能源时代,长安马自达将持续以全球顶级的安全品质、越级的产品实力与诚意满满的福利政策,携手每一位用户,在马年开启更多美好出行新旅程。

昨天找代理充的 pro 炸了,去找了一下更高性价比的方式。

找到一个路子是这么说的:

梯子挂到菲律宾,订阅 pro 20x 不到 1000 块。

然后跟一个人拼,两个人人均不到 500 。

--------->

想问一下有试过这个路子的朋友吗? 稳吗 多谢!

目前 DeepSeek v4 OpenAI-compatible API 会返回:

  • reasoning_contentcontent

后续请求需保留并回传 reasoning_content,否则出 400 错误。

目前只看到 axonhub 有相关适配:issues/1468

以下项目目前还没有看到适配:

  • litellm
  • newapi
  • sub2api
  • cliproxyapi

想知道还有哪些 AI 网关已经支持这个逻辑?