Papermorph 深度评测:1,583 Star 的教学技能,把教材 PDF 变成 68 章能点能听的网页课

Papermorph 深度评测:1,583 Star 的教学技能,把教材 PDF 变成 68 章能点能听的网页课

你手上有本教材的 PDF,想让 AI 把它变成课。现在能拿到的基本是两种东西:一份排版整齐的讲稿,或者一堆散装幻灯片。两者有个共同毛病——还得学生自己读。没人念给他听,图不会跟着讲解一步步长出来,学没学会也没人知道。

Papermorph 交出来的东西不是文档,是一本能在浏览器里点、能听、能暂停回退的书。仓库里摆着 68 章的《初等代数》、40 章的《线性代数》,还有纸偶绘本动画和十分钟的纪录片。它 40 天拿到 1,583 颗星。我把整个仓库拉进隔离沙箱,把它自带的检查跑了一遍:自检确实抓得住错误,但这条流水线的代价比我预想的重。

一、它交出来的是什么:一本能点的书,不是一份讲稿

按作者自己的分法,这技能会做三种书。

第一种是课,从教材 PDF 来。公式、图形、场景随讲解一步一步变,中间插随堂小题,章节练习评判的是数学答案对不对,不是字符串像不像。

第二种是绘本,从一个故事、一个笑话或一则童话来。纸偶站在布景前,有配音、字幕、音效、配乐和镜头调度。给还不识字的孩子还留了一手:片子会停下来变成找一找的游戏,角色一次只提一样东西,孩子在图里点出来,点错了也不算错。

第三种是片:把一本书或一个想法做成配旁白的纪录片,或者切成竖屏短片。再往外还有可探索的地图和滚动叙事长页——跟着滚轮走,画面一年一年地变。

这些成品全是静态网页:没有服务器、没有数据库、没有账号。一本书就是一个文件夹,丢到任何静态托管上就能播。我随手取了一页线上成品,一个 4 KB 的网页加一堆本地素材,浏览器里就是能播的片子。

二、怎么做到的:先把书排出来,再让每句话对准一个时间点

这里有个关键概念叫 beat(节拍)。说白了,一个 beat 就是「一句旁白加一组定时动作」:配音生成后,每个词都拿到一个时间戳,画面就按这些时间点去动。所以画面不是猜出来的,是跟着声音算出来的。

这也解释了它为什么能导出视频——既然每一帧都只由时间决定,那逐帧截下来拼成 MP4 就是顺理成章的事。

做书的顺序是先规划再画:先定章节或场景,再写脚本,再画分镜。风格不靠感觉统一,靠一份写进书里的设置文件:用户的话、选的样子、用的嗓音、哪一步用哪个模型,全存在里面,后面每一章都拿它对照。

规模大的章节交给一组子智能体(能自己多步干活的 AI 程序)分工做,每步可以用不同的模型。做完之后模型还得看自己的产出:把多帧缩略图排成一张大图一次看、查画面重叠、查空帧、跑端到端测试,再加一轮「导演审片」,对照已通过的样书挑毛病,然后自己修。

这套思路是它最值钱的地方,也是它最贵的地方——后面我会算这笔账。

三、实证:我把它关进沙箱数了一遍

先交代环境。仓库 816 MB,全量拉会很久,我用了稀疏检出(只下载指定路径的文件)的办法,把技能本体、绘图引擎和四本样书取了下来。沙箱里没有网络时,它那两个不依赖浏览器的检查照样能跑。

体量上,它确实不是一份提示词:

部件 我数出来的数 意味着什么
技能说明 12,167 字节,92 行 它很短,只做分派:按你带来的东西指向参考文档
参考文档 27 篇,26.7 万字节,分 5 类 真正的知识在这里,模型按需去翻
脚本 45 个 Python 文件,50.4 万字节 最大的音效脚本 36.9 KB,音乐脚本 34.6 KB,导出脚本 30.1 KB
模板与素材 68 个文件,1.1 MB 新书是从模板复制出来的,不是凭空生成
成品书 22 本,各自带一份绘图引擎 见下一节

自带的静态检查真能跑,也真能抓错。68 章那本《初等代数》全量检查 2.1 秒跑完,结果是 0 个错误、68 个警告。警告全是同一句:找不到旁白原文,所以旁白这一项没核对。这是我把作者的私有目录一起略过的结果,不算它的问题。

为了确认检查不是摆设,我往一本样书的页面里注了两处故障。第一处让页面自己声明两个和引擎撞名的全局变量,检查报出 4 行「重复声明」,最后汇总 8 个错误。第二处塞进一个没闭合的花括号,检查给出原文:SyntaxError,Unexpected end of input,后面还补了一句「浏览器会把整段脚本停在这里不执行」。两次都准确命中,改回原样后归零。

