夜雨聆风学习资料网

ARTICLE · 1198387

有人照着文档复刻了 Anthropic 的 Scion

有人照着文档复刻了 Anthropic 的 Scion

git-ai 把 Anthropic 内部那套 Scion 照着公开文档复刻了一遍,开源版昨天才建仓。

省流摘要:Electron 44.8.0 修网络进程重启后 fetch 永久失效、Stirling-PDF 3.2.0 换掉老 multi-tool、Cline 一天连发四个版本上线云端会话、Traefik 3.7.15 补三个 CVE、Streamlit 1.66 铺开 on_change ignore、git-ai 复刻 Anthropic 的 Scion、c64-hw-simulator 逐引脚模拟 C64 主板、Timestral 是 Mistral 的时序预测模型,共 8 个开源项目/AI 工具速览。涵盖 桌面框架、PDF 工具、编程 Agent、反向代理、数据应用、版本控制、硬件仿真、时序预测 方向。


热门动态

Electron 44.8.0 — 那个「重启之后 fetch 就永远废了」的 bug 终于修了

★123355 | C++

https://github.com/electron/electron

这个版本的 feature 只有一条,Linux 上终于支持通知的操作按钮了。但真正该看的是 fixes 里那条:net.fetch 和 session.fetch 在 Network Service 进程重启之后,会永久性地返回 net::ERR_FAILED。注意是永久性,不是偶发,不是重试能救,是从那一刻起这个 API 在你的应用里就死了。

写过 Electron 的大概知道这意味着什么:用户挂起笔记本再唤醒、显卡驱动崩一下、Chromium 自己回收了网络进程,你的应用所有基于 fetch 的请求全盘失效,而且没有任何报错能告诉你根因在哪,你只会收到一堆「网络错误」的用户反馈。这种 bug 排查起来是地狱级的,它修了,我觉得值得专门提一句。

另外还顺手修了 Windows 上原生对话框上方鼠标指针消失、utilityProcess 在退出前丢消息、win.isFullScreen() 在全屏事件里读到旧值这几个。Chromium 跟到 152.0.7977.167,Node.js 跟到 v24.22.0。都是那种不修就天天膈应你的东西。


Stirling-PDF 3.2.0 — 加密 PDF 不用先解密了,顺便把老 multi-tool 整个换掉

★94330 | TypeScript

https://github.com/Stirling-Tools/Stirling-PDF

Stirling-PDF 这次动的是两块最被吐槽的地方。第一块是那个用了很久的 multi-tool,整体被重新设计的 Page Editor 替掉了,重新支持图片、支持在编辑器里改文件名、加了一堆排序和管理页面的交互改进。坦白讲老版本那个拖来拖去的体验确实该换了。

第二块更实用:带密码的 PDF 现在可以直接打开查看、直接用常见工具处理,不需要先把密码去掉。而且解锁的时候会保留你原有的 PDF 权限设置,不会一解锁就把所有限制一起抹平。处理过一堆加密合同扫描件的人应该懂这个区别有多大。

其余改动里我比较在意两个:压缩现在会明确告诉你「这个文件我压不下去了」,而不是默默返回一个一样大的文件让你怀疑自己;还有侧边栏的文件缩略图改成了快滚到视口才生成,启动和内存占用都降了。另外修了 Mac 桌面端重排文件直接崩溃、表单草稿在保存完成前丢失这类硬伤。


Cline 4.1.25 — 一天连发四个版本,主菜是关掉编辑器也继续跑的云端会话

★70407 | TypeScript

https://github.com/cline/cline

10 月 16 日这一天,Cline 发了主扩展 v4.1.25、桌面版 desktop-v0.0.47、CLI 的 cli-v3.0.72、SDK 的 v0.0.94 四个。这种节奏本身就说明他们在赶什么东西。

