Impeccable 深度评测:10.7 万 Star 的设计词表,62 条 slop 规则我实测只响 43 条

Impeccable 深度评测:10.7 万 Star 的设计词表,62 条 slop 规则我实测只响 43 条

你把一个页面丢给 AI,说「做得好看点」。出来的东西几乎总是同一张脸:奶油色背景、一根细衬线大标题配斜体点缀、紫蓝渐变、卡片左边一道彩色竖杠。这不是审美口味问题,是可数的、会反复出现的模式。Impeccable 干的事就是把这些模式写成 62 条确定性规则(deterministic,意思是不调用任何模型、同样的输入永远同样的输出),让 coding agent(替你写代码的那个 AI 助手)在交活之前先自己照一遍镜子。

它现在是 10.7 万星、Apache-2.0 协议、作者是前 Google 开发者布道师 Paul Bakaus。我把它整个拉进隔离沙箱,从源码编译出引擎,跑了两套测试,再用仓库自带的 269 个测试样本全量扫了一遍。结论先给:62 条规则里只有 43 条在这条路径上响过,剩下 19 条一次都没触发——这不是缺陷清单,但它划出了这东西真正的适用边界。

一、它是什么:一本设计词典,外加一个独立运行的扫描器

说人话,它由两块拼起来。

第一块是命令。装好之后,你的 AI 助手里多出 24 个斜杠命令,按用途分四组:调风格(让保守的更大胆、让吵闹的更安静、去掉多余、补上配色、重整排版)、做评审(打分的体验检查、技术质量报告)、收尾(上线前打磨、补边界情况、改文案、适配屏幕、优化加载),以及写新页面时的规划。

你用「把定价卡做得更响亮一点」这种话吩咐它,背后加载的是一份专为这个动作写的操作手册。区别于随便一句「好看点」,它知道这个动作要做到什么程度算完。

第二块是一个能脱离 AI 单独跑的扫描器。一条命令扫源码目录,同一条命令换成网址就扫线上页面;加一个开关输出机器可读的结果,再加一个开关直接写成 GitHub 的代码批注。

它有没有发现问题,只用退出码回答你:零是干净、二是有发现、一是连扫都扫不了。这一条对做持续集成的人很关键——它天然就能当闸门用,不用解析输出文字。命令行细节放在下面的表格里。

两块都指向同一个卖点:把「感觉不对」翻译成「第 12 行左边那条 6 像素竖杠,删掉」。

二、怎么做到的:一条设计规则如何从散文变成可执行代码

这是它和站内评测过的同类最不一样的地方——它不是一堆 Markdown 提示词,而是一个正经的 Rust 工程。仓库根目录的构建清单定义一个工作区,底下共有 18 个 crate(Rust 里最小的编译单元,可以理解成模块边界清晰的零件)。分工大致是:

零件 干什么
规则注册表与公共类型 62 条规则的唯一真身,一条规则 = 一个编号 + 分类 + 严重级别 + 一句给人看的说明
规则逻辑 每条规则的具体判定:什么算「太挤」、什么算「标题跳级」
源码扫描 走文件、读配置、跑正则、出结果
静态页面引擎 自己解析 HTML 和样式表,在没浏览器的情况下算排版和颜色
浏览器引擎 连你本机的 Chrome,在真渲染的页面上量尺寸和对比度
命令行 把所有动词接起来,管退出码

版本方面,工具链配置文件只写了一句「stable」,外加一个网页端编译目标——那是为了把同一套规则编译成网页里也能跑的形态,浏览器插件用的就是它。整个工作区 27.5 万行 Rust,锁文件里 218 个依赖包。

62 这个数字在源码里是被测试断言焊死的:注册表末尾有一句「长度必须等于 62」的检查,谁不小心删了一条,测试当场红。它也解释了为什么是 62 而不是 64——有两条规则被退役了(image-hover-transform 和 layout-transition),退役的编号留在配置里不报错、也不生效,只在自检命令里悄悄提示一句。

三、实测:跑了什么,拿到什么数字

沙箱是隔离的,被测项目全程没有落到沙箱外。克隆用浅克隆加只取必要对象,4,526 个文件、除版本库外 98MB,4 秒完成。然后按文档从源码构建引擎,25.5 秒编译完,产物 100MB。

我跑的命令 真实结果 耗时
cargo test -p impeccable-foundation 61 个通过,0 失败 9 秒
cargo test -p impeccable-detect 117 个通过,0 失败 11 秒
cargo test -p impeccable-core 847 个通过,0 失败 18 秒
cargo test -p impeccable-html 224 个通过,0 失败 29 秒
cargo test -p impeccable(命令行) 81 个通过,0 失败 22 秒
node scripts/run-tests.mjs core 270 个用例,264 通过、2 失败、4 跳过 7.3 秒

Rust 这五个包合计 1,330 个通过、零失败。全仓一共 2,683 个 Rust 测试标记,我没跑全量:一次性跑整个工作区需要补下载依赖,沙箱第一次断网跑直接报下载失败,我改成逐个包跑,这五个是覆盖面最大的。

前端那套 core 套件的 2 个失败都出在环境,不是代码:一个是仓库需要一个叫 gh 的命令行工具去拉一份几兆的提交历史,沙箱里没有,报的是系统层面的「进程资源暂时不可用」;另一个是少装了依赖,模块找不到。两者的原始报错我都留着,不做别的解读。

规则真的会响吗? 我手写了一个故意做脏的页面:左边 6 像素紫边卡片、渐变文字、9 像素的灰色小字、奶白背景、Inter 字体,再配一份内容一样的 React 组件。同一份脏东西,两种文件给出了两种答案——页面文件报了 7 条(侧边竖杠、渐变文字、对比度只有 1.7:1 不合格、字号低于 11 像素下限、字体太大众、奶白背景),React 组件只报了 1 条。

原因它自己打印出来了:源码文件只跑模式匹配那批规则,并明确写着「发现数量是少算的,不等于体检合格」。这是我认为最该被记住的一条限制:把它挂进 React 或 Vue 项目的持续集成,你得到的是一层很薄的网;要拿到完整结果,得对着跑起来的开发服务器地址扫一遍。

那 19 条从不触发的规则是什么? 我拿仓库自带的 269 个测试样本全量扫了一遍,43 条规则响过,其余 19 条一次没有。看名单就明白了:设计系统字体、颜色、圆角、字号这四条要读你项目里的设计规范文件才有基准;行宽、贴边、遮挡、首屏横向溢出、边缘卡片这几条要真实的屏幕尺寸。

脚本报错、坏图、静止时被藏起来的内容这几条,要页面真的渲染过才看得见。所以这 19 条不是坏了,是「静态扫文件」这条路根本走不到它们——想覆盖,就得把浏览器接上。