仓库里还有两层自检:一层查文档与代码对不对得上,跑出来是「31 篇文档、0 个问题」;一层专查旁白文本规则,也是通过。文档里点名的那些脚本——导出视频、打包成课程平台能吃的包、把引擎同步进每本书、本地起一个预览服务——我逐个查了,全部存在,没有一个是文档吹出来的。

四、代价这一面:引擎复制 22 份,依赖链断一环就少一半能力

先说引擎。所有书共用同一个播放器,但每本书里都存了一份副本。这个选择很有道理:一本书坏了,引擎不跟着坏;改引擎也不会顺手把二十本书一起改坏。代价是重复,引擎核心那九个文件 26 万字节,乘上 22 本书就是 5.7 MB 的同一份代码躺在仓库里。我抽查了五本书的核心文件,逐份算校验值,结果完全一致,也都等于引擎源目录里那份;跑一遍同步工具,它回「没有要更新的」。这不是偷懒,是拿体积换稳定,而且换得挺值。

真正让人皱眉的是外部依赖。作者在说明里写了要什么,我把本机当成一台普通开发机来验:

依赖 本机状态 缺了会怎样
uv(Python 依赖的运行器) 有 —
Node.js 有,但默认路径里找不到,要手动指路 不指路,语法检查直接跳过,只留一句「没装 Node,脚本没被解析」
ffmpeg(音视频处理工具) 没有 配音拿不到时长、音频合成不了、导不出 MP4
Playwright 浏览器 没有 检查页面、截图、导出视频、做纸偶动画全废
numpy 没有 导出视频的脚本连启动都做不到

最硬的一条:我直接问导出脚本要用法,它连帮助都没打印出来,就报找不到 numpy 然后退出了。四个引擎自带的页面检查脚本,全都卡在同一句「找不到 playwright」。配音脚本倒是能打印帮助,但它的说明里写着两个配音引擎都需要 ffmpeg,所以也只是能启动、跑不了。

再说一个我自己撞出来的真问题。打包课程平台格式那一步,是这条流水线上少数不依赖浏览器、我本机真跑通的部分:一本样书打出一个 2.3 MB 的压缩包,46 个条目,格式标着 SCORM 2004(教学平台通用的一种课程打包规范)。但它同时吐了两行警告——封面页引用了书文件夹外面的样式表,那个文件不会进包。我去线上核对:那份样式表在站点根目录是正常返回,换成书目录下的路径就是 404。也就是说这本样书的封面页在线上一直缺样式,只是缺得不明显。自检工具会说话,但没人听它说话,小毛病就一直挂着。

最后是钱。作者给了两个数:一本带插图的物理章节,模型开销约 10 到 18 美元;最新的绘本每本配音不到 0.45 美元。按 68 章那本算,光模型费就是四位数美元的量级。这不叫贵得离谱,一个章节的人工课件制作远不止这个数。但它把这件事的性质说清楚了:这不是一个人一天做一本书的工具,是一个团队一周做一本书的流水线。

五、判断:现在该试的是哪种人

拿来跟站内评过的同类比,坐标系就清楚了。之前评过的开源视频流水线(OpenMontage 那类)走的是「很多小技能拼装」,出图技能(visual-explainer 那类)走的是「一个好看的静态页」。Papermorph 站的位置不一样:它要的是成套的、风格一致的、能连续做几十章的课程,而且必须能脱离平台自己托管。这三条同时成立的项目,我目前没见到第二个。

所以:

适合现在就试的——你手上有自己有权使用的教材 PDF,而且要做的是十几章以上的连续课程;你的机器上已经有 ffmpeg 和 Node;你愿意接受第一章要花二三十美元试错。

建议先别碰的——只想把一份文档做得好看点的;没有命令行经验、指望一条命令出成品的;以及想拿它批量处理别人的版权教材的。作者自己在文档里划了线,这个锅他不背。

如果你只是好奇它到底能做到什么程度,不用装:仓库里的成品书就是纯静态页,打开就能看,那是它最好的说明。

相关阅读:AI 时代的教育革命:5 个必装的 AI 教学技能 · AI Skill 生态全景:从 1000+ 仓库精选 10 个必装技能 · OpenMontage 深度评测:6.89 万 Star 的开源视频流水线

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

英伟达董事会连夜开会定黄仁勋去留:盘后跌超9%,公司没有继任计划也没有董事长

