
从 stable-diffusion.cpp、univer 和 mvt 出发,分别练习用一份实现对接多种计算后端、把表格与文档做成可嵌入组件,以及在本机分析手机备份里的取证痕迹,并给出今晚能跑通的最小路径。
master-913-b167b94 出在今早六点二十一分。12 univer 昨天上午十一点二十七分发出 1.0.0,当天晚上七点三十二分又补了 1.0.2。34 mvt 的 v2026.9.21 发布于 9 月 21 日下午五点零三分,三天前主分支上还有合并提交。56master-913-b167b94。12src/model/diffusion/ 下面是 unet.hpp、mmdit.hpp、dit.hpp、flux.hpp、qwen_image.hpp、wan.hpp 这样按模型家族拆开的文件,张量、图构建和执行器放在 src/core/。新增一个模型,基本等于新增一份图描述,再挂到同一套运行时上。想看清楚「框架怎么同时容纳差异很大的模型」,把两个模型文件并排读最快。docs/backend.md 讲的是运行期怎么把不同部分放到不同设备上。src/core/backend_fit.cpp 和 src/device_residency_manager.h 负责判断哪些张量放哪里;9 月 24 日那条「选择整体执行时预留 128 MiB 余量」的提交,就是这层判断的一个补丁,属于典型的显存边界问题。1src/model_io/ 里并排放着 gguf、safetensors、pickle、torch_zip 四个读取器。官方文档给的用法有两种:用 --type q8_0 这类参数在载入时自动转换,或者用 -M convert 提前转成 GGUF 再量化。同一篇文档还给了 SD1.5 在 512×512 下的内存表——f32 约 2.8 GB,q4_0 约 2.0 GB,开 Flash Attention 之后分别是 2.4 GB 和 1.5 GB。这几个数字摆在一起,「量化省的是哪一部分」就有了具体印象。8thirdparty/ 目录里放着 oniguruma(正则)、httplib(HTTP 服务)、stb、utf8proc、miniz、libwebp、libwebm,分词器也自己实现了一份(src/tokenizers/)。一个 C++ 项目怎样在不动系统包管理器的前提下把依赖收进来,这个目录就是现成答案。examples/cli 是命令行,examples/server 是一个 HTTP 服务,路由分成 OpenAI 兼容、sdapi 和 sd.cpp 三套,另外还有一个前端目录。README 的更新日志里,4 月 11 日那条写的是换上了新的内置网页界面。7master-913-b167b94 这一版一共九个产物。自己编 CPU 版只要 cmake 三步。真正的门槛在模型权重:SD1.5 的权重需要另外下载,几百 MB 到几个 GB;用 CPU 出图比用 GPU 慢得多,这一点先接受再动手。2910# 从发布页下载对应平台的压缩包,解压出 bin/sd-cli(这里用 Linux x86_64 CPU 版)
# 拿一份 SD1.5 权重
curl -L -O https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
# 一条命令出图
./bin/sd-cli -m v1-5-pruned-emaonly.safetensors -p "a lovely cat"
# 想在载入前就压好:转成 q8_0 的 GGUF
./bin/sd-cli -M convert -m v1-5-pruned-emaonly.safetensors -o v1-5.q8_0.gguf -v --type q8_0--type q4_0 重跑一次,比较耗时和内存占用;然后打开 src/model/diffusion/ 里任意两个模型文件,找出它们共用了 src/core/ 里的哪些函数。最后这一步比读文档有用,因为它直接展示新模型进来时到底要写多少代码。master-913-b167b94,README 也写明 API 和命令行选项可能频繁变动;要把它当依赖,固定到具体 commit 再用。@univerjs/preset-sheets-core 这类预设集合。想理解「一个 SDK 怎么同时服务只要基础表格的人和要全功能的人」,对比这两种装配就够了。1113@univerjs/engine-render 是一层共享的 Canvas 渲染引擎,各类文档共用它;engine-formula 是独立的公式引擎。文档类型因此只需要描述自己的数据和交互,把画和算交出去。11@univerjs/* 的 SDK 包保持在同一版本线上,@univerjs/icons 这类独立发布的包按其 package manifest 声明的兼容版本走。多人协作的项目里,这条约定能省掉大量「某个包版本对不上」的排查。11pnpm dev 起来的是一个把 Sheets、Docs、Slides 装在一起的工作台,用 Vite 8 做热更新。这个体量按包分块读比通读划算。11pnpm add @univerjs/presets @univerjs/preset-sheets-coreimport { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'
import '@univerjs/preset-sheets-core/lib/index.css'
const { univerAPI } = createUniver({
locale: LocaleType.EN_US,
locales: { [LocaleType.EN_US]: mergeLocales(UniverPresetSheetsCoreEnUS) },
presets: [UniverSheetsCorePreset({ container: 'app' })],
})
univerAPI.createWorkbook({})<div id="app" style="height: 100vh"></div>。想看完整仓库的形态,git clone 之后 pnpm install && pnpm dev。11univerAPI 写一个公式、改一个单元格、再把值读回来,这三步能把 Facade API 的粒度看清楚。接着在 Node 里用 Headless 模式跑一次同样的工作簿操作,把浏览器和服务端都能用的 API 边界找出来。141.0.2,@univerjs/presets、@univerjs/preset-sheets-core 和它们依赖的 @univerjs/* 保持同一条版本线。1.0.2 是补丁版,修了 PDF 导入的字体映射、PivotChart 重开丢数据和图表颜色渲染,发布说明写明这一版公开 API 保持不变;1.0.1 与 1.0.0 相隔几小时,升级直接落到 1.0.2 即可。4 许可范围要提前分清:仓库是 Apache-2.0,README 写明各功能的包可用性和许可不同,协作编辑、Worktree 这类能力要按对应的 Web SDK 和授权来看。1115v2026.9.1、v2026.9.7、v2026.9.14、v2026.9.21,最新一版在 9 月 21 日下午五点零三分发布。这一版把 iphone_backup_decrypt 升到 0.10.0,修了挂载信息的读写检测;上一版修的是「读到损坏的 sysdiagnose 压缩包时直接中断」和「把指标文件加载推迟到第一次使用」,还改过读 bugreport 时间戳时的时区处理。5 主分支在 9 月 22 日还有合并提交。6mvt 管版本、补全、插件和指标下载,mvt-ios 和 mvt-android 分别处理两种采集物。平台命令只是外壳,检查逻辑走同一套核心,这也是 iOS 和 Android 的支持能并排演进的原因。16mvt-ios check-backup;Android 吃的是 bugreport、ADB 采集出来的数据。整个分析在本机完成,备份始终留在自己手里。1617check-backup 负责把痕迹从采集物里提取出来,落成 JSON;check-iocs 可以拿着指标文件,重新比对这些已经提取出来的结果。指标和采集物因此能分开更新:拿到一份新披露的 STIX2 文件,把比对那一步重跑就行。18--iocs 可以重复传多个文件,也可以走 MVT_STIX2 环境变量。官方文档写明目前支持的是单值比较,比如 domain-name:value='...',多条件的布尔表达式还在支持范围之外;可匹配的类型限定在文档列出的那十几种,并且只有跟当前数据相关的模块才会用到。检查 URL 指标时会跟着短链做 HEAD 请求,并发上限 20,MVT_NETWORK_ACCESS_ALLOWED 可以关掉这类网络请求。18check-* 命令里加取证模块,或者注册新的顶层命令。想练「给一个成熟 CLI 加子命令」,这比从零写一个命令行工具更接近真实项目的样子。19pipx install mvt 或者 uv tool install mvt 一条命令,Python 要求 3.10 以上。Linux 上跑 mvt-android 需要装 libusb,只用 mvt-ios 的话可以跳过它。Windows 官方建议在 WSL 里跑,按 Linux 的步骤装。真正的门槛在数据这一侧:手上要有一份自己的设备备份或采集物,才跑得出结果。1617pipx install mvt
# 拉取公开的 STIX2 指标,之后会被自动加载
mvt download-iocs
# 分析一份 iOS 备份
mvt-ios check-backup --output ./out /path/to/backup
# 也可以指定自己的指标文件,可重复传
mvt-ios check-backup --iocs ~/iocs/malware.stix2 --output ./out /path/to/backup
# 换个指标再比一次,不必重跑提取
mvt-ios check-iocs --iocs ~/iocs/malware.stix2 ./outmvt-indicators;另外 AmnestyTech 的 investigations 仓库里,有 Pegasus、Cytrox 等已经公开案件的 STIX2 文件可以直接拿来练。17182021mvt --help 和 mvt-ios --help,把命令树过一遍;然后执行 mvt download-iocs,到它存放指标的位置打开一份 STIX2 文件,看一条指标长什么样。手上有备份的话,直接跑一次 check-backup,再打开输出目录里的 JSON,看每个模块各自命中了什么。v2026.9.21 这一线。17 两个边界值得提前知道。README 顶部挂着一条警告,v3 分支合并带来了破坏性变更,此前依赖 MVT 输出格式的脚本可能已经失效,衔接脚本之前先看一眼仓库里那条说明。1622 许可用的是项目自己的一份,README 写明目的是促成对设备的「经同意的取证分析」,要用在别人的设备上,先把它读完。1623 还有一条事实值得记住:公开指标能查到的是已经公开的活动痕迹,要判定一台设备是否被针对性攻击,需要非公开的威胁情报支持,Amnesty 为此单开了一条求助通道。16| 你想练的主线 | 仓库与本期信号 | 最小条件 | 第一条可观察路径 | 主要限制 |
|---|---|---|---|---|
| 推理实现的工程结构:一份代码对接多种硬件后端 | stable-diffusion.cpp · 今早 06:21 的滚动构建 master-913-b167b94 | 25.5 MB 的 Linux CPU 包,或者 cmake 三步自编 | 一条 sd-cli 命令出一张图 | 权重需要另外下载;CPU 出图慢;发布标签是滚动构建。(README) |
| 前端 SDK 架构:把一套核心组装成不同产品 | univer · v1.0.0 昨天上午发布,当晚连发到 1.0.2 | Node 22.18 以上、pnpm 11 以上 | 用预设包起一张能编辑的表格页 | 仓库是 5,808 次提交的 monorepo,按包分块读;协作等能力许可不同。(README) |
| 安全工具工程:把提取和比对拆成两步 | mvt · v2026.9.21,9 月 21 日下午发布 | pipx install mvt,Python 3.10 以上 | 跑 mvt download-iocs,再打开一份 STIX2 文件看结构 | 需要一份自己的设备备份才出得了结果;许可是项目自有许可。(README) |
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
huggingface.co
github.com
github.com
docs.univer.ai
docs.univer.ai
github.com
github.com
docs.mvt.re
docs.mvt.re
docs.mvt.re
github.com
github.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.