主菜是 Cloud sessions,灰度放量中:选一个 GitHub 仓库和分支,任务丢到托管沙箱里跑,云端任务会和本地任务一起出现在 Recent 和 History 里,跑完通知你,关掉编辑器它继续跑。这是 Cline 从「VS Code 里的一个插件」往「有服务端的产品」挪的一步,我个人对这类路线一向保留意见,但不得不说长任务确实需要这个。

SDK 那条改动更硬核:插件现在只能跑在 worker 线程(默认)或子进程沙箱里,in_process 模式连带它那个静默回退一起删了。宿主要是没带 bootstrap 文件,插件加载直接抛 PluginBootstrapMissingError 并点名缺哪个环境变量,而不是悄悄把插件塞进 hub 里跑。把「静默降级」改成「显式报错」,这个取舍我是赞成的,降级跑着的插件出问题,排查成本比直接失败高一个数量级。

还有一条工程细节值得注意:模型流已经开始之后才到达的 provider 错误,现在最多重试三次,而且重试用尽后不再触发 agent 整轮的重试,避免两层重试预算相乘。踩过 token 账单爆掉的应该能理解这改了什么。


Traefik 3.7.15 — 三个 CVE,外加把 CONNECT 请求挡在 muxer 之前

★65256 | Go

https://github.com/traefik/traefik

这是个安全补丁,一次修了三个安全公告。核心改动是两条关于 CONNECT 方法的:不管 HTTP 版本一律拒掉 CONNECT 请求,而且拒绝的位置提前到进 muxer 之前。反向代理把 CONNECT 放进路由匹配里,等于给你的内网开了一条可以被人拿来当隧道用的路,这种口子越早堵越好。

同时 2.11 分支也发了 2.11.59 补同样两条,说明影响面覆盖到老版本。跑在 2.11 上没升级的注意一下。

Kubernetes 相关还修了几处:ingress-nginx 的 auth-tls 客户端认证会被错误地套到整台主机上、共享 auth-tls-secret 时跨 namespace 检查失效。这两条说实话比 CVE 更容易在生产上悄悄咬你一口,认证范围放大了,日志里什么都看不出来。fastproxy 那边修的是升级连接上的并发缓冲读,还顺手给请求头里的 CR/LF 补了回归测试。


Streamlit 1.66.0 — on_change="ignore" 铺到了十几个组件上

★46008 | Python

https://github.com/streamlit/streamlit

这个版本的 New Features 列表看起来像复制粘贴:color_picker、camera_input、datetime_input、feedback、pills、audio_input、data_editor、pagination、segmented_control 一路加 on_change="ignore"。但这不是灌水,是在系统性地补一个设计缺口。

Streamlit 的模型是任何交互都触发整个脚本重跑,很多组件你只是想让它记住用户选了什么、等到按下提交按钮再统一处理,中间那几十次 rerun 纯属浪费。ignore 就是明确告诉框架「这个控件变了别重跑」。以前要绕 st.form 或者自己玩 session_state,现在是一个参数的事。

另一条我更喜欢的是无障碍方向的推进:加了 shell landmarks、skip link 和焦点环,日期/时间选择器的日历按钮进入了 tab 顺序,装饰性图标对读屏器隐藏,纯图标按钮补了名字。还有个小修复很解气,label 的 tooltip 现在只在文字真被截断时才显示,不会再在明明显示完整的标签上弹个重复的气泡。


新发现

git-ai — 有人照着 Anthropic 的公开文档,把 Scion 重写成了开源版

★1036 | Go

https://github.com/feder-cr/git-ai

Anthropic 自己写过一篇 Redesigning source control,介绍它们内部的版本控制系统 Scion:服务端为中心,为「几百个 agent 同时读写同一批分支」设计。Scion 是内部系统,不对外。于是作者直接按那篇公开描述做了一个开源实现,叫 gitai,MIT 协议,建仓到现在一天出头,1036 星。

它的出发点我觉得是对的:经典 Git 托管是给人用的——克隆仓库、干几个小时、推一次。agent 的工作形态完全相反,成千上万个短任务,每个改几个文件,都想几秒内落地,还都挤在同一个分支上。这时候全量克隆、合并队列、客户端走历史全都变成瓶颈。