英伟达董事会连夜开会定黄仁勋去留:盘后跌超9%,公司没有继任计划也没有董事长

9%——这是 11 月 11 日美股盘后,英伟达股价在一个晚上里的跌幅。跌的原因不是财报,也不是芯片出口新规,而是一份关于董事会的报道:据《华尔街日报》消息,英伟达董事会正准备让联合创始人、CEO 黄仁勋走人,最早本周三就开会表决。

这家公司 33 年里只有一位 CEO,市值一度是全球第一。而就在三天前,同一块董事会刚刚公开发声明说「对 Jensen 和他的管理团队有信心」。

发生了什么:三份文件,三天之内

把时间线摆直,这条新闻的戏剧性全在顺序里。

11 月 8 日,周日。黄仁勋给全体员工发了一封信,承认自己对妻子不忠,向家人和同事道歉。同一天,英伟达董事会发布声明,宣布启动独立调查,理由是「有报道称创始人和 CEO 黄仁勋成为外国情报活动的目标」。声明同时写明:董事会没有理由认为国家安全或英伟达的商业机密受到损害,调查会「审查一切可获得的信息」,并且董事会「对 Jensen 和他的领导团队有信心」。

11 月 10 日,周一。董事会的独立成员宣布,已聘请曾代理纽约南区联邦检察官的 Joon H. Kim 及其所在的 Wachtell, Lipton, Rosen & Katz 律所主持这次调查。这是美国处理公司治理危机时最贵也最硬的一档配置。

11 月 11 日,周三。《纽约时报》先报道,黄仁勋与英伟达全球医疗健康业务副总裁 Kimberly Powell 存在恋爱关系,Powell 直接向他汇报;报道援引五名消息人士,并称两人今年 3 月在圣何塞一家酒店被拍到举止亲密。几分钟后,《华尔街日报》报道董事会正准备让黄仁勋离职。CNBC 随后确认董事会确实在开会,且会议开到当晚很晚仍未结束。

股价在盘后交易中一度跌超 9%。在此之前,本周已经跌了 7%,并且是连续第六周下跌。

数字与一手细节:一台每季卖 1080 亿美元的机器,没有备用人选

这次事件之所以不只是「CEO 私事」,关键在这几个数字。

英伟达 2026 财年(截至今年 1 月)营收 2159 亿美元,同比增长 65%。2027 财年上半年营收 960 亿美元,同比增长 85%。公司此前给出的本季度营收指引是 1080 亿美元,上下浮动 2%。首席财务官 Colette Kress 还表示,预计 2028 财年营收增长 70%。

也就是说,董事会要在一个季度卖 1080 亿美元、而且还在加速的时点上,决定要不要换掌舵人。

更麻烦的是结构。英伟达没有董事长,董事会由「首席独立董事」牵头;公司也没有首席运营官;黄仁勋有大约 60 名直接汇报对象,长期以扁平结构居中做绝大多数决定,甚至亲自给很小的客户发短信、打电话。这些细节来自《财富》对多位分析师和公司治理学者的采访。

股权上,黄仁勋的多数股份与妻子 Lori Huang 共同持有、放在家族信托里(也就是把股份交给受托机构代管,本人不能随意处置),约 8 亿股;他个人名下约 7000 万股,对公司的经济控制力有限。换句话说,他在这家公司的话语权主要不是靠股权,而是靠 33 年积累的权威。

正因如此,公司从来没对外讲过继任计划。TechCrunch 半开玩笑地列了一份候选人名单:AMD 的苏姿丰、前谷歌 CEO 施密特、英特尔陈立武、前 Salesforce 联席 CEO Bret Taylor、主导 CUDA(英伟达的软件平台,让开发者的程序能跑在它的显卡上)的副总裁 Ian Buck、硬件工程高级副总裁 Andrew Bell,以及最常被分析师点名的 CFO Colette Kress。但报道也说得很清楚:Kress 更擅长财务而非技术路线,而 Buck、Bell 这类「建造者」缺的是对外部客户的号召力。

预测市场的赔率很直白:在 Kalshi 上,黄仁勋「这周还能留住职位」的概率一度只有 30% 左右。

对立双方:董事会说相信他,国会说要他走

这条新闻真正的冲突不在八卦,而在两拨人给出了完全相反的判断。

一边是董事会。11 月 8 日的官方声明措辞非常克制:先说不认为机密受损,再说对他有信心,最后才说调查会看一切材料。这是典型的「先稳住市场、再留出退路」。分析师也分成两派:D.A. Davidson 的 Gil Luria 认为这些因素「加速了一场公司没准备好的交接」;Seaport 的 Jay Goldberg 则认为公司不会垮,「产能都卖光了,合同签到明年」,但「会失去很多光环,犯错的概率更高」。