顺带一个方法论陷阱:第一次扫它的测试样本,我拿到的是零发现。查下来是仓库自己的配置文件里把 tests/fixtures/**(测试样本目录)写进了忽略清单——测试语料被当成「已知的脏东西」屏蔽了。这做法本身合理,但意味着任何人想复核它的规则,都得显式关掉配置。

四、三处我实测撞到的问题

一是分发方式带来的体积代价。 仓库根目录下有 20 个以点开头的目录,一个工具一个,每个里面装着一份完整的技能包,58 个文件。我把路径前缀抹掉之后逐字节比对:1,165 个文件里有 942 个和 Claude Code 那份完全一致,占八成。

剩下两百多个差异,绝大多数是同一句话里的路径前缀不同——.claude/skills/impeccable 换成 .cursor/skills/impeccable,另有一处把「用提问工具问用户」改成「直接问用户」。单个技能包 2.3MB,乘 20 就是四十多兆。作者显然是有意的(README 里写明每个工具的产物都提交在仓库根目录,为了让人不用装 Node 也能手动拷),代价是改一句说明书要同步二十份、看代码时噪音很大。

二是引擎二进制不随仓库来。 我找遍全仓,没有任何一个平台的引擎可执行文件;npm 包声明里只有 5 个平台分包的依赖,加一份校验和清单,5 条哈希。

也就是说「Apache-2.0、可以离线从源码构建」这句对开发者成立,对使用者不成立——默认路径是启动器联网下载一次、校验哈希、存到用户目录。这一点 README 说得清楚,不算隐瞒,但它决定了「断网环境能不能用」这个问题的答案是要先自己编译。

三是那 2 个失败用例的位置很说明问题。 它一共定义了 6 个默认测试套件和 8 个可选套件,拆得很细:构建、规则、浏览器、框架适配、插件端到端。我第一次跑默认入口,卡在「拉真实提交历史」这种需要外部网络账号的用例上。

工程严谨度是够的:测试与代码几乎一比一、注册表数量被断言焊死、还有个专门的脚本只跑被改动影响的那些包。但一个想在本地跑绿的人,得先配好那个拉历史的命令行工具和一堆依赖。

五、放进同类里看,值不值得装

站内之前评过三个设计类技能,问的问题各不相同。UI UX Pro Max 那篇问的是「词表够不够用」:192 套配色全过无障碍标准,但中文关键词一个都搜不到。Hallmark 那篇,也就是专治 AI 味的那种设计技能,问的是「它自己达标吗」:31 个成品页面有 21 个过不了它自家 58 道闸门。

StyleSeed 那篇问的是「方法引擎的测试能不能证明效果」:195 项测试全绿。Impeccable 补的是第四个问题:这套规则在真实代码库里跑得动吗——答案是页面级跑得动,源码级只有薄薄一层。

适合谁:已经在用 Claude Code、Cursor、Codex 这类助手,且项目有成型界面的人。它最擅长的是「对着一个已有的卡片、一个已有的设置页反复改」,而不是从零生成整站。把扫描器接进持续集成也靠谱,前提是你扫的是跑起来的地址而不是源码目录。

不适合谁:想用它替代设计判断的人。62 条规则能认出「紫蓝渐变 + 左边彩色竖杠」这种公认的机器味,但认不出你的产品该长什么样——那部分仍然要人给方向。另外不想在项目里多出二十个工具目录、也不想让助手每次改文件都触发一次检查的人,可以先只装扫描器,不装钩子。

一句话判断:值得装,但别指望它是护栏。它是一把尺子——量得准,量得到的地方不多,你得自己决定要不要把页面也摆到尺子下面。

局限说明:本次实测在内存与进程数受限的隔离沙箱内完成,Rust 测试只跑了五个核心包(占全部测试标记的一半),前端六个默认套件只跑了 core 一个,浏览器渲染类的规则因为没有可用的 Chrome 没跑;扫描覆盖面用仓库自带的 269 个测试样本加两个手写样本估算,不等于真实项目里的分布。数据取自 2026-11-11 的仓库快照,主分支当天有提交。

相关阅读:UI UX Pro Max 深度评测:12.7 万 Star 的设计 skill,192 套配色全过 WCAG,中文关键词却 0 命中;Hallmark 深度评测:3 万 Star 的反 AI 味设计技能,31 个成品页面 21 个过不了自家 58 道闸门

关注 AI商业快讯,每天一篇 AI 热点深度解读。

Reticle 深度评测:1,263 Star 的 AI 代理验证层,3 个故障抓 2 个、第 3 个要你先交账本

Reticle 深度评测:1,263 Star 的 AI 代理验证层,3 个故障抓 2 个、第 3 个要你先交账本

用过编码代理(coding agent,也就是能自己改代码的 AI 程序)的人都见过这一幕:它说「已修好,构建通过」,你打开页面,按钮点下去没反应。

这不是它偷懒。编码代理的天性是产出改动,它天生乐观;而验证的天性是去把事查清楚,并且随时准备回一句「不行」。两件事方向相反,所以它写代码快,查自己写的代码就慢,甚至根本不查。

今天评测的 reticlehq/reticle 就是冲着这个缝隙来的。它的口号只有一句:你说做完了,我来判断这是不是真的。结论先给:它确实能看见截图看不见的东西,但前提是你得先把应用内部的「账本」交到它手里。

它是什么:把判决书,而不是截图,交给代理

Reticle 往你的应用里塞一个只在开发环境生效的小程序,再在本机 127.0.0.1 的 4400 口起一个服务当桥。代理通过 MCP(也就是模型上下文协议,给 AI 接外部工具的插座)拿到一组工具,可以看页面、点元素、读网络请求、读状态,然后断言——也就是用一句话声明「应该发生什么」,让工具去核对。

它返回的是三种判决之一:是、否、说不准。只有「是」才算通过,说不准就是说不准,不允许用一个含糊的绿灯糊过去。判决书上还带三样东西:决定这次判定的那条网络请求、那次状态变化、那行控制台输出,以及一个可以直接点开的「文件:行号」。

和截图比对类工具的根本差别在这里:截图工具看的是「屏幕上长什么样」,Reticle 看的是「程序自己认为发生了什么」。屏幕会撒谎,程序内部的账本不太会。

仓库规模不小,也够实:3,137 个 TypeScript 文件,其中实现代码 1,251 个文件 24.1 万行,测试 1,886 个文件 29 万行——测试比实现多出五万行。近 30 天 377 次提交、376 个合并的 PR,开源许可证按包声明为 Apache-2.0(可商用),1,263 颗星,2026 年 6 月建仓,五个月长到这个体量。

实测:我在一个 React 应用里埋了 3 个故障

光看 README 不算评测。我搭了一个最小的前端示例应用,故意埋了三个真实的烂摊子:

  1. 页面加载时发一个会返回 500 的请求,界面把它吞掉,照常显示「一切正常」;
  1. 一个链接指向的页面里抛异常,控制台报错;
  1. 顶部徽标显示「0 个部署」,但程序内部记着 3 个——界面在撒谎,而且撒得很自洽。

第一条命令是零安装的:在应用目录里跑 npx @reticlehq/server,它自己找开发服务器、自己开浏览器、不往你项目里写任何文件。对着干净的版本,它给的是「是」;对着埋了故障的版本,它当场报出 5 处问题,原文是 Failed request on /: POST /api/deploy: HTTP 500 和 Console error on /broken: Uncaught Error: status page broke,退出码 1。

前两个故障,就这么被一条命令抓到了。

第三个没抓到,而且抓不到得理直气壮:那条零安装的体检只检查「页面能不能开、有没有控制台报错、有没有失败请求、同源链接能不能打开」,徽标显示 0 而账本记着 3,在它眼里完全合规。我故意用文字断言去问「页面上是不是有 0」,它回答是——因为屏幕上确实写着 0。

真正的解法是让它把两边对起来看。我在应用里手动注册了一个账本(一个带读取和订阅两个方法的普通对象),然后用一条「比对」断言:

reticle verify http://localhost:5179 --expect '{"kind":"compare",
  "left":{"from":"state","store":"deploy","path":"items.length"},
  "right":{"from":"text","scope":"[data-testid=\"nav-badge\"]"},"as":"number"}'

结果 verified: no——账本是 3,徽标是 0,不一致。同一时刻,把左边换成页面上那句真话「共 3 个部署」,判决立刻变成 verified: yes。

所以严格说,三个故障它都抓得住。差别在门槛:前两个一条零安装命令就报出来,第三个要你先交出账本、再写一行比对。

这一步是整个评测里最有价值的一步:它抓住的是「每一处单独看都对、合起来是错的」。这类毛病,截图比对和读无障碍树的工具都看不见,因为它们只能读到屏幕,读不到屏幕背后的账本。

仓库自己也承认这是它唯一的结构性优势。它自带一套 88 条的故障题库(86 条真故障 + 2 条「看着像坏了其实没坏」的陷阱),与一份 Playwright 脚本正面对比:Reticle 抓到 85 条,Playwright 59 条,两边对干净版本都零误报。差距并不均匀——26 条是 Playwright 结构上就不可能看到的(要读应用状态、要读客户端自己伪造的 500),剩下能看到的那些,两者打平。

值得单独说的一点:它公开撤回自己的数字

评测一个自称能验证一切的项目,最该看的是它怎么对待自己的数字。这一点它做得比多数项目狠。

它仓库里有一份基准测试的说明,明写着旧数据不能当基线。理由是那些历史记录出自一个有四处缺陷的测量脚本,而四处缺陷全都对自己的产品有利:有一项检查的统计范围缩水了,却依旧判定通过;有两个从没跑过的工具,被记成「全盘零分」;还有一条故障的判定条件宽到连请求地址本身都能满足。

更狠的是变更日志里那条自我更正:单条故障的输出成本,原先公布的是自己 4,134 字节、对手 7,899 字节,复测后发现实际是自己 9,261 字节、对手 5,849 字节——结论反了,于是把旧结论整个撤回,写明「不要重复引用它」。它甚至专门为「跳过对手能用的接口就直接判对手抓不到」这类自欺写过一段反省,把六条改判回平手。

这种自我拆台,比任何一个漂亮数字都更能说明这套判据是可信的。

三个我自己踩到的坑,和它不适合谁

第一个坑:账本名写错,它给你的是「否」,不是「说不准」。 我把账本名故意写成一个不存在的名字,判决是 verified: no,理由是「声明的后果没有发生」,附带的证据只是提示「搜过的账本有这些」。也就是说,配置写错和功能真坏了,在 CI 里长得一模一样。这跟它「说不准就说不准」的原则不一致,属于需要你自己留一层校验的地方。

第二个坑:断言写错一个字段,直接判「说不准」。我把限定作用范围的字段写成了一个对象而不是字符串,它返回「说不准」,并明确说明「这条断言没有解析成功,所以什么都没运行」。态度是对的,但它和「功能失败」共用同一个退出码 1。脚本里想区分「写错了」和「真坏了」,得自己解析输出。

第三个坑:没录过任何流程时,那道 CI 闸门是空转的。项目说明里写着它能拦住「改了受流程覆盖的代码却没重新验证」的提交。我在一个没有任何流程的项目里跑它,输出写着通过为假、原因为「没有流程」,并解释「这里没有存下来的流程,所以没什么可查,这不算这次改动的失败」——但退出码是 2。CI 里只要写了「非零就当失败」,它就会误伤;反过来,只要写成「非零一律放过」,它又会在真有流程时也放过。判定条件得写成只认 0 和 2 两种。

另外两件要提前知道的:自动探索模式(没流程时让它自己跑一遍并录下来)需要把项目连到它的云端平台,不连就用不了,原文是「这个项目没有连到平台上,请先连接,或者你自己驱动这段旅程」;首次运行如果没有本机 Chromium,它会当场下载约 150 MB。

至于坑之外的分工,我认为是这样的:

你要解决的问题 更合适的工具
界面到底有没有骗人、请求有没有静默失败、状态和显示对不对得上 Reticle 这类进得去程序内部的工具
跨浏览器、跨设备、别人的站点能不能用 Playwright 这类从外部驱动的工具
像素级还原、无障碍合规扫描、安全漏洞 各用各的专职工具

它自己不回避这个边界:仓库里写着看不到 IndexedDB、Web Worker、闭合的影子根节点和跨域内嵌框,也写着单步操作里的竞态只能部分覆盖。专门为「界面在撒谎」这一类毛病买的工具,不必拿它当万能测试框架。

结论

一句话判断:如果你每天都在让代理改前端代码、又反复被「它说好了其实没好」坑,这套东西值得放进观察清单,甚至值得今天就装到一个项目上试半天。 它抓不到的东西比它承诺的少,抓住的那些又恰好是别的工具结构性看不到的;再加上它敢公开撤回自己的漂亮数字,可信度够。

但别指望装上就自动生效。它需要你在应用里点明「哪些元素重要、哪个账本说了算」——这就是我标题里说的「先交账本」。你不交,它就退回成一个好用的体检工具;你交了,它才变成那个能对代理说「不行」的裁判。

仓库地址:https://github.com/reticlehq/reticle

关注 AI商业快讯,每天一篇 AI 热点深度解读。

相关阅读:

Fireworks 二次入侵:部分客户的模型权重被访问,首份公告曾称未受影响

Fireworks 二次入侵:1 万家客户的模型权重被访问,首份公告曾称数据集未受影响

10 月 24 日,一个拿到了第三方云服务商权限的攻击者,顺着这条路摸进了 Fireworks 的研发机器,在里面跑了一段未授权负载。11 月 9 日,Fireworks 更新安全公告:部分客户的不完整模型权重和数据集被访问了。

这句话之所以扎人,是因为一个多月前——10 月 9 日——同一家公司发的第一份公告里写得很清楚:没有发现客户模型、数据集、训练数据被访问的证据。

一个月后自己推翻自己,这是本次事件里最值得看的一段。

发生了什么:一起供应链入侵,接在旧伤上

先把时间线拉直。涉事公司是 Fireworks AI,CEO 是 Lin Qiao,做的是模型托管和微调(fine-tuning,也就是企业拿自己的私有数据把模型再训一遍):企业把私有数据拿过来,在上面训练专属模型再部署。据 RuntimeWire 报道,约 1 万家企业客户在用它。

  • 10 月 6 日:Fireworks 发现内部凭据被未授权使用,当天开始处置。这是一起独立事件。
  • 10 月 9 日:发首份公告。受影响的是「有限数量客户账户」里评测任务用到的环境变量(存着 API key、token 这类机密),并明确写了「未发现客户模型、数据集、训练数据、推理流量被访问」。
  • 10 月 23 日:托管 Fireworks 研发机器的第三方云服务商出事。
  • 10 月 24 日:攻击者借这个入口到达 Fireworks 开发机器,跑了未授权负载,造成新的客户数据影响。Fireworks 称当天就检测到并开始处置。
  • 11 月 9 日:更新公告,补上新发现的影响——账户与账单信息、部分客户的机密信息、数据集,以及不完整的模型权重。

也就是说,这是两次。第一次是自家凭据被偷,第二次是从上游供应商绕进来。Fireworks 在公告里的措辞是「数周内第二次已知的安全入侵」。

数字与一手细节:到底被摸走了什么

官方更新公告列得很克制,但逐条看并不轻松。

资源元数据:资源 ID、显示名称、描述、创建时间等。

账单信息:账单与收货地址、发票与付款记录、账户余额、额度消耗。支付卡号 Fireworks 不存储,因此不受影响——这是整段里唯一让人松口气的一句。

以及那句最要紧的:对「有限的一批账户」,机密信息、数据集、不完整的模型权重被访问。

这里的「不完整模型权重」需要解释一下。模型权重是模型训练完之后留下的那个大文件,是它全部能力的物理载体。所谓「不完整」,是说被拿到的是训练过程中的中间产物或片段,不是能直接跑起来的成品。但这仍然意味着:企业投喂给它的数据,以及用这些数据炼出来的东西,落到了外人手里。

另外两组数字来自攻击动机那一侧。Fireworks 判断攻击者与一个财务动机的网络犯罪团伙有关,目的是把窃取到的模型访问权转卖——业内叫 LLMJacking,即大模型劫持:偷走别人的云端密钥,用别人的账户额度跑自己的生意。Google 威胁情报组与 Mandiant 在 11 月 2 日发的报告给了量级:单起事件中,一天内的欺诈性资源消耗账单可以超过 10 万美元,累计有的组织在被掐断之前冲到过 100 万美元。注意这里的单位是账单金额,不是数据量。

报告里有个案例对比很说明问题:某团伙 8 小时内执行 50 万次 API 调用,把近 100 万美元的 token(模型计价的字数单位)成本转嫁给受害企业;而它对外卖的服务,包月大约 60 美元。正常市场价这个档位在 100 到 250 美元之间。差价从哪来,不言自明。

反转与对立:卖「私有数据」的生意,被摸到了数据

第一层反转在公告本身:10 月 9 日说模型和数据集没被碰,11 月 9 日说被碰了。这不是文字游戏,是调查范围扩大的结果——官方在更新里明确写「调查仍在进行,可能发现更多信息」。

第二层反转在商业模式上。Fireworks 卖的核心价值是:你的私有数据放在我这里,训练出你自己的专属模型。它卖的不是算力本身,是「数据交给我你放心」。这次被访问的恰好是数据集和不完整权重,正落在这个承诺的中心。

第三层是攻击路径的方向感。第一次是内部凭据泄露,说明自家门锁有问题;第二次是第三方云服务商被攻破后横向进来,说明门锁修好了,墙还是别人的。企业能管住自己的代码和密钥,管不住供应商自己的安全水平。这几乎是所有上云团队共同的处境。

也有值得给 Fireworks 记一笔的地方。它请了 Palo Alto Networks 的 Unit 42 做取证,处置动作列得很具体:吊销并替换凭据与服务账号、收回多余的高权限、限制未授权网络通路并隔离受影响系统、收紧数据存储与分析系统的访问、加固日志与监控。同时主动停掉了自助式的数据集上传与下载(Batch Inference 和基于数据集的训练都受影响),并声明推理服务(模型对外应答的那部分)、Training SDK、Nexus 三条默认零数据留存的产品线未受影响。

停掉一个能收钱的功能去查事故,这个取舍不好做,但做对了。

对读者意味着什么

如果你自己或所在团队用托管平台跑私有数据微调,这件事至少有三层提醒。

第一,托管平台的「隔离」是合同条款,不是物理事实。数据集和权重在对方机房里,你只能依赖对方的分区、权限和审计。一旦对方的上游出事,你的数据是否可及,取决于对方设计时的假设,不取决于你的意愿。

第二,出事之后的披露节奏,比出事本身更值得观察。第一次公告说没碰数据集,第二次改口说碰了。这在安全事件里很常见,初期调查天然不全。但对使用方来说,含义是:首份公告不要当最终结论,尤其涉及「哪些数据没被访问」这种否定性陈述时,要留出复查窗口。

第三,黑产的目标正在从「偷数据卖」转向「偷钥匙卖」。LLMJacking 的生意结构是:拿到云端身份凭据,开通或启用大模型服务,用你的账户跑别人的生意,账单记在你头上。这解释了为什么一次入侵能同时造成两类损失——数据外泄和天价账单。

我该做什么:一份能今天就动手的清单

不用恐慌,但要动手。按紧急程度排:

一,如果你有账号在 Fireworks,先查邮件。受影响客户会收到直接通知,里面点名需要轮换的具体凭据。注意官方那句提醒:把存着的密钥删掉不等于它失效,必须去签发方那里吊销。第三方凭据要去原始服务商那里办。

二,把「预算告警」当安全配置,不是财务配置。报告里那些 10 万美元一天的账单,几乎都是因为额度没有上限、也没人盯。给模型接口(API,程序调用模型的那条通道)设一个按天的硬上限,比事后查日志便宜得多。

三,盯住「验证型小请求」。攻击者拿到 key 之后,常用只花一个 token 的极小请求来试探有效性,这样不会触发流量异常告警。如果你的访问日志里出现大量极短请求的规律性扫描,那可能不是压测。

四,盘点你的上游。这次不是 Fireworks 自己被打穿,是它的云服务商被打穿。你的关键数据流经几家公司?每一家的安全承诺你还记得吗?答不上来,就是风险敞口。

五,涉及模型权重的项目,做一次暴露评估。哪怕只是「不完整」权重,也要按泄露处理——它可能包含训练数据的统计特征,甚至能被反推出部分样本。

最后一句判断:这不会是最后一起。当模型托管变成基础设施,它就成了和云厂商、代码托管平台同等级的攻击目标,而它的安全成熟度还普遍停在创业公司水平。选平台时,除了看价格和响应速度,也把「出事之后它怎么说话」放进评估项——这次 Fireworks 的处置算合格,但公告里那句自我推翻,本身就已经是代价。

—

参考来源

关注 AI 商业快讯,每天一篇 AI 热点深度解读。

相关阅读

notfair-plugin 评测:4133 Star 的营销技能包,45 个技能一行代码都没有

notfair-plugin 评测:4133 Star 的营销技能包,45 个技能一行代码都没有

用过 Claude Code 的人都有共同体验:装了一堆技能之后,真到用的时候,AI 反而不知道该拿哪个。技能越多,挑错的概率越高。

今天评测的 notfair-plugin 把一个反直觉的做法做到了极致。它是 4,133 Star 的开源营销技能包,45 个技能覆盖广告投放、站点审计、内容排期。我把它克隆下来逐个数了一遍:222 个文件里,代码文件是 0 个。

不是几行,是一个都没有。这在以「能干活」为卖点的技能包里,值得停下来看一眼。

它是什么:45 个技能,每个只有两行

先说结论。这个包卖的不是程序,是流程文档。

它要解决的问题很具体:让 AI 帮你投广告、查站点毛病,最怕它凭空编造。所以作者没写代码,而是写了 45 份操作手册,规定 AI 每一步该看什么、不许做什么。

层 作用 实测数字
技能入口 45 份 只做分流,告诉 AI 去读哪份手册 正文中位数 2 行
流程手册 45 份 承载全部判断规则 合计 5,314 行
测试用例 23 份 列出用户会怎么问、期望什么 每份 3 条

那 2 行是什么样子。我抽了其中一个,去掉配置头之后,正文只剩一句:

完整读取所属目录里的流程手册(也就是 WORKFLOW 那份文件),然后把它当作当前流程执行。

45 个技能,45 份入口,全部只有这两行。 也就是说,AI 先看一段很短的介绍挑准技能,再去读那本厚手册。

这个拆法有道理。打个比方,像医院的分诊台:挂号窗口不负责看病,它只判断你该去哪个科室。真正的诊疗写在科室里,越细越好。把两件事混在一起,AI 每次都要读满四百行才知道该干什么。

实测:昨天它把最后一行代码删了

这是本次最值得写的部分。

我把 433 次提交的完整历史拉下来对比。上一个版本里还有 53 个脚本,一共 11,545 行,负责抓页面、读搜索后台数据、跑断链检查。今天的最新版里,这些文件一个不剩。

一次性提交的账单是这样的:

指标 数值 意味着什么
改动文件 202 个 接近整仓翻新一遍
新增行 418 行 主要是改文档措辞
删除行 16,990 行 删掉的都是真能跑的程序
剩下代码 0 行 仓库退回纯文档状态

同一天里,5 个版本连着发。这个节奏说明作者在赶一个截止时间,后来在更新日志里找到了答案:为了通过某家应用商店的审核。

那功能去哪了。搬到了云上。仓库现在只留一个连接地址,指向作者自己运营的服务。我直接请求了一次,没带凭证,返回的是「请先授权登录」。

这句话是整篇评测的关键:你克隆到的是说明书,真正干活的部分在别人的服务器上。

它的好,和它的贵

先说好的,而且都是实测出来的。

我把仓库里 115 个文档之间的相互引用全跑了一遍,断链 0 个。这个数字看着平淡,但 45 份手册、五千多行、彼此穿插引用,一处没接错。它说明有人在维护,不是生成完就扔。

第二个好东西是安全边界写得实在。付费广告那部分手册明确规定:任何增加花费、启用广告、改预算改出价的动作,都必须先拿到用户明确的同意;新建广告一律设成暂停;每次改完要把结果读回来复核。

这段话管的是钱。让 AI 碰广告账户,最坏情况是一次误操作烧掉一天预算。它把「先问一句」写成了硬规矩,不是建议。

不好的一面也要说清楚。

第一,能力被锁在服务后面。想用它的站点审计、广告分析,绕不开那个登录授权。开源在这里的含义是流程开源,不是能力开源。这个区别在宣传语里没有区分。

第二,45 个技能里有一批是空壳。亚马逊广告和 ChatGPT 广告那两份,正文里自己写明「我们没有这两个平台的接口」,所以只能出方案、不能真执行。名字看着像功能,其实是提示词模板。

第三,判别力全看宿主。45 份入口的自我介绍平均 480 个字符,最长的超过一千个字符。AI 要从这么长的介绍里挑对技能,挑错并不奇怪。作者显然知道这点,所以几乎每份介绍结尾都加了一句「这个场景不要用我,去用某某」。

谁该装,谁别碰

如果你自己投广告、管站点,又已经在用 Claude Code 这类工具,值得装。它对「AI 别乱动我的钱」这件事想得比大多数同类细,光那几页审批规则就够抄一份。

如果你要的是一个本地、不联网、不授权就能跑的工具,别碰。它现在一行代码都没有,断网之后只剩一堆文档。

同类里还有另一条路,装聚合型技能库:什么都有,但每样都浅。这个包相反,深度够,面窄,而且有一部分能力要授权才能碰。

还有一个现实的门槛:它对中文不友好。45 份手册全是英文,规则写得细,但中文用户要读进去,还得先过语言这一关。这是它进国内项目时绕不开的成本。

最后一句

4,133 个 Star 投的其实是作者的行业经验,不是代码。这不算是骗人,但它确实标志着一类新项目出现:仓库只是目录,资产在服务端。

判断很简单。把它当「拿不到源码的付费服务的说明书」来预期,你不会失望;把它当开源工具来预期,第一天就会踩坑。

关注 AI商业快讯,每天一篇 AI 热点深度解读。

pstack-claude 深度评测:4,179 星的多工具技能栈,2154 个测试全绿,13 个运行环境只有 1 个进 CI

pstack-claude 深度评测:4,179 星的多工具技能栈,2154 个测试全绿,13 个运行环境只有 1 个进 CI

装过 Claude Code 这类编码助手的人,多半都干过同一件事:往里面塞一堆”技能”,指望它按你的规矩干活。可你很少知道这些技能到底在哪些工具上真的被跑过。

今天要评的 pstack-claude 正面回答了这个问题,答案是它自己写的:它一口气支持 13 个运行环境——Claude Code、Codex、Copilot、Pi、Muse 等等——但官方文档里,7 个环境自己标着”没验证”。它的持续集成(也就是每次改代码自动跑的那套检查)里,13 个环境只真正装过 1 个。

这个项目 4,179 星、MIT 许可,11 月 9 日当天还在提交代码。我把整个仓库拉下来,按它自己文档写的步骤装依赖、跑测试,2154 个测试全绿、0 失败。这一篇讲的不是”它好不好用”,而是它把哪些事验证了、哪些事只是写在了文档里。

它到底是什么

一句话:把一套给 AI 编码助手用的”操作手册”,翻译成 13 个不同工具都能读的格式。

原作者 Lauren Tan 在 Cursor 里写了一套技能(skill)。你可以把技能理解成一份份写好的工作流程,比如”改代码前先读哪些文件””提交前必须跑什么检查”。pstack-claude 把这一套搬到了别的工具上,还为每套工具各写一份翻译说明,告诉 AI 在这个工具里对应的按钮和模型叫什么。

它的体量:

部分 数量 说明
技能 67 个目录,3,076 行 其中 43 个是可用流程,24 个是一条条的”原则”
参考文档 168 个文件,7,137 行 翻译说明、模型对照表
测试 46 个文件,9,775 行 比技能正文本身多 37%
全仓 782 个文件 版本号 0.9.133

它对上游的态度也值得说一句:仓库里有一份清单,记着上游的三个来源各固定在哪个代码版本;还有一份 65 条的分叉登记表,每条都写了为什么改、从哪个版本开始改、有没有提给上游。这套记账方式,比大多数魔改版项目认真得多。

实测:我自己跑了一遍,也自己数了一遍

第一条证据,测试是真的能跑通的。我按它贡献指南里写的四步做完(装根依赖、装插件依赖、跑生成器、跑测试),结果是 2154 个测试通过、174 个跳过、0 失败,耗时 52 秒。

这里有个坑值得先说:我第一次只装了根依赖就跑,20 个测试挂了。原因不是项目坏了。它有个测试专门检查”在根目录裸跑测试,加载的文件必须和 CI 跑的一致”,而缺了插件目录那份依赖,两次加载的文件数就对不上。补上那一步,全绿。这个设计其实挺聪明:它把”你少装了一步”变成了一个会失败的测试。

第二条证据,13 个运行环境,证据密度差得很远。这是全篇的核心。我把它文档里对每个环境的说法逐条抄出来分类:

证据强度 运行环境 具体是什么
真装 CLI、进 CI Pi 唯一一个 CI 里真的装了它的包(固定在 1.1.0)并跑检查
人工冒烟(不在 CI) Copilot、MiniMax、Grok 有专门的冒烟脚本,但 CI 从不跑
合成环境验证 OMP、Kimi、OpenCode 2 用一个假的模型服务验证”文件递到了”,真模型行为没测
文档自认未验证 Antigravity、Prime Agent、Gemini CLI 只写了安装路径,没写验证结果
纯描述安装方式 Codex、Muse、Claude Code 文档只给安装命令,没有验证结论

这个数字意味着什么:一个口号是”支持 13 个环境”的项目,实际被自动化验证过的只有 1 个。这不是虚假宣传,文档老实到了极点,甚至主动写”CI 不跑它””真模型行为仍未测试”。但它说明一件事:跨环境适配的成本,远远高于写一份翻译文档的成本。

第三条证据,三个冒烟脚本合计 611 行,CI 里 0 个在跑。其中 Copilot 那个 471 行,脚本开头就写明要验证 7 件事,包括钩子只触发一次、关掉开关后确实不触发,以及”一次要花掉大约 20 次高级请求额度”。这句话也解释了它为什么不在 CI 跑,它要真钱。文档里那句”CI 不跑它”,是诚实,也是缺口。

另一面:它的工程质量确实高于平均

挑完毛病,得说公道话。

它的生成器设计是我近期见过最讲究的之一:版本号、模型清单、各种清单表,全都从单一来源自动写入所有副本,CI 会检查提交上去的副本有没有过期。它还专门写了测试,去核对 README 里写的那几个数字(67 个技能、43 个公开技能、24 条原则)是不是和目录实际数量一致。换句话说,它连文档里的数字都当成会被自动化检查的契约。

它还有一条测试专门抓”技能之间互相点名、但点到的目录不存在”这类断链。这类问题在纯文档项目里几乎没人管,因为编译器看不见。

局限也很明确:技能本身是写给 AI 读的指令,好不好用取决于你用的那个模型听不听话。它把 13 个环境的翻译做得很细,但翻译对了和模型照着做了是两件事,而后者目前只有 Pi 有自动化证据。

放进坐标系里看

站内评过的几篇可以对照着看:deepagents 走的是给 Agent 搭框架,判断标准是测试条数和依赖清单能不能照装;SkillOpt 走的是把技能文档当成可训练参数,亮点是把覆盖率算成了具体数字。pstack-claude 的独特之处在于,它是分发层:把同一套方法翻译到十几个工具上,并老老实实标注每个工具被验证到了哪一步。

适合谁:同时用两三个编码助手、希望行为一致的团队;想给自己团队的提示词立规矩、又不想为每个工具重写一遍的人。

不适合谁:只用单一工具的个人,收益很小;以及需要承诺级稳定的场景。如果你的工作流依赖某个环境百分之百按预期工作,先去看它文档里那个环境是不是还标着未验证。

我的判断

值得放进观察清单,并且它的文档诚实度值得单独表扬。但要清楚它在卖什么:它卖的是翻译,不是保证。13 个环境里真正被自动化验证的只有 1 个,剩下的是用人工、合成环境或纯文档兜着,而它自己把这一点写在了明处。

如果你打算用它,建议先翻它的运行环境对照表,确认你用的那个环境落在哪一档证据上,再决定要不要把关键流程交给它。

关注 AI商业快讯,每天一篇 AI 热点深度解读。想先看同类工程质量的,可以翻我们评过的 deepagents 和 SkillOpt。

OpenMuse 深度评测:6.3k Star 的个人 Agent 应用,520 个测试全绿却 0 个正式版本,官方正把用户让给 OpenBot

OpenMuse 深度评测:6.3k Star 的个人 Agent 应用,520 个测试全绿却 0 个正式版本,官方正把用户让给 OpenBot

你想给 AI 配一台自己的电脑:能开浏览器、能敲命令、能读写文件,关机之后活儿还在跑。这类项目今年多得数不清,但真把代码拉下来跑一遍,十有八九卡在第一步——装不上、起不来、文档说的和代码里的对不上。CopilotKit 开源的 OpenMuse 是少数反过来的:我把仓库整个拷进沙箱,装依赖、跑检查、跑测试、起服务,520 个测试用例一个不挂,0 个失败。但同一份代码里,官方自己开了两个待合并的改动请求,要把读者劝去另一个项目。测试越绿,这件事越难看懂。

一、它是什么:一个自己带服务器的「个人 Agent 应用」

先说人话。OpenMuse(取名自「缪斯」)是一个开箱即用的个人助理应用,2026 年 9 月 15 日开源,MIT 协议,6,361 个星标。它不是你手机里那种只会聊天的助手,而是给助手配了一套「手和眼」:

  • 一个浏览器,可以持久登录、读公开网页、截图,还能让你接管正在跑的那个页面;
  • 一个可选的 Linux 终端,跑在独立容器里,能建文件、改文件、导入导出 PDF,但断网;
  • 一套后台任务,任务有计划、有检查点、可暂停、可取消,进程重启用数据库租约(也就是给任务发一张带过期时间的「占位凭证」,谁先抢到谁干活)把中断的活儿捡回来。

界面上是 iOS、Android、网页三端共用一套代码,底层用 CopilotKit 与 AG-UI(一套让前端和后端 Agent 说同一种话的协议)对接模型。

拆开看,仓库是 231 个受版本控制的文件、38,356 行 TypeScript。重心分布很诚实:

目录 位置与规模 干什么
apps/server 9,307 行 接口层、Agent 运行时、任务引擎、动作审计、存储
apps/mobile 10,281 行 iOS / Android / 网页三端界面
apps/worker 1,518 行 独立的浏览器服务,带持久化登录配置
apps/computer 371 行 非 root 的 Linux 容器镜像与文件助手
tests 52 个文件、14,733 行 行为测试,行数与核心代码几乎一比一

一个细节值得停一下:packages 目录下的三个文件夹(共享类型、集成适配、外部后端),看着像三个公共包,实际一个包声明文件都没有,也不在工作区清单里。服务端是靠相对路径直接引到对方源码的,比如从 apps/server 往上三层跳进 packages/domain/src。好处是不用给每个包配构建流程,改一行立刻生效;代价是 README 目录表里那句「共享类型包」听着像个能单独安装的东西,其实不能。

二、怎么做到的:把「AI 干活」拆成可审计的零件

这个项目的设计取舍,读代码比读文档清楚。有三处我认为是真功夫:

第一,外部动作和模型推理是分开的。发邮件、改日历这类真会碰到外部世界的操作,不走模型直接调用,而是先存成一条「动作提案」,带归属人、内容哈希、版本号,等你点确认才发。代码注释里写明「外部写操作绝不在这里重试」,因为重试一次就等于多发一封邮件。

第二,模型供应商是可换的零件。一个模型字符串、三家供应商(OpenAI、Anthropic、Google)各一套适配,还能切到兼容接口。上游明确写了哪些情况会重试、哪些 4xx 一次就失败——这类边界写在代码里而不是藏起来,是可维护的表现。

第三,后台任务有真正的失败语义。任务引擎里有一个专门的「租约丢失」错误类型,任务被暂停、取消或被别的进程抢走时会抛出来,让执行体干净退出,而不是写一半留下垃圾。它甚至有专门的测试文件去压这条路径。

三、实证:我跑出来的数字(一台受限沙箱,2026-11-09)

全部命令都在一次性沙箱里跑,没有碰生产目录,测试数据一条没编。先说结论:这个仓库的工程质量,是我今年跑的同类项目里最整齐的一档。

我跑的命令 结果 这个数字意味着什么
装依赖(按锁定文件严格安装) 1,410 个包,9.8 秒 依赖树干净,没有版本漂移
代码风格与静态检查 177 个文件,0 报错 只有一条提示:检查器配置版本比工具落后一个小版本
类型检查(服务端 + 移动端) 通过 严格模式下无类型错误
类型检查(浏览器服务) 通过 独立子目录也守住了
构建服务端 通过,产物 1.1 MB 能出可部署的 JS
60 个测试文件逐个跑 520 通过 / 0 失败 / 0 跳过 覆盖接口、任务引擎、集成、容器、浏览器、财务
一条命令跑全量测试 崩了 见下段,原因不在代码

最后两行必须放在一起看,否则会得出错误结论。仓库的测试脚本把 60 个文件一次全交给测试器并行跑;在我这台内存与进程数都受限的机器上,每个文件都要拉起一个编译子进程,跑到第八个左右就开始报「工作线程初始化失败」「线程创建:资源暂时不可用」——资源不够,不是测试写坏了。我把文件拆成一个一个串行跑,520 个用例全绿、零失败、零跳过,最慢的一个文件 14 秒。所以我给的口径是:逐文件跑全绿,一条命令跑需要一台不被限流的机器。这一点值得记住,它的持续集成配置跑在标准运行器上,那边没这个问题。

再往下是起服务,这里撞上了一个真实门槛。照文档把示例配置复制成正式配置,直接启动,进程立刻退出,报错只有一句:缺少 CopilotKit 的对话存储密钥。

这是 CopilotKit 自家托管对话存储(名叫 Intelligence)的密钥,要先登录它的命令行工具、选一个项目才发得出来。我塞了一个假密钥再启动,服务正常拉起,健康检查返回 {"ok":true,"mode":"sample","agentConfigured":true},未登录取接口返回 401——鉴权边界是真的,不是摆设。

问题在文档这层。README 开头写「兼容任何 Agent 编排外壳」(原文 Compatible with any agent harness,harness 也就是跑 Agent 的那层外壳),后面又有一处说这套托管存储「需要自己配置」。而代码里这个密钥是无条件必填的:读取配置的函数直接调必填校验,没有分支。这不是我一个人的发现,仓库里有个 2026-09-26 的 issue 就是提这个,标题直白——「让对话存储对自托管部署变成可选」,正文还贴了改动历史:先是一次提交把它设成线上必填,再一次把要求扩展到所有模式,并删掉了跳过它的分支。另有一位开发者干脆自己分叉了一个「不需要密钥」的版本发出来。

四、坐标:它站在哪,官方又想让它去哪

放进同类里看。CowAgent 那类国产 Agent 编排框架(也就是把多个步骤串起来调度的那层),考的是「能不能把复杂任务串起来」,我上次实测它 421 个测试文件跑两遍数字不同;OpenMuse 反过来,520 个用例逐个跑完全一致,但它考的不是编排能力,是「一个人用」的完整度——登录、邮件、日历、文档、财务、浏览记录,全在一个应用里。hermes-jev-skills 那篇测的是决策引擎,重点是「模型怎么选」,OpenMuse 的重点是「选了之后谁来兜底」:动作审计、租约、断点恢复。三个项目其实回答三个不同问题。

真正的反差在官方态度。仓库现在有 42 个分支、32 位贡献者,零个正式版本、零个版本标签,更新日志只有一条「0.1.0-alpha」。而 11 月 2 日和 11 月 4 日连开两个待合并的改动请求,说得很清楚:OpenMuse 现在是另一个项目 OpenBot 的一个「皮肤」,那个项目才是 CopilotKit 持续维护、带登录、带每个机器人权限、带审计轨迹的版本;这个仓库转为社区维护的起点模板。

这解释了我实测到的很多东西:为什么星数六千多却一个版本都不发,为什么 61 个待处理里 46 个是改动请求、真正的问题只有 15 个,为什么 README 里「可选」和代码里「必填」能同时存在——它正在从「产品」变成「样板间」。

五、结论:值得拷,别指望拿来就用

值得拷: 如果你想要一个「个人 Agent 应用」的完整参考实现,这是目前最整齐的开源样本之一。三个应用分工清楚,测试与代码接近一比一,动作审计、任务租约、容器隔离这些容易糊弄的地方它都写了专门的测试。拿它当骨架改,比自己从零搭省几周。

别指望: 一是别指望装完就跑。没有 CopilotKit 的密钥,服务连启动都做不到,这一点文档说得比代码含糊。二是别指望拿到稳定版本或升级路径,一个版本标签都没有。三是别按开头那句「兼容任何 Agent 编排外壳」去理解——它确实能接外部 Agent 端点,但主路径绑定的是自家运行时。

如果只想体验:等 OpenBot 那条路更省事,官方改动请求里写的迁移表就是给这个用的。如果想改代码:现在就拷这个仓库,趁它还是「纯应用」而不是「皮肤」,改动半径最小。

局限说明:本次实测在一台内存与进程数受限的沙箱里完成,全量测试的并行方式没跑通,只拿到逐文件串行结果;浏览器与 Docker 容器的两个真机冒烟测试需要 Chromium 与 Docker 守护进程,我没跑,它们在持续集成里是独立任务;模型侧只用了假密钥验证启动与鉴权,没有接真实模型跑对话。数据取自 2026-11-09 的仓库快照,主分支最后一次提交是 2026-10-26。

相关阅读:hermes-jev-skills 深度评测:823 Star 的 Jev 决策引擎,1020 个测试全绿、6 个基准我复现 5 个;CowAgent 深度评测:4.7 万 Star 的国产 Agent Harness,421 个测试文件我跑两遍数字不同

关注 AI商业快讯,每天一篇 AI 热点深度解读。

a-stock-data 深度评测:11,557 Star 的 A 股数据技能,212 条测试 7.5 秒全绿,4 个端点在海外连不上

a-stock-data 深度评测:11,557 Star 的 A 股数据技能,212 条测试 7.5 秒全绿,4 个端点在海外连不上

让 AI 帮你查一只 A 股,最容易翻车的不是模型算错,而是它压根拿不到数。

你要的「茅台现在多少倍市盈率」,藏在腾讯一段用波浪线隔开的旧式中文编码文本里;研报 PDF 要带对来源页的请求头才肯给;涨停池换了三个域名;北向资金要算一个本地签名。每接一个源就换一套暗号,最后还是自己在写爬虫。

a-stock-data 想把这堆暗号一次打包:一个 Markdown 文件,里面内嵌 91 段可以直接跑的 Python,15 层数据、87 个入口、34 个数据源,除语义搜索外全部免钥匙。我在隔离沙箱里 clone 下来,跑了它自带的 212 条测试,又逐个调了十几类真实接口。结论先给:能用的接口确实快,快到 1 秒出数;但它在海外网络下有 4 个端点直接不可用,而且这个 44 万字节的文件本身是它最大的成本。

它到底是什么

先把话说清楚:这不是一个可以 import 的库,也不是 pip 安装的包。

它是一个技能说明书(skill,指写给 AI 编程助手看的操作手册):根目录一个 SKILL.md,正文讲清楚每类数据该去哪个源、用哪个参数,每讲完一类就附一段完整可运行的 Python。说白了,它不是让你装的东西,是让 AI 照着抄的菜谱。AI 读到哪一段,就把那段代码抄进自己的脚本里执行。

这种形态的好处很实在:拷贝一个文件就能用,不联网装包,不依赖版本升级。坏处同样实在,后面实测部分会算给你看。

数据按十五层组织,你可以理解成十五个抽屉:

层 抽屉里有什么 主用来源
1 行情 实时价/市盈率/市值/换手率、日周月与分钟 K 线、当日逐笔、复权因子 腾讯、通达信官网、百度、新浪
2 研报 个股与行业研报、PDF 下载、三年盈利预测、研报列表 东财、新浪、同花顺
3 信号 强势股与题材归因、北向资金、龙虎榜、解禁、板块资金流 同花顺、东财
4 资金面 融资融券、大宗交易、股东户数、分红、筹码分布、场内指数基金份额 东财、上交所、深交所
5 新闻 个股新闻、财联社电报、7×24 快讯、新闻联播文字稿 财联社、东财、央视网
6 基础数据 财报三表、估值历史、上市退市日、行业变迁、ST 名单 新浪、baostock、申万
7–10 公告、涨停池、指数基金期权、互动问答与热榜 巨潮、东财、同花顺、上交所
11–12 社融、PMI、国债收益率曲线、LPR、指数成分与交易日历 人行、统计局、中债、深交所
13–15 期货与大宗、业绩预告与增减持、可转债 五家期交所、东财

作者在文档最前面写了一条设计原则,我觉得是这份文件里最值钱的部分:能用腾讯和交易所官方,就别用东财。

原因不复杂。东财(东方财富)的接口好用但共用一套风控,同一台机器请求太快会成片失联,恢复要等半小时以上;腾讯行情和交易所官网基本不限速。所以文件里给所有东财请求都套了一个统一入口,强制串行、每次至少间隔一秒再加随机抖动,附赠连接复用。我在沙箱里连着发了 12 次东财请求,21.4 秒全部成功,一次没被拦——这条限流是真生效的,不是文档里写写而已。

实测:13 类接口真实取数

测试环境是隔离沙箱(一次性的运行目录,跑完即删),独立虚拟环境装了它自带的依赖,2026 年 11 月 6 日晚间实测。

它自带的测试套件一共 212 条,我原样跑了一遍:

项目 结果
用例数 212 条
耗时 7.5 秒
结果 全部通过,4 条按设计跳过(联网用例需手动开环境变量)
覆盖方式 直接抽取说明书里的代码执行,另有本地存好的真实响应做对照

这个细节值得说一句。它不是另写一套实现再测试,而是从说明书的代码块里按函数名抽出来跑。换句话说,文档里印的代码和被测的代码是同一份,不会出现「文档里的示例早就跑不通了」那种典型失修。91 个代码块我单独做了一次语法检查,全部通过。

然后是真实取数。13 类接口,逐个记录耗时和拿到的量:

接口用途 实测耗时 拿到什么
实时行情(4 只:茅台、平安银行、上证指数、胜宏科技) 0.85 秒 价格、市盈率、换手率齐全
日 K 线(茅台 5 根) 1.15 秒 开高低收量,带来源链接与取数时间
分钟 K 线(1 分钟 3 根) 1.35 秒 含换手率
当日逐笔成交(茅台) 20.3 秒 4,282 笔
个股研报(东财) 1.1 秒 100 篇
研报列表(新浪,第二来源) 1.9 秒 39 篇
东财数据中心(连发 12 次) 21.4 秒 12 次全成功
LPR 全历史 6.9 秒 1,539 行
可转债条款与溢价率 12.2 秒 318 只
全球宏观日历 4.5 秒 236 条
国债与信用债收益率曲线 2.4 秒 66 行
官方交易日历(2026 年 11 月) 1.0 秒 30 个交易日
估值历史(baostock,一个免注册的行情数据库) 5.0 秒 21 行,含市盈率、市净率、换手率、停牌与 ST 标记
财联社电报 0.87 秒 5 条

数字之外还有两件事被我特意验了。

一是两个源对不对得上。实时行情和日 K 线来自腾讯的两个不同接口,我用茅台、平安银行、胜宏科技、沪深 300 指数基金四只对照,收盘价逐位相同,4 比 4 一致。这意味着你可以放心用日 K 线补历史、用实时快照补当下,不会出现两套价格打架。

二是最近一次的修复是否真的落地。仓库最新版 v3.10.4 说修了基金复权(复权就是把分红和折算带来的价格跳空拉平,让历史曲线可比):场内基金原来只读了折算比例里的一个字段,导致复权等于没做。我拿沪深 300 的一只场内基金(代码 513100)验证,读到的份额折算比例是 5,折算前的价格 1.0 被正确换算成 0.2。修的是真的。

失败面:4 个端点在海外网络下不可用

这是我认为评测里最该讲的部分,因为它直接决定你能不能用。

同样在沙箱里、同样的网络,有 4 个入口直接失败:

接口用途 实测表现
全市场当日日线(通达信官网盘后包) 10.2 秒后连接超时,服务器不可达
申万行业变迁史 60.3 秒后连接超时,服务器不可达
通达信财务快照与 F10 文字(走 7709 端口的二进制协议) 列出的服务器全部连不上
上证 e 互动问答 请求跑完 20.7 秒,返回 0 条,不报错

前三个是同一个原因:这些站点的服务器在境内,海外出口过去连不上。文档里其实主动写了这一点,通达信那一段的报错文案就是「海外网络通常全部超时,请走国内代理」。所以这不算骗人,但它决定了这套东西的适用边界——你的机器如果在境外云上,第 1、6 层的若干入口先天残废。

第四个更值得警惕。它不超时、不报错,只是安静地返回空表。这类失败最容易被误读成「今天没人提问」。文件作者显然知道这个坑,因为他在别处专门加了一条纪律:认不出时间格式时要抛错,不能悄悄变成一列空值。但这条纪律没覆盖到网络层的空结果,我这次就撞上了。

还有两处不那么严重的翻车点,一并记下:

  • 说明书里有些段落依赖前面的公共辅助函数。我统计了 69 个含函数定义的代码块,只有 13 个(19%)能独立运行,另外 56 个必须先执行文件里更早的公共部分,中位数缺 2 个函数、最多缺 10 个。给 AI 的说法是「按表定位只读对应层」,可实际抄代码时,你得连辅助段一起抄。
  • 一部分能力锁在可选依赖里。我按文档只装了最基础的两个包,测试直接报了 14 个错误,全是因为缺一个读写表格文件的库。补装之后才全绿。

代价:11.8 万 token 的说明书

说完能力,必须算成本账,因为这份文件是每次都要塞进 AI 上下文的东西(上下文即模型一次能记住的内容上限)。

指标 实测值
文件体积 442,341 字节
行数 7,703 行
内嵌 Python 段 91 段、5,949 行代码,占全文 77%
估算 token 约 11.8 万
版本数 29 个(从 v1.0 到 v3.10.4)

11.8 万 token 是什么概念?主流编码助手一次能装 20 万上下,这一份文件就吃掉一半以上,剩下的空间还得留给你的项目代码和对话。作者自己也知道,FAQ 里直说了这是有意的产品决策:为了「拷一个文件就能用」,不做目录拆分。

他给的两个降耗办法是实在的:一是把触发条件收窄,不需要取数的话题不会误加载;二是不装成自动触发的技能,需要时让 AI 按需读某一层。第二个办法我认,但要配合上面那条「辅助函数不独立」的发现一起用——按需读一层,往往还得再往前翻一段公共代码。

好在补救手段是现成的:顶层有一张按章节定位的总表,89 行,约 2,500 token。让 AI 先读这张表、再精确读某一层,才是这份文件最省的用法。单看某一层,大多数在 1,000 到 16,000 token 之间。

跟同类比,适合谁

A 股数据的免费方案,常见的有三类:一类是靠 pip 安装的封装库(典型是 akshare 与 tushare 这种聚合成一个包的),一类是券商的付费数据接口,一类是这类「给 AI 读的说明书」。

  • 封装库:安装即用、函数齐全,但版本一升就断,而且 AI 得先学会这套库的 API。断源的时候你只能等作者更新。
  • 券商接口:稳定、口径权威,但门槛在开户和权限,个人开发者基本拿不到。
  • 这份说明书:底层请求地址和参数完全裸露,断了你能自己改;代价是文件大、入口多、得自己判断该读哪段。

适合谁:想让 AI 助手直接查 A 股数据的人;做研究脚本、需要多源交叉验证的人;机器在境内、能用上官网包与通达信协议的人。

不适合谁:只想导入一个包、写一句取数的;机器在境外云上、需要第 1 层全市场日线和第 6 层财务快照的;上下文预算紧张、又不想手动管加载范围的。

判断

给它一个明确的定位:这是一份工程质量明显高于同类的说明书,但「一份文件解决所有需求」的形态,把成本从安装阶段一次性挪到了每次对话里。

值得肯定的部分很硬:212 条测试 7.5 秒全绿,且测的就是文档里印的代码;13 类接口在 1 到 20 秒内真实出数;两套价格源逐位一致;基金复权这类细账修得动;东财限流实测有效。它 179 天里发了 29 个版本、2 天前还在推送,维护节奏是真的。

要留心的部分同样具体:4 个入口在海外网络下不可用,其中「上证 e 互动」会静默返回空表;81% 的代码块离开前置辅助函数跑不动;补装可选依赖之前,测试会当场报 14 个错。

我的用法建议是三条:装上但不设自动触发;每次先让它读顶层那张定位表;国内机器优先,境外机器把第 1、6 层里依赖境内官网和通达信协议的入口当成「没有」。

相关阅读:本站此前评测过 同花顺金融数据接口(仓库已 404,但 55 个工具仍在线),以及 riskbound 仓位规则工具——同样是「测试全绿但结论要看口径」的例子。

关注 AI商业快讯,每天一篇 AI 热点深度解读。

—

资料来源:项目主页 https://github.com/simonlin1212/a-stock-data(Apache-2.0,星数 11,557,2026-11-06 读取);版本历史与端点清单来自仓库的版本日志与技能文件;其余耗时、行数、通过数与失败面均为本机沙箱实测。

Anthropic 向企业客户发出数据访问通知:第三方安全公司曾进入内部系统,通知只列 5 个字段,事发 10 天后才发出

Anthropic 向企业客户发出数据访问通知:第三方安全公司曾进入内部系统,通知只列 5 个字段,事发 10 天后才发出

11 月 7 日,一批正在用 Claude 的企业陆续收到一封邮件,标题是《关于贵组织账户信息的通知》,发件人是 Claude 官方的邮件地址。内容很短:一家第三方网络安全研究公司,未经授权访问了你们的账户信息。

它没说这家公司叫什么,没说涉事的有几家,也没说具体哪一天发生的。邮件里给了明确去向的只有两处,一个隐私邮箱,和一句「我们已向韩国相关监管机构报告」。

收到邮件的安全研究员 Jamieson O’Reilly 当天把三张截图发到 X 上,一天内拿到 1000 多个赞。他的追问很直接:既然说「无法确认具体某个人的信息是否被查看」,怎么同时又能说收件人「没有额外风险」。

通知里到底写了什么

先把邮件本身的字段清单摆出来,这是唯一没被转述的硬信息。

覆盖所有人的是姓名、邮箱这类业务联系信息。覆盖企业版 Claude 账户的还有另一组:账号 ID、组织 ID、套餐档位、用量与支出指标。

明确不在范围内的有三样:与 Claude 的对话内容、密码、银行卡与银行账户信息。

Anthropic 在通知里说自己做了四件事。发现后立即切断那家公司的访问权限,修复已定位的漏洞,启动调查,并确认没有证据表明数据被篡改或滥用。那家公司已经书面承诺删除取走的数据、不再使用。事件已上报韩国监管。

注意这组字段的性质:名单不大,所以它不是「几百万用户密码泄露」那种恶性事故;但套餐档位加用量加支出,恰好是钓鱼邮件最想要的开场白。一封写着「您的 Claude 企业版本月支出超出预算 38%,请核对账单」的邮件,会比任何群发诈骗都像真的。

那份通知大概率在说十天前那件事

邮件本身没点名。但字段清单和 10 月 26 日的一起报道几乎逐条对得上。

被指的是一家叫 Cathedral 的网络安全公司,四名创始人都来自美国政府效率部(DOGE),今年刚成立,A 轮拿了 1.6 亿美元,估值 14 亿美元,领投的是 Andreessen Horowitz 和红杉。它做的是「用 AI 智能体自动打点」,让模型自己找漏洞、自己串联攻击步骤,不需要人一步步批准。

按 Cathedral 的草稿报告,它的智能体在不到 12 小时里,从 Anthropic 使用的第三方销售、人事、IT 软件里找到了入口。Anthropic 确认访问确实发生,说范围限于「有限的一组销售、人事和 IT 系统」,含部分客户与合作伙伴的业务联系方式和基础账户记录;对话内容、源代码、模型权重都没有被碰。Anthropic 还补了一句,是自家监控在对方上报之前就发现了部分活动,当天就切断了访问。

分歧在深度上。Cathedral 的草稿报告描述智能体能触及会议记录、薪资与录用细节、Slack 消息;Anthropic 的说法窄得多,只承认业务联系人与基础账户记录。前 OpenAI 员工 Will Depue 公开说 Anthropic 在淡化,称自己可靠的信源告诉他,Cathedral 拿到了 Slack 工作区的完整管理员权限,能读所有消息、能登录任何账户。Anthropic 红队成员 Logan Graham 直接反驳,说 Depue 的信源是错的,但承认核心担忧成立:这个行业每年都得重新做一遍安全。

还有一层是程序上的。这事发生在 Anthropic 自己的漏洞赏金计划框架内,Anthropic 的指控是 Cathedral 没有完整披露:它在第三方软件里找到两个漏洞,只上报了一个,第二个是 Anthropic 自己发现并修补的。Cathedral 坚持说自己遵守了标准的安全研究做法。

所以你看到的那封「出于谨慎」的通知,本质上是一次善后:事情 10 月底已被媒体报过,11 月 7 日才轮到逐个通知客户。截至 11 月 8 日凌晨,Anthropic 官网安全栏目里没有任何一条关于这件事的公告,状态页也没有记录。

三个跟你有关系的地方

第一,防线在你采购的软件里,不在你自己的代码里。 按 Anthropic 的说法,Cathedral 先花了好几天硬啃 Anthropic 自家系统,没成功;转向那批日常办公用的第三方在线服务之后,12 小时就进去了。说白了,任何一家公司只要用着十来种外部服务,就有同样的缝。Anthropic 是市值最高、也最以安全为卖点的 AI 公司之一,它挡不住的东西,不会只发生在它身上。

第二,智能体把「扫漏洞」的成本压到了接近零。 过去一次像样的渗透测试要排期、要人天、要预算;现在同一套智能体可以 24 小时不停地试,而且用的模型不需要是最新最强的。Graham 自己的说法是,落后半代到一代的模型就够干这件事。

第三,通知把决定权丢回给了客户。 邮件原文写的是「出于谨慎,供贵组织自行决定是否通知相关人员」。也就是说,我们不确定谁的信息被看到了,你们自己判断要不要告诉员工。对一家把合规当命的企业客户来说,这等于多了一道要自己背的责任。

如果你是那批客户,或者只是普通用户

三条能立刻做的。

去查有没有收到那封邮件。标题是《关于贵组织账户信息的通知》,发件地址以 claude.com 结尾。收到了,直接回 [email protected] 问清楚三件事:我们组织的记录在不在受影响范围内、覆盖哪段时间、涉及哪些账号。这三个问题邮件里都没有答案。

把钓鱼警觉调高一档。泄露字段里有套餐档位、用量和支出,意味着未来冒充 Anthropic 的邮件可以说出你的真实账单规模。凡是带账单、超额、停服字样的邮件,一律从后台进,不点邮件里的链接。

顺手清一遍自家外部服务的权限。离职员工还留着的账号、给外部工具开的管理员授权、早就没人用却还挂着授权的应用,这三类是这次事件的同类风险。Cathedral 走的就是这条缝。

这件事真正的分量不在 Anthropic 身上,而在它证明了一件事:当攻击方用上智能体,防守方的安全检查就不能再按季度做。 一个每年做一次渗透测试的公司,等于给对面留了 364 天的窗口。

关注 AI 商业快讯,每天一篇热点背后的钱与人。

相关阅读:

—

资料来源:

  • MLQ.ai《Anthropic emails enterprise customers that an outside security firm may have viewed their contact, plan and spend data》,11 月 8 日,逐条引用通知原文 https://mlq.ai/news/anthropic-emails-enterprise-customers-that-an-outside-security-firm-may-have-viewed-their-contact-plan-and-spend-data/
  • CellCog《Anthropic’s Breach Notice Email: What It Says》,11 月 8 日,逐字段核对通知截图并标注核实时间 https://cellcog.ai/blog/anthropic-breach-notice-email/
  • THE DECODER《AI agents hacked Anthropic, maker of arguably the most capable AI models for cyberdefense》,10 月 28 日,含 Anthropic 红队 Logan Graham 的回应 https://the-decoder.com/ai-agents-hacked-anthropic-maker-of-arguably-the-most-capable-ai-models-for-cyberdefense/
  • Techwire《Cybersecurity: a startup founded by former DOGE staffers got inside Anthropic’s internal systems using AI agents》,10 月 28 日 https://www.techwire.co.il/en/article/cathedral-ai-agents-breach-anthropic-systems
  • 前途科技《前DOGE员工创办AI网络安全公司,获1.6亿美元融资》(引路透社,Cathedral 估值与投资方)https://accesspath.com/startups/doge-ai-1-6-mrwzgzuub69d
  • Anthropic 官方安全栏目(截至 11 月 8 日无本事件公告,用于交叉确认官方口径缺位)https://www.anthropic.com/news/security

LibreChat 深度评测:4.7 万 Star 的自托管 AI 对话前台,技能库测试比实现多 25%,中文文件名却过不了校验

LibreChat 深度评测:4.7 万 Star 的自托管 AI 对话前台,技能库测试比实现多 25%,中文文件名却过不了校验

同事群里每隔一阵就有人问:有没有一个能自己改的 ChatGPT?市面上的答案里,LibreChat 是被提名最多的一类——一个可以装在自己服务器上的对话客户端,接哪家的模型都行,不用把记录交给别人。

它现在的体量是 46,862 星、9,656 个分叉、MIT 许可,11 月 8 日当天还在提交代码。我把整个仓库拉下来数了一遍:7,250 个文件、226 万行代码。数字之外,真正让我停下来的是它的技能库——一个给 AI 装「操作手册」的模块。这个模块的测试代码比实现代码还多 25%,可它的文件名校验规则,会把中文名的技能文件一律拒之门外。

它到底是什么

一句话:一个自托管的 AI 对话前台。你可以用它同时接 OpenAI、Anthropic、DeepSeek 这类模型服务,挂上自己的工具和知识库,再给不同同事分配不同的助手。

它的代码分三块,体量差别很大:

目录 文件数 行数 是什么
前端界面 2,363 535,680 聊天界面,React 写的
共享包 3,355 1,240,949 模型接入层、数据结构、Agent 逻辑
旧服务端 673 272,786 Express 路由与数据库读写

测试文件 2,883 个、125 万行,占全仓一半以上。对一个要装进别人服务器、还要接各家模型接口的项目来说,这个比例不算夸张——模型接口一变就全线报错,没有测试根本不敢发版。

实测:技能库是全场最较真的模块

技能(skill)是这类客户端的新玩法:一个文件夹里放一份说明文件和若干参考资料,AI 需要时按需读取。LibreChat 在这块投入的力气,从文件数就能看出来。

第一条证据,测试比实现多。 技能子系统的实现有 28 个文件、9,133 行;配套测试 23 个文件、11,399 行,多出 25%。其中最狠的是一个同步模块的测试文件,单个就 4,281 行;路由层还有一个 1,596 行、58 个用例的测试。

第二条证据,路径校验真的挡得住。 我把它校验文件名的那段函数单独拎出来,喂了 13 个输入,结果如下:

输入的文件名 判为合法?
SKILL.md 是
references/guide.md 是
../etc/passwd 否
/etc/passwd 否
a/../../b 否
a//b、./x 否
references/%2e%2e/x(编码过的穿越) 否

穿越、绝对路径、编码绕过,一个都没漏。但同一张表里还有两行:中文.md 判否,a b.md 也判否。

这不是漏洞,是设计:规则只放行英文字母、数字和少数几个符号。对英文项目没影响,对中文用户却意味着——你自己写的中文技能说明,只要文件名带一个汉字,就没法通过接口写进去。技能正文本身可以是中文,文件名不行。

第三条证据,白名单写了两遍。 GitHub 同步模块里另有一份几乎一样的校验逻辑,专门过滤从仓库拉下来的技能文件;被挡掉的文件会进「跳过清单」,最多记 20 条。也就是说,你从 GitHub 同步一个带中文文件名的技能,它会安静地少几个文件,只在状态里留一条记录。

另一面:豁免表暴露了规模代价

这个仓库还有一份 ESLint 豁免表(也就是允许某些文件暂时不遵守设计规则的清单):258 个文件、合计 1,176 处豁免,其中光「禁止改样式」这一条就占了 962 处。它的注释写得很坦诚——测试文件里的示意标记不算设计界面,所以整片关掉。

配套的部署门槛同样不小:示例配置文件 1,850 行,环境变量 203 个,一键起多个服务的配置文件里列了 5 个服务(应用、管理后台、数据库、搜索、向量库),CI 流水线 33 条。自托管不是一条命令的事,是半天到一天的事。

放进坐标系里看

和站内评过的几篇比:nature-skills 走的是「把科研流程装进技能库」,SkillSpector 走的是「给别人的技能做安全扫描」,deepagents 走的是「教 Agent 怎么拆任务」。LibreChat 的定位不同——它是那个把技能、模型、工具放在一起给你自己托管的外壳。

适合谁:需要把对话记录留在自己服务器上的团队;要接多家模型做对比的人;愿意为一个 226 万行的工程配环境的人。

不适合谁:只想开箱即用、不打算碰配置的人;只用一家模型服务的个人;以及技能文件名里必须带中文的团队——这一条目前得自己改代码。

我的判断

值得放进观察清单,但别把它当成「装上就能用的 ChatGPT 替代品」。它的工程质量高于同类平均水平(测试比实现多、路径校验经得起试探),真正的门槛在部署和本地化。中文用户的第一个坑,很可能是想上传一份叫「报告模板」的技能文件,然后被一条只认英文字母的规则拦下来。

关注 AI商业快讯,每天一篇 AI 热点深度解读。想先看技能库怎么做审计的,可以翻我们评过的 SkillSpector 和 nature-skills。

Amazon 让用户用短信下单:Alexa for Shopping 开放短信通道,上月刚封杀 Meta Muse 等外部代理,12 个月 4 亿人用过

Amazon 让用户用短信下单:Alexa for Shopping 开放短信通道,上月刚封杀 Meta Muse 等外部代理,12 个月 4 亿人用过

4 亿人——这是亚马逊自己公布的、过去 12 个月用过 Alexa for Shopping 的客户数。从上周五(11 月 6 日)开始,其中一小部分美国用户可以直接给自己的手机通讯录里一个叫「Alexa Shopping」的联系人发短信,让它搜商品、比价、加购物车、直接下单。

一个做了十年的电商入口,正在被改写成「发短信」。

发生了什么:短信就是新的购物车

亚马逊 11 月 6 日在官方新闻站宣布,Alexa for Shopping 增加短信通道。按官方公告的说法,首批是「一小部分美国客户,仅限受邀」,用户在手机上接受条款、绑定手机号,通讯录里就会出现「Alexa Shopping」这个联系人,之后像跟朋友发消息一样下单。

能力清单比多数人想的更完整:

  • 发一句「狗粮没了、要给我姐买生日礼物、厨房纸也快用完了」,它会同时处理三件事,边找边把商品发回来;
  • 拍一张食谱照片发过去,它把食材全部加进购物车;
  • 发「把上周买的洗衣液再买一遍」,它找到商品、经你确认后下单;
  • 发「AirPods 降价告诉我」,它盯着价格,掉到你设的价位就主动发短信;
  • 发「我的包裹在哪」,直接回物流状态,不用打开 App。

亚马逊还同时宣布,Alexa for Shopping 新增 100 多项能力,把节日礼物清单、宝宝礼物登记、退款追踪这些原本要在 App 里点十几下的操作,压成一句话。一段对话可以在短信、亚马逊 App、Amazon.com 和 Echo 设备之间接着往下走——你在候诊时用短信挑礼物,回家打开 App 接着比价结账。

负责对话式购物的副总裁 Rajiv Mehta 给出的理由是:「大家一想到要买什么,就随手记在备忘录里、聊天记录里、群聊里。现在你的私人购物代理,就在一条短信之外。」

反转:上个月刚把别人的购物代理挡在门外

这条新闻真正的看点不在短信,在于谁来做这个代理。

今年 9 月,Meta 的 AI 助手 Muse 用户开始在亚马逊下单时撞上一句报错:「未经授权的 AI 代理继续访问,违反亚马逊使用条款。」TechCrunch 当时的报道写得很直白:Muse 作为购物者,不受欢迎。据 GeekWire 梳理,被拦下的外部代理名单里还有 Perplexity、Google 和 OpenAI。

也就是说:别人的代理不许进来替用户买东西,亚马逊自己的代理可以住进你的短信列表。

这不是双标那么简单,是入口定价权。谁接住用户那句「我需要什么」,谁就掌握推荐位、广告位和最终的成交佣金。亚马逊的理由也不算牵强:如果外部代理下错了单,收拾烂摊子的是亚马逊,既要安抚买家,又要应付卖家。

对读者意味着什么:聊天窗口里已经排好了广告位

更值得普通人注意的是变现方式。

据 Digiday 报道(GeekWire、The Next Web 均引用),赞助商品会混在代理发回来的选项里,目前不向广告主收费;而代理自己判断、自动完成的购买不带广告。亚马逊 2025 年的广告收入是 686 亿美元。

这条链路的逻辑很清楚:先免费养习惯,把「发短信下单」变成默认动作,再把广告位填进去。对广告主是红利期,对用户则意味着,你手机里那条以为是自己人的短信,将来会带着推荐位说话。

还有一层现实风险。短信代理能做的动作里,包含「在价格达到目标时自动购买」和「自动加购」。这类授权一旦开启,出错时你未必第一时间知道;而中文用户对营销短信的耐受度本来就低,一个会自动发促销和成交通知的官方号码,和垃圾短信之间只隔着一个开关。

对比一下国内:微信里的小程序导购、淘宝的「问问」、抖音的搜索购物,走的都是对话式入口。但短信这条路国内基本空着——运营商通道的成本与合规门槛,让国内没人愿意把它当主入口。这是中美电商体验正在分叉的地方。

背景:这不是亚马逊一家的动作

短信下单正在变成 AI 助手们的标配。OpenAI 上个月给个人代理 Dot 加了短信,外卖平台 DoorDash 9 月就开始接受短信点单。亚马逊这次是把自己的购物代理塞进了同一条赛道。

时间线也值得摆出来:

时间 事件
2026 年 5 月 Alexa for Shopping 上线,把 Rufus 购物机器人和 Alexa+ 合并成一个代理
2026 年 9 月 封杀 Meta Muse 等外部代理访问亚马逊商品页
2026 年 11 月 6 日 短信通道开放,首批受邀用户;官方宣布新增 100 多项能力
未来数周 官方称将扩大到数百万美国客户

亚马逊称,使用代理型功能的客户数自年初以来增长超过 8 倍。CEO Andy Jassy 上周的说法更直接:他预期 Alexa for Shopping 会成为人们从亚马逊购物的主要代理。

把这几句放在一起看,亚马逊的算盘不难猜:先用 4 亿人的存量把代理养成习惯,再用短信把入口从 App 里拽出来,最后把广告和成交都留在自己手里。

我该做什么

如果你是卖家或投广告的:短信代理里的赞助商品位现在是免费试水期,值得尽早摸清它出现的规律——它和站内搜索广告是两套逻辑,前者是代理主动推荐,后者是用户搜索后展示,前者的转化归因会更模糊。

如果你是普通用户:真的开出这个联系人之后,先去设置里看清「自动购买」和「自动加购」两个开关是不是默认关闭,再决定要不要让它替你按价格下单。

如果你是做产品的:这条新闻最该记的不是短信,而是入口归属——当一个平台既拒绝外部代理、又自己做代理时,第三方 AI 购物的空间只会越来越窄。中文市场大概率会走另一条路(微信生态内闭环),但「谁接住那句话」这个问题,全球都一样。

关注 AI商业快讯,每天一篇 AI 热点深度解读。

相关阅读:

—

资料来源:Amazon 官方公告(aboutamazon.com)、TechCrunch(2026-11-06)、GeekWire、The Next Web、TechCrunch(2026-09-21,Muse 封堵报道)。