gitai 的做法是把活儿搬到服务端:客户端保持在线只取需要的部分,历史相关的查询由服务端回答并缓存,改动通过 compare-and-swap 落地而不是排队,每次更新都是变更日志里的一条,仓库状态存在一致性数据库加对象存储里好横向扩。另外它特意强调服务端永远不调用语言模型,所有 AI 功能都能换任何 provider 或者干脆不用。

说实话我对「给 agent 重做一套 VCS」这事本身是半信半疑的,大部分人手上根本没有几百个 agent 同时抢一个分支的场景。但这是一个有公开设计文档、有独立实现、还能让人真的跑起来对比的案例,比纯讲概念有意思多了。注意它和 Anthropic 没有任何关联和背书。


c64-hw-simulator — antirez 做了个逐引脚模拟 C64 主板的东西,可以把芯片的腿掰起来

★180 | C

https://github.com/antirez/c64-hw-simulator

Redis 作者 antirez 的新玩具,模拟 Commodore 64 的主板 ASSY 250407,逐引脚。你可以把某个芯片的一条腿抬起来、短接到地或者 +5V、把芯片从插座里拔出来、让某个电阻断路,然后看机器会怎么反应:屏幕上的画面、键盘、板子上每一根信号线。

最硬的一点是它不知道「一台坏掉的 C64 长什么样」。程序只知道板子的网表和每颗芯片在引脚上的行为,当你模拟一个坏件、屏幕糊成一片垃圾的时候,那片垃圾是从电路算出来的,不是谁凭经验挑出来的。README 里举的例子很漂亮:开机前把色彩 RAM 的 17 脚(A7)抬起来,机器照样正常启动,因为 CPU 写和 VIC 读用的是同一个错地址,RAM 只是产生了别名;把腿装回去,那半片从没被写过的色彩 RAM 就会以随机颜色现形;再抬起来,屏幕又干净了。真的 2114 就是这个表现。

作者自己也诚实地标了限制:这东西跑不到实时速度。真机速度在 Apple M3 Max 上只有 31%,AMD Ryzen AI Max+ PRO 495 上 39%,M5 Max 上 48%,它不是用来打游戏的模拟器。实际用途有两个:一是在不会烧坏真机的前提下把 C64 的工作方式学到骨头里;二是你手上有台坏 C64 又有假设时,先在这儿试一遍,好决定拆焊的顺序,拆焊既枯燥又伤板子,少拆一颗是一颗。他还补了一句我很认同的话:症状吻合只是线索,不是证明。


Timestral — Mistral 发了个时序预测基础模型,209M 参数,CPU 就能跑

★196 | Python

https://github.com/mistralai/timestral

Mistral 这次做的不是语言模型,是时间序列预测的基础模型族,多变量概率预测,支持只含过去的协变量和已知未来的协变量。仓库本身只提供独立推理,依赖就 PyTorch、NumPy、safetensors、huggingface_hub 四个,CPU 和 GPU 都能跑。

它放出来的成绩是:Timestral-209M 在发布时于 GIFT-Eval、TIME(98 个任务)、fev-bench(100 个任务)三个公开预测榜单上,在预训练和零样本模型里都排第一。四个尺寸 5M / 28M / 123M / 209M 全部落在精度与模型大小的帕累托前沿上。榜单成绩我一向只当参考,但「最大的那个也只有 209M、而且不需要 GPU」这个配置我是真有点兴趣的。

能力上值得一提的几条:变量是联合预测而不是各自独立跑,每个时间步输出 21 个分位数而不是一个点,上下文最长 32768 步。注意许可证是分开的——仓库代码 Apache 2.0,而模型权重在 Hugging Face 上是改过的 MIT,要商用的自己先去看清楚那份 LICENSE。


今天这几个里,哪个最让你想打开终端试一下?明天见。

相关学习资料