另一边是国会。据 CNBC 报道,共和党参议员 Kevin Cramer 周三再次公开要求黄仁勋辞职,理由是他在国家安全层面「太容易被勒索」;民主党众议员 Suhas Subramanyam 和即将退休的共和党众议员 Don Bacon 也表态认为他应该下台。众议院外交事务委员会主席 Brian Mast、中国问题特别委员会主席 John Moolenaar、情报委员会主席 Rick Crawford 早在 11 月 4 日就联名要求黄仁勋 11 月 18 日到场作证,到周三傍晚仍未收到回复,Mast 明确说三个委员会都在考虑发传票。

值得注意的是,国会真正想推动的不是「换 CEO」,而是借这场风波通过三部芯片管制法案:AI Overwatch Act、MATCH Act、Chip Security Act。这三部法案都挂在今年必须通过的国防授权法案上(美国每年给军队定预算的那部大法),核心都是堵住先进芯片流向对手的通道。同时,参议员 Warren 和 Coons 要求政府保全所有与英伟达对华出口、以及黄仁勋此事相关的文件;据 The Information 报道,商务部正在敲定一版新的半导体管制规则,要连「通过海外数据中心远程使用」这条路一起堵上。

一个反差细节:总统特朗普在事件曝光后公开表示黄仁勋是「了不起的人」「可敬的人」,一直站在他这边。可就在同一天,国会里的两党议员在一件事上达成了一致——黄仁勋该走。

这也是为什么市场没有把它当成普通的管理层丑闻来定价。它同时压上了三个变量:一家公司最关键的一个人、一条最紧张的供应链、和一个正在收紧的出口管制窗口。

对读者意味着什么

先说最直接的:短期芯片供给不会因为这件事变。英伟达的产能已经卖光、合同签到明年,云厂商的算力集群也在按合同交付。分析师的原话就是这个意思——公司不会「消失」,只是会失去光环。

真正的风险在 2027 年下半年以后:如果管理层动荡拖过两个季度,新平台的产品节奏、以及和台积电、SK 海力士这些上游的联合排产都会受影响;而这几件事恰好决定了明年的算力价格。

第二个变量是监管。三部法案挂在国防授权法案上,如果趁这个窗口通过,受影响的不只是中国的买家,还包括所有通过海外数据中心间接用卡的公司。对在国内做业务、又在海外租算力的团队来说,这是要盯的实质变化。

第三个变量是采购窗口。每次这种级别的治理风波,都会给买方一个压价的借口,也会给卖方一个解释「货晚到」的理由。合同里关于交付时间、违约责任的段落,未来几周会比单价更重要。

我该做什么

如果你在管算力预算:把明年上半年的用量和续约节点摊开看一眼。当前是「合同已锁、价格未动」的状态,适合确认交付条款,而不是急着抢货或抛售长约。

如果你在关注政策和合规:盯三个时间点——董事会是否发出正式公告、11 月 18 日黄仁勋是否答复国会作证、国防授权法案里三部芯片法案是否被保留。前两个决定公司走向,第三个决定供应链规则。

如果你是普通用户或开发者:短期内你用到的模型接口、云服务价格不会因为这件事变化。真正要留意的是 2027 年的模型价格——算力涨价通常会滞后半年传导到账单。

不要做的判断:把「CEO 可能要换」等同于「英伟达要垮」。这家公司眼下最大的护城河是产能和 CUDA 生态,不是某一个人;但它最大的风险也恰恰是过去 33 年只靠这一个人做决定。

一句话判断:这场董事会之争不会决定英伟达明年的营收——1080 亿美元的指引已经签在合同里;它会决定 2027 年之后,这家公司还能不能继续一年一换代。

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

相关阅读

信息来源

baoyu-design 深度评测:6369 Star 的本地设计技能包,66% 体积是重复副本,自检却放过编号错误

baoyu-design 深度评测:6369 Star 的本地设计技能包,66% 体积是重复副本,自检却放过编号错误

六千多星的项目,我克隆下来一称:一百六十六兆,这还没算版本历史。把里面一模一样的文件挑掉之后,只剩五十六兆。也就是说,这个仓库里有六成六的体积,是同一批东西原样抄了三遍。

这个项目叫 baoyu-design,作者是宝玉(Jim Liu),半个月前还在日更版本,现在六千三百六十九星、五百零六个 fork。它的卖点很实在:把 claude.ai 上那几种「作品」——幻灯片、设计画布、设计系统、数据仪表盘、动画影片、白板——搬到你自己电脑的 AI 助手里跑,每一种配一个本地编辑器。

先说结论:东西是真能用,我跑起来了;但那六成六的赘肉也是真的,你今天要装它,得先为这部分付下载和磁盘的账。

它到底在做什么

claude.ai 有个设计功能,能让 AI 直接产出可编辑的幻灯片、设计稿、仪表盘。问题是你得在网站上用,产物在云端,导出来就死了。

baoyu-design 的做法是把这套东西整包搬到本地。它的产出全是普通文件:一个文件夹里放一个索引文件记着页序,每页一个网页文件。AI 往这个文件夹里写字,你电脑上跑着的一个网页编辑器立刻显示出来;你在编辑器里改,改动也写回同一批文件。两边轮流改,谁都不覆盖谁。

大致分工是这样:

技能 你拿到什么 打开后能干什么
claude-slides 幻灯片:一个索引加每页一个网页文件 放映、改字、拖动,导出 PDF / PPTX
claude-design 一块画布上并排多个画板 当原型播放、调文案、导出 Figma 可接的网页
claude-design-system 一套设计系统:颜色、字体、组件 浏览和改样式变量,给幻灯片和画布装上
claude-data 数据仪表盘:数据集加图表页 实时图表,每个数字能追回原始那一行
claude-motion 动画影片,一段段代码写出来 改台词、拖场景长度、导出 MP4
claude-whiteboard 白板:方块、箭头、便签 拖动、画、贴便签、局域网协作

另外还有两个不出编辑器的:一个当影片导演,负责想清楚要说什么、写旁白、配音;一个是图表规范,AI 画图之前先读它。八个技能加起来,说明文档二十四万字节。

这东西的价值不在于「又一个 AI 画图工具」,而在于产物是你的文件。放在你自己的文件夹里,能进版本库,能拷走,能拿编辑器当普通项目打开。云端工具做不到这一点,这是它最硬的一条。

实测一:一百六十六兆里,六成六是重复

我在隔离环境里克隆了一份,量出来:

指标 实测值
工作区文件数 804 个(不含版本历史)
工作区体积 165.8 MB
按文件内容去重后 56.5 MB
重复部分 109.3 MB,占 65.9%
另:版本历史目录 15.8 MB

为什么重复:仓库里有三个目录,分别是给普通 AI 助手、ChatGPT/Codex、以及 DeepSeek Harness(也就是一个能装插件的本地 AI 应用)这三种宿主准备的版本。我随手挑了三个目录下同一个编译器文件比对,三份的指纹完全一致;整个脚本目录逐字节比对,零差异。也就是说,为适配三种宿主,同一份两万四千行技能文档和一整套编辑器被复制了三份。

落到单个技能上更疼。只装幻灯片这一个技能,目录十八兆,其中十一兆是一个编译器文件;设计画布十五兆。你要是八个全装,光脚本就五十多兆,还没算你做的作品。

这意味着什么:这不是「下载慢一点」的问题。它决定了你怎么装。官方推荐用现成的技能安装器按名字装单个技能,别整个仓库克隆——克隆一次,等于把另外两份你永远用不到的副本一起搬回家。而如果哪天作者忘了同步三处,你本地那份和插件市场上的那份就会跑出两种行为。

实测二:编辑器真能跑,自检也真会放过错

光看文档没用,我建了个最小幻灯片试了一遍。

第一步是自检命令。我照文档写了个只含一页的幻灯片索引,运行检查,脚本直接崩了——报错说「无法把空值转成对象」。原因是我漏了「章节」这个字段,而它没做兜底,直接踩空。补齐之后,检查通过,问题数为零。

第二步是打开编辑器。命令返回一个本机网址,我抓了一下:网页正常返回,说明本地服务确实起着,不是文档里画的大饼。这一步给好评,很多同类项目的「编辑器」只存在于说明文档里。

第三步我动了点坏心思,想看它的检查能拦什么:

  • 把某一页文件名写成 cover,而网页里那段的编号我故意改成 wrong-id。检查仍然报零个问题。 它自己的说明里也承认:文件名的编号和网页里的是否一致、图片路径是否存在,它都不验。
  • 再放一张指向不存在图片的图。这次抓住了,报一个错误,还附了修法。
  • 给网页加一个它不认识的排版属性。它不报错,只在提示里说「这个属性不属于本格式,已丢弃」。

这意味着什么:它的自检是一道格式闸门,不是正确性闸门。能拦住「你引用的图片没导入」,拦不住「你这一页的编号写错了」。后者恰恰是让编辑器打开空白页的原因。作者把边界写在说明里了,算诚实,但你要是照文档说「跑过检查就行」,会栽在这条缝上。

顺手挖到一件真东西

八个技能里最不起眼的是那个图表规范,一百一十二千字节,最小。但它带了一个调色板校验脚本,我拿四组颜色实测:

  • 亮度区间:四色全在合格带内
  • 饱和度下限:四色全部通过
  • 色盲可分辨度:一对黄褐和墨绿在红色盲模拟下只差 7.1(阈值带是 6 到 8),判为警告,并且提示「只有在加上直接标注或纹理这类第二重编码时才合法」
  • 与背景的对比度:四色全部达标

这是整个仓库里唯一一处能给出可核对数字、并且会主动报警的地方。它没吹自己懂设计,而是把「这组颜色色盲读者分不分得开」算给你看。做数据图的人,光这一个脚本就值得来一趟。

一件必须先看清楚的事:许可

这个仓库的许可证在 GitHub 上显示为「未识别」。别误会成「没许可」,真相更麻烦一点——它是分层授权,官方特意写了一份说明文件:

  • 作者自己写的部分(本地命令行、编辑器服务、本地评论、三种宿主插件的代码、文档):MIT,商用随便。
  • 从 Anthropic 搬来的部分(技能说明、参考文档、图表规范、整套编辑器界面、图标字体、归档里的系统提示词):权利归 Anthropic,本项目不授予任何许可。
  • 第三方开源库(React、d3、导出 PPTX 的库等):各自原有许可。

这意味着什么:你自己拿来用、拿来改,没问题;但如果你想把「编辑器那部分界面」抠出来放进自家产品对外卖,那就踩在了不授予许可的地界上。作者提醒得很清楚,别跳过那段说明。

谁该用,谁别用

值得用的:需要反复产出幻灯片、设计稿、数据仪表盘的独立开发者和小团队。你的痛点是「AI 产出的东西导出来就死、改一次要重生成一遍」,这个项目的文件式设计正好治这个病。做数据图的,先单独试那个调色板校验脚本,成本极低。

别急着用的:只想让 AI 出一张图、一份一次性 PPT 的人。装一个技能要吃掉十几兆、还得有 Node 环境、还得让本地服务能开端口——为一个一次性需求付这些,不值。

装之前记住两条:按名字装单个技能,别克隆整个仓库;跑完自检不等于没问题,编号和图片路径它不查,自己扫一眼。

顺便说一句,它要求配 Claude 里最强的那个模型效果最好,也就是说这东西的质量上限,很大程度取决于你给的上下文——截图、现成的设计系统、真实代码库。不给上下文,它再强也只能凭空编。这一点和前面评测过的 pstack-claude 是同一个道理:技能是壳,喂进去的真实材料才是肉。

仓库地址:github.com/JimLiu/baoyu-design,作者署名 Jim Liu 宝玉。本月已发二十个版本,更新很勤,我看到的这些数字随时会变——尤其是那六成六,希望作者哪天把三份副本收成一份加上构建脚本。

Gemini 4 Carbon 全面开放:每百万 token 2 美元,Artificial Analysis 榜单却排第二

Gemini 4 Carbon 全面开放:每百万 token 2 美元,Artificial Analysis 榜单却排第二

10 月 28 日,谷歌把 Gemini 4 Carbon 交给了一小撮人:只开放给自家 Fairwind 计划里的网络安全防御团队。11 月 10 日,它全面开门——所有付费开发者、企业 API、Google AI Ultra 订阅用户,当天就能用上。

谷歌在官方博客里的原话是,Carbon 是它「最强的模型」。可就在它开放的前一天,Anthropic 发布了 Claude Fable 5.2,而在独立评测机构 Artificial Analysis 的智能指数上,Carbon 排在第二,不是第一。

这就是今天这条新闻真正的看点:谷歌挑了个最便宜的价位,抢了一个它没拿到的第一名。

发生了什么:一次只隔两周的全面开放

先把时间线摆直。

  • 10 月 28 日:谷歌发布 Gemini 4 Carbon,但只放开给 Fairwind 计划里的网络安全防御者,普通开发者拿不到。
  • 11 月 9 日:Anthropic 发布 Claude Fable 5.2 与 Mythos 5.2,定价每百万输入 8 美元、每百万输出 40 美元。
  • 11 月 10 日:谷歌把 Carbon 全面开放。Gemini API(Google AI Studio 里)、Gemini for business 全部可用,Google AI Ultra 订阅用户在 Gemini 应用、搜索里的 AI Mode 和 Antigravity 编程平台上也能切过去。
  • 同一天:谷歌在 Antigravity 里预览了一个叫 /swarm 的功能——一句提示词进去,出来的不是一段回答,而是一支会分工的智能体小队。

Carbon 不是 Argon 的替换品。谷歌自己写得很清楚:Argon 仍然是「大多数软件工程和知识工作的理想选择」,Carbon 是给那些「考验模型智力上限」的任务准备的——复杂多步编码、开放式科研。代价是它比 Argon 花更多思考 token。

规格上,Carbon 与 Argon 共用同一个稀疏混合专家(MoE)底座,额外的后训练和强化学习专门用来加强深度推理和长验证循环。上下文窗口 100 万 token——说白了就是一次能塞进多少内容,100 万 token 大致相当于几本书,接受文本、图像、音频、视频输入,知识截止到 2026 年 3 月。

数字与一手细节:2 美元、40 美元、7.76 美元

这篇文章需要的数字,全都能对上具体出处。

先看价格。Carbon 的开场价是每百万输入 token 2 美元、每百万输出 token 10 美元,与 Argon 的开场价一致。11 月 30 日之后翻倍,变成 4 美元和 20 美元。对比昨天刚发的 Claude Fable 5.2:8 美元和 40 美元,是 Carbon 开场价的 4 倍。The Verge 的算法是,Carbon 大致是 GPT-6 Astra 的五分之一、Fable 5.2 的四分之一。

再看谷歌自己列的榜单。Carbon 在三个独立基准上排第一:Cursor 的 CursorBench 4.0、Perplexity 的 WANDR、Zapier 的 AutomationBench,谷歌说它的每任务成本比第二名外部模型低一半以上。在谷歌与 Artificial Analysis 合作新做的多模态知识智能体基准(MKA)上,Carbon 排第二,每任务平均成本比榜首低六倍以上。

然后是那个关键的反差。Artificial Analysis 的智能指数榜上,此刻的顺序是:Claude Fable 5.2(max)65 分,Gemini 4 Carbon(high)60 分,Claude Opus 5.5(max)59 分,GPT-6 Astra(max)57 分,GPT-6.1 Terra(max)51 分。Carbon 不是第一,是第二,而且只比 Opus 5.5 高 1 分。10 月 28 日刚发布时,它在这张榜上是 59 分、排第一——两周里分差变了,位置也变了。

还有一个更贴地的数字。同一机构测了每个任务的真实花费:Carbon 平均 7.76 美元,Fable 5.2 是 26.54 美元,GPT-6 Astra 是 6.24 美元,最便宜的 GPT-6.1 Terra 只要 0.96 美元。

这组数字说明一件事:卖得便宜不等于用得便宜。 这里的 token 是模型计价的字数单位,又因为它想得更深、要写更长的思考过程,用的字数更多。Carbon 单价比 Astra 低,最后每个任务的账单一算,反而比 Astra 贵一点。说白了,采购看的是单价,财务看的是账单,这两个数经常不是一回事。

对立双方:谷歌的榜和 Anthropic 的榜,各说各话

这次最值得看的不是模型本身,是两套评测的正面撞车。

谷歌的博客只写了「在 CursorBench 4.0、WANDR、AutomationBench 上排第一」,没有点名对手是谁。The Verge 对此的提醒很直接:公司会并且确实会挑选对自己最有利的基准来展示。

Anthropic 那边出了一张更狠的表,把 Carbon 拉进来做对照,用的是自家跑的分数:

  • 前沿代码任务 FrontierSWE v2:Fable 5.2 是 69.9%,GPT-6 Astra 65.5%,Carbon 61.2%。
  • 更难的前沿代码 FrontierCode 2.0:Fable 5.2 是 49.1%,Astra 42.8%,Carbon 41.1%,而且标注了它是在 medium 档测的。
  • 终端科学任务 Terminal-Bench-Science 0.1:Fable 74.6%,Astra 68.1%,Carbon 64.8%。
  • 计算机操作 OSWorld 2.1:Fable 89.3%,Carbon 81.5%,Astra 79.5%。
  • 只有商业流程 AutomationBench 上,Carbon 以 53.9% 反超 Fable 的 51.4%。

同一批任务,两套榜单给出了两个结论。谷歌说我在三个榜上第一,Anthropic 说在五个任务里我赢了四个。这不是谁撒谎,而是基准已经变成了市场部的一部分:谁出题、谁跑分、用哪一档推理强度,都能左右结论。Anthropic 那张表里 Carbon 跑的是 medium 档,谷歌博客里宣传的是 high 档,这一个括号就足以让分数差出好几分。

还有一个谁都没有否认的事实:在自家博客里,谷歌把 Argon 称为「大多数工作的理想选择」,Carbon 只推荐给极限任务。这句话对普通开发者比任何榜单都实在——谷歌自己在劝你先别急着换。

对读者意味着什么:智能体开始按「小队」卖

真正的新东西是 /swarm,不是分数。

谷歌的描述是:一句提示词进去,出来一支有分工的智能体小队。Carbon 被派去干最费脑子的活——架构设计、协调、审计;更快更轻的模型在各自隔离的工作区里并行干活;另外还有一类「对抗验证器」智能体,也就是专门扮演挑错一方、去挑每处改动毛病的智能体。演示里最夸张的一个例子,是把谷歌 Platform 37 办公室的七份市政规划 PDF(共 206 张工程视图)交给一支小队,跑了 10 个通宵的循环,做出一座 90.6 万个三角面的 3D 重建。

这件事的分量在于角色变化。过去一年大家讨论的是「模型能写多少代码」,Carbon 这类模型的卖点变成「能连续跑多久、自己能不能验收」。谷歌给的安全数据也在支撑这个方向:在自家模拟攻防环境里,Carbon 挡下了自适应红队智能体 99% 的攻击轨迹,每次尝试的突破率从 Argon 的 3.1% 降到 0.8%;Gray Swan 的自动化攻击查询成功率从 9.86% 降到 2.17%;外部机构 Trajectory Labs 跑了 132 小时、1.3 万次请求,没发现新的通用越狱。谷歌同时承认,提示词注入防御「仍然是需要继续改进的领域」——两周前它刚宣布这项指标做到 0%,这句话等于自己补了个注。

对国内开发者的实际影响有三层。

第一层是价格窗口。11 月 30 日之前,Carbon 的 API 价是 2 美元和 10 美元,之后翻倍。要做压测、要跑迁移回归的团队,这个月内动手成本最低。

第二层是选型逻辑变了。以前比的是「谁更聪明」,现在要算「每个任务多少钱、要跑几轮验证」。Artificial Analysis 那组每任务成本数据说明,单价最便宜的不一定最省,单价最贵的不一定最亏——26.54 美元的 Fable 5.2 如果一轮做对,可能比 7.76 美元的 Carbon 跑三轮更划算。

第三层是开源这边的压力。国内读者更关心的其实是同期的另一条消息:美团以 MIT 协议开放了 1.6 万亿参数的 LongCat-2.5 权重。闭源旗舰把价格打到 2 美元,开源把 1.6 万亿参数的权重直接放出来,中间那批「价格中等、能力中等」的闭源模型,处境会最难。

我该做什么:三条能今天就执行的动作

不用急着迁移,但有三件事值得现在做。

一是这周之内把手上最贵的那条链路跑一遍 Carbon。用它替换掉现有模型,同一批任务跑两次:一次看通过率,一次算真实账单(注意算上它的思考 token)。11 月 30 日涨价之前,这是唯一能拿到真实数字的窗口。

二是把评测从「看榜单」换成「跑自己的题」。这次两套榜单打架给的最大教训是:CursorBench、WANDR、AutomationBench、FrontierSWE,名字都很好听,但没有一个是你的业务。选 20 条自己线上的真实任务做成固定题集,谁跑谁知道。

三是留意 /swarm 的可用范围。谷歌没说一支小队最多几个智能体、哪些套餐能用这个预览,这两条不明确之前,把它当演示看,别当生产力工具排期。

最后说一句判断:谷歌这次真正的动作不是发布一个更强的模型,而是把「前沿模型」的价格锚点又往下压了一档。Anthropic 前一天刚用 8 美元和 40 美元定了高价,谷歌第二天就用 2 美元和 10 美元回应。模型能力的差距在缩小,价格战才刚开始。

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

参考资料:

  • Google 官方博客《Gemini 4 Carbon is now available》(2026-11-10):https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-carbon-now-available/
  • The Verge《Google releases Gemini 4 Carbon with agent ‘swarm’ feature》(2026-11-10):https://www.theverge.com/ai-artificial-intelligence/1030787/google-gemini-4-carbon-public-rollout
  • MLQ.ai《Google makes Gemini 4 Carbon widely available at $2 per million input tokens and previews agent swarms》(2026-11-10):https://mlq.ai/news/google-makes-gemini-4-carbon-widely-available-at-2-per-million-input-tokens-and-previews-agent-swarms/
  • Anthropic 官方公告《Introducing Claude Fable 5.2 and Claude Mythos 5.2》(2026-11-09):https://www.anthropic.com/claude-fable-and-mythos-5-2

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 热点深度解读。