ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

smolvm 分支与检查点实战:定时捕获、任意世代恢复、暂停续跑与批量分支的完整操作手册

smolvm 分支与检查点实战:定时捕获、任意世代恢复、暂停续跑与批量分支的完整操作手册 虚拟化AI Agent人工智能CLI【免费下载链接】smolvmAn embeddable, portable, branchable virtual machine to safely run Agents locally.项目地址https://gitcode.com/gh_mirrors/sm/smolvm点击查看免费下载导读smolvm 是可在本地安全运行 Agent 的可嵌入、可移植、可分支虚拟机。当 Agent 或任务的状态需要“活过机器本身”——需要回滚、需要周期性地留下可恢复的时间点、需要把一个准备好的机器风扇式扩散成多个 worker 时就要用到 分支与检查点branch-and-checkpoint 能力。本文以该技术包的完整操作手册 SKILL.md 为主线带你走通「检查 → 造源机 → 定时捕获 → 任意世代恢复 → 暂停/续跑 → 分支并保留分支点 → 清理」的七步全流程并深入解读每个脚本的参数语义、底层引擎规则与平台差异读完即可在自己的 macOS / Linux / Windows 主机上复现整套操作。三条决定全局的基础事实手册开篇就强调下面三件事塑造了本技术包的一切设计也是你后续所有操作必须牢记的前提smolvm 自身没有调度器也没有保留策略。周期性检查点必须由外部定时器驱动checkpoint.sh 就是定时器要执行的唯一捕获命令其内部已把引擎要求调度器遵循的规则全部内置scheduling.md 则把它挂到 cron、systemd 或 launchd 之下。分支捕获的状态只留在这台主机上无法导出。因此一个分支点必须与同一时刻拍摄的检查点配对——检查点才是你能长久保留、导出和恢复的那份拷贝。start时的--branchable决定机器以后能做什么。分支源机在每个主机上都需要它在 macOS 上本包脚本采用的存储式捕获--store也需要它而 v1.22.2 未加该 flag 时报错deferred durable save requires file-backed guest RAM既不提 flag 也不提操作名。v1.20.0 之前的 macOS 甚至会在未加 flag 时拒绝检查点文件和暂停报guest RAM has no file-backed regions。Linux 的检查点与暂停则不要求该 flag。本包所有脚本一律以--branchable启动机器。从引擎源码看machine branch需要一个“以 CoW 内存分支”的源见 fork.rs 与 CLI 命令定义 machine.rs这就是该 flag 存在的底层原因而检查点在底层调用 libkrun 的 snapshot/restore内存必须是 file-backed 才能做“延迟持久保存”这也是 macOS 上存储式捕获必须--branchable的根因。七步全流程总览步骤脚本 / 操作作用1preflight.sh只读检查读取result与store_space_ok2create-source.sh造一台 RAM 与磁盘上都有状态可验证的源机3checkpoint.sh/schedule.sh捕获检查点带保留策略4restore.sh把任意世代恢复到一台新机器5pause/resume暂停并续跑恢复出的机器或任意可分支的机器6branch-point.sh生成子机器并保留它们起点处的检查点7cleanup.sh清理机器、检查点与 smolvm 的恢复缓存“Done”的定义恢复必须同时带回磁盘与内存状态调度必须恰好保留你要求的检查点数量、一个不少分支的每个子机都从“子机消失后你仍然持有的一份检查点状态”开始。Linux 上的运行使用其日期对应的脚本版本本版本v1.23.0的 preflight 与 cleanup 脚本已于 2026-10-03 在 Linux aarch64 的 v1.22.2 上验证。1. 前置检查preflight.shpreflight.sh是只读的不启动任何 VM、不写任何 smolvm 状态、不改任何组权限输出逐行keyvalue便于解析最后一行永远是resultready或resultblocked。scripts/preflight.sh --store ./store它检查本二进制是否支持--store、--history、checkpoint-log、pause以及恢复用的--at并报告本主机是否需要--branchable同时输出schedulerbuiltin_none与retentionbuiltin_none明确告诉你不用去引擎里找这两样东西。它还对照脚本验证版本VERIFIED_VERSION1.23.0给出version_statusmatch|newer|older并在版本不同时提示“flag 和报错文案每个版本都在变动手前对照实际二进制输出”。store_space_okno会直接阻断后续步骤原因有两类实测事故磁盘写满时的一次捕获发布不了任何东西磁盘满时恢复的机器带着 guest I/O 错误启动之后连正常删除都做不了详见 traps.md 的“full disk”条目delete --force都删不掉只能靠cleanup.sh --reap杀掉 VM 进程后删除。2. 准备源机create-source.sh自带可验证状态的工作负载scripts/create-source.sh smolskill-src # 用于检查点与恢复 scripts/create-source.sh smolskill-bp --branch-ready # 用于批量分支工作负载每秒向/tmp写一个递增计数器——/tmp是 tmpfs、即 RAM——并向磁盘/root/setup.txt写标记。恢复后计数器回来了才能证明内存也回来了而不仅仅是磁盘。--branch-ready让工作负载在 setup 完成后停车在smolvm-branch-ready供批量分支等待。脚本用smolvm machine create --net --mem 1024 --image alpine -- sh -c workload建机、smolvm machine start --name name --branchable启动并轮询/root/setup.txt出现SETUP_DONE而非等待 start 命令返回最后输出workload_ready_after_s、ram_token与resultup。或使用你自己的机器用下面各步骤里的--name指定自己的机器。在 macOS 上若它以非--branchable启动第一次捕获就会失败v1.22.2 报deferred durable save requires file-backed guest RAMv1.20.0 之前报guest RAM has no file-backed regions唯一修复是带 flag 重启smolvm machine stop --name worker smolvm machine start --name worker --branchable这是一次普通的重启磁盘状态保留RAM 与/tmp内容丢失一次。操作前务必向用户说明。此后这台机器每次 start 都要带该 flag 才能持续可检查点。捕获还会拒绝绑定宿主资源的机器带以下任一资源的机器无法捕获报错为the initial portable checkpoint profile does not support ...; stop or detach these resources before capture并指名具体资源宿主挂载-v、已发布的 socket、远端卷、宿主 secret 引用、自定义 DNS、命名网络、GPU、CUDA、Rosetta、--ssh-agent或 Docker socket。GPU / CUDA 机器因此完全在本文能力范围之外。3. 捕获一次或按计划scripts/checkpoint.sh --name smolskill-src --store ./store --keep 6 --history 2 scripts/schedule.sh --name smolskill-src --store ./store --every 10 --times 4 --keep 2 --history 2每次捕获进入 store 旁的新目录machine-label-UTC 时间.smolcheckpoint或进入--out dir指定的目录必须与 store 在同一文件系统。只有当checkpoint-log把该输出列为(this checkpoint)时才判定“已发布”之后才删除超出--keep的最旧目录并对 store 执行checkpoint-prune。同一台机器已有捕获在跑时新的捕获以退出码 3 和resultskipped退出。checkpoint.sh的参数语义源码注释与校验见 checkpoint.sh参数含义默认值 / 约束--name源机器名必填--store dir检查点存储目录不存在则创建必填--out dir检查点目录的落点默认 store 的父目录必须与 store 同文件系统--label word进入输出名默认ckpt--keep K保留该 label 最新的 K 个检查点目录并删除更旧的然后checkpoint-prune整数且 ≥ 1--history N每个新检查点保留的早期世代数smolvm 默认 32--keep不能单独约束磁盘必须一起约束脚本内部实现的引擎规则对应引擎文档的“周期使用规则”用 store 旁的mkdir原子锁实现“同一源一次只能有一个捕获”macOS 没有flock(1)锁的主人进程消失后会被接管输出名用 UTC 定宽时间戳保证永不覆盖发布状态从checkpoint-log读回、不以退出码为准保留时整目录删除、随后checkpoint-prune。schedule.sh用于你在旁观察的会话按--every秒间隔跑--times次每次打印runN rc rc took_s与关键输出行捕获耗时 ≥ 间隔时给出警告结束后汇总run1 rc0 took_s2 ... kept1 store_size 59M resultcaptured run2 rc0 took_s5 ... kept2 store_size 76M resultcaptured run3 rc0 took_s2 ... kept2 store_size 95M resultcaptured run4 rc0 took_s1 ... kept2 store_size114M resultcaptured captures_ok4 captures_failed0 longest_capture_s5 resultschedule_ok这是 v1.18.2 的实测输出。10 秒间隔只是为了看着它工作真实调度用分钟级见 scheduling.md。间隔按longest_capture_s定而不是按暂停时长源机只暂停百分之几秒命令却要花数秒因为源机恢复后保留的 RAM 还要被哈希和压缩。--keep单独并不能约束磁盘每个被保留的检查点还带着--history个更早世代默认 32所以上面 store 保留两个目录仍在 59→76→95→114 MB 增长。两个参数要一起约束。选择规则想回滚到多远的“捕获数”就把--history设为那个值、--keep设为 1 或 2只有需要多个独立入口例如每个工作日一个时才多留目录。4. 恢复任意世代smolvm machine checkpoint-log ./smolskill-src-ckpt-time.smolcheckpoint scripts/restore.sh --from checkpoint --name smolskill-old --at ~2 scripts/restore.sh --from checkpoint --name smolskill-new~0是检查点本身~N是沿其历史回溯 N 代。恢复路径是machine create --from不存在machine restore子命令这一点在 CLI 解析源码 machine.rs 中可见create、checkpoint、checkpoint-warm、checkpoint-prune、checkpoint-log是并存的子命令并没有独立的 restore。世代列表来自checkpoint-log增量存储与--history的细节见 incremental-checkpoints.md。restore.sh只接受以smolskill-开头的名字这样 cleanup 才能找到它其余名字直接拒绝name must start with smolskill- so cleanup.sh will delete it。要用用户自选的名字就自己执行smolvm machine create --name name --from checkpoint --at ~N再smolvm machine start --name name --branchable。恢复出的机器以自己的名字作为 hostname其磁盘在检查点之上做写时复制CoW——macOS 上恢复一个 243 MiB 的检查点真实磁盘只占约 29 MB而du报告的是其五倍Linux 上则是检查点磁盘之上的小qcow2层。预算恢复磁盘时用df前后对比别信du。5. 暂停与续跑smolvm machine pause --name smolskill-new smolvm machine resume --name smolskill-new暂停保存 RAM、磁盘与正在运行的执行现场并停掉机器续跑把同一执行现场带回同名机器。用工作负载在内存中持有的值验证两台主机上暂停前计数器都是 31续跑后 macOS 读到 34、Linux 读到 33——说明它从停下的地方继续暂停期间没有运行。暂停中的机器拒绝stop和start报machine has saved execution; use resume or delete要么续跑要么删除。续跑失败可重试磁盘满时首次 resume 报extract paused checkpoint: failed to unpack ...释放空间后同一条machine resume成功RAM 计数器 8 → 14继续递增。这与引擎中 pause 底层的检查点实现一致——macOS 上 v1.20.0 之前未加--branchable时 pause 会报与 checkpoint 相同的guest RAM has no file-backed regions因为暂停本质上就是一次检查点。6. 分支并保留分支点scripts/branch-point.sh --from smolskill-bp --store ./store --count 2 --name-prefix smolskill-w scripts/branch-point.sh --from smolskill-src --store ./store --name smolskill-one批量分支先等源机 PID 1 变成smolvm-branch-ready工作负载停车处在停车状态下拍摄检查点然后分支。此时每个子机与那份检查点持有完全相同的状态源机停车前写入 RAM 的随机值在两个子机中与检查点的恢复中读回一致。实测输出source_parked_after_s1 checkpoint.../smolskill-bp-branchpoint-time.smolcheckpoint childsmolskill-w-0 childsmolskill-w-1 source_staterunning resultbranched单个子机--name先拍检查点、一两秒后再分支两个时间点相差源机在此期间做的事所以状态不完全相同。branch-point.sh源码中先调用checkpoint.sh --label branchpoint只有resultcaptured才继续machine branch并且从machine list的完整快照中逐一确认子机存在这正是为了避免pipefail下grep -q误报。注意源机在分支后可能frozen也可能running脚本只如实读取不预设。恢复出来的分支点不是停车的源机。启动时 helper 会释放工作负载以空SMOLVM_BRANCH_NAME运行--之后的子机程序所以从它再做批量分支会等待一个永远不会来的分支点默认--ready-timeout10 分钟后失败。正确做法用--name一次一个子机地分支或每 worker 恢复一次两种方式下子机拿到的都是原始子机们开始时的状态。7. 清理scripts/cleanup.sh --purge --restore-base --checkpoints ./store ./*.smolcheckpoint它删除脚本记录过的机器--cascade连带删除由它们分支出的任何机器无论其名字移除你指定的检查点目录与 store--purge在列表清空后一并删除状态文件。--restore-base会移除 smolvm 自己保留的恢复检查点拷贝——这些拷贝在每台机器和每个检查点文件都删除后仍然存在见下一节脚本对每个移除项打印removed或absent行。脚本最多等待 20 秒轮询机器列表因为 ephemeral 条目在 run 返回后才会退役所以它会明确告诉你“在等待”。--reap是最后手段杀掉此HOME下所有VM 进程只在该主机上没有别的需要继续跑的东西时才用。陷阱清单最昂贵的几个完整细节在 traps.md这里列出代价最高的--branchable在start时决定之后无法补加。分支处处需要它macOS 上存储式捕获也需要它。--output必须以.checkpoint或.smolcheckpoint结尾--store同此此时它命名一个目录。.checkpoint是 v1.19.1 起的名字脚本统一用.smolcheckpoint每个版本都接受。guest 内pgrep -f smolvm-branch-ready必然命中因为运行它的sh -c命令行本身就含该字符串。要读/proc/1/cmdlinebranch-point.sh即用tr \0 /proc/1/cmdline并匹配行首。pipefail下smolvm machine list | grep -q会把存在的机器报成缺失grep -q提前关闭管道后续写入失败使整个管道失败。先读入变量再搜索。machine stop --name对不存在的名字会留下空目录v1.18.2v1.22.2 上第二次 stop 还会把名字留在目录里读起来像泄漏。本包 cleanup 只 stop 仍被列出的名字。smolvm 保留已恢复的检查点含内存在 VM 缓存里macOS 上是vms/_restore-basev1.18.2 实测 243 MBv1.22.0 起为vms/_restore-checkpoints保留最近三个恢复本流程在 macOS v1.23.0 上实测 258 MB。删除检查点文件不会删除它们。捕获的退出码不是证明可用性以checkpoint-log的(this checkpoint)行为准本包脚本在删除任何旧检查点之前都会回读该行。一次磁盘写满导致的失败导出tar error: No space left on device (os error 28)若被只信退出码的调度器误判就会把上一个检查点也删掉、一个不剩。machine create --from的-e环境变量到达的是exec不是恢复出的工作负载被恢复的工作负载是拍摄检查点时正在运行的进程其环境随检查点而来。安全默认值以及它们为什么是默认值检查点就是机器的内存与磁盘。工作负载持有的一切、包括 secret都在其中。store 要放在只有你能读的磁盘上移除检查点时也要移除_restore-base与_restore-checkpoints。保留策略只在“新检查点已发布”之后才删除所以一次失败的捕获绝不会让你手里的好检查点变少。store 是本地的。它防“坏变更”不防“丢主机”要防后者用smolvm machine checkpoint --export-from ckpt --output ./offhost.smolcheckpoint导出为单个文件携带其保留历史并拷贝到别处--at ~1可以从导出的文件恢复。清理只删脚本记录在smolskill-前缀下的机器--cascade只额外波及由它们分支出的机器无论名字检查点只删你点名的路径。本包不提升任何权限也不改动 smolvm 配置。调度cron / systemd / launchd引擎的周期捕获规则与checkpoint.sh的对应关系详见 scheduling.md引擎规则脚本的做法同一 store、每次唯一输出命名为machine-label-UTC 时间.smolcheckpoint绝不覆盖同一源一次一个捕获store 旁取锁发现活动捕获退出码 3、resultskipped间隔依据完整捕获时长而非源机暂停时长打印capture_sschedule.sh在捕获耗时接近间隔时告警新检查点发布前保留旧检查点回读checkpoint-log新捕获未列为(this checkpoint)则不删除任何东西先删过期目录再checkpoint-prune整目录删除超出--keep的部分随后修剪 store捕获与修剪失败要记录并告警非零退出、resultFAILED并附原因把退出状态接到你的告警上实测v1.18.21 GiB alpine 机器双主机每次捕获 1–5 秒而源机只暂停 0.027–0.163 秒——工作负载感受到的是暂停调度必须容纳的是捕获。捕获比间隔长时不会并发跑有锁但会跳掉下一个时隙。cron每 10 分钟锁让重叠运行跳过而非堆积*/10 * * * * cd /srv/ckpt /path/to/scripts/checkpoint.sh --name smolskill-src --store ./store --keep 2 --history 12 capture.log 21 || logger -t smolvm-checkpoint capture failed, see /srv/ckpt/capture.logcron 环境极简smolvm必须在PATH上或由SMOLVM指定HOME必须是建机时那个smolvm 的状态经由HOME找到。systemd 用户级 timer# ~/.config/systemd/user/smolvm-checkpoint.service [Service] Typeoneshot WorkingDirectory/srv/ckpt EnvironmentSMOLVM%h/.local/bin/smolvm ExecStart/path/to/scripts/checkpoint.sh --name smolskill-src --store ./store --keep 2 --history 12 # ~/.config/systemd/user/smolvm-checkpoint.timer [Timer] OnActiveSec10min OnUnitInactiveSec10min [Install] WantedBytimers.targetsystemctl --user enable --now smolvm-checkpoint.timer journalctl --user -u smolvm-checkpoint.service # 每次捕获的 keyvalue 行OnUnitInactiveSec从上一次运行结束起算慢捕获会推迟下一次而非重叠OnActiveSec负责第一次触发实测 Ubuntu 24.04 上只有OnUnitInactiveSec时 enable --now 后 timer 没有任何下次运行。告警挂在 service 的OnFailure上。launchd!-- ~/Library/LaunchAgents/com.example.smolvm-checkpoint.plist -- plist version1.0dict keyLabel/keystringcom.example.smolvm-checkpoint/string keyProgramArguments/keyarray string/path/to/scripts/checkpoint.sh/string string--name/stringstringsmolskill-src/string string--store/stringstring/Users/you/ckpt/store/string string--keep/stringstring2/string string--history/stringstring12/string /array keyEnvironmentVariables/keydict keySMOLVM/keystring/Users/you/.local/bin/smolvm/string /dict keyStartInterval/keyinteger600/integer keyStandardOutPath/keystring/Users/you/ckpt/capture.log/string keyStandardErrorPath/keystring/Users/you/ckpt/capture.log/string /dict/plistlaunchctl load ~/Library/LaunchAgents/com.example.smolvm-checkpoint.plistmacOS 上机器必须以--branchable启动否则每次定时捕获都会失败v1.22.2 报deferred durable save requires file-backed guest RAMv1.20.0 之前报guest RAM has no file-backed regionscheckpoint.sh看到这两类文本时会点名原因。另请注意文中的 cron / systemd / launchd 形式本身是围绕“已实测的命令”的标准包装尚未用checkpoint.sh整体跑过只有 systemd timer 的首次触发在 Ubuntu 24.04 上用替身 service 验证过。平台差异一览完整矩阵见 platforms.md要点能力macOS arm64Linux aarch64Linux x86_64Windows x86_64实测版本全流程 v1.23.0v1.18.2 全流程、v1.22.2 一次v1.23.0 恢复过 Mac 检查点v1.14.2 后未再跑手工 v1.22.2无--branchable的检查点文件v1.20.0 起可用此前拒绝可用未跑可用无--branchable的 pausev1.20.0 起可用此前拒绝可用未跑可用checkpoint --store可用且需--branchable可用v1.16.1 拒绝未跑拒绝分支从运行中源机分支从运行中源机分支v1.16.1 为frozenv1.14.2 为running每次分支都需--freeze-source源保持frozen恢复出的磁盘.raw文件APFS 上 CoW检查点.raw之上的qcow2层未跑未测macOS arm64macOS 27.0.1、Apple M4、v1.23.0本包每个脚本端到端跑通。v1.20.0 起检查点文件与 pause 不再需要--branchable但--store与 branch 仍然需要。Linux aarch64Limalinux-kvm、Ubuntu 24.04、嵌套虚拟化v1.16.1 曾拒绝--storethis machines runtime does not support incremental checkpoint streaming并把分支源冻住v1.18.2 起两者都正常批量分支后源保持运行。该 Lima 宿主无法在 smolvm 30 秒就绪窗口内启动超过 2048 MiB 的 guest所以本文所有机器均为 1024 MiB。Windows x86_64检查点文件与 pause/resume 不需要--branchable带 flag 时 RAM 计数器暂停前 52、续跑后 56--store被拒绝this machines runtime does not support incremental checkpoint streaming; restart it with an updated libkrun, or omit --store for a standalone checkpoint因此 checkpoint.sh 无法在此运行分支每次都要求--freeze-sourceWindows currently requires --freeze-source; source continuation after a branch is not implemented源保持frozen且exec被拒。跨平台v1.23.0 起 arm64 Mac 上拍的检查点可在 arm64 Linux 上恢复已实测一次Mac → Lima前提与要求见 mac-to-linux.md。引擎验证记录Eval 提示词与实测结果手册附带了在隔离HOME、macOS 26.6.2 arm64 与 Limalinux-kvmUbuntu 24.04 aarch64上、全部 1024 MiB 机器、v1.18.2 发布的实测三个典型任务全部通过“每隔几分钟检查点这台机器只留最近几个并展示我能回到任意一个。”schedule.sh --keep 2 --history 2、十秒间隔四次捕获双主机均captures_ok4、kept2最新检查点checkpoint-log列出~0、~1、~2捕获之间写入的标记从--at ~2恢复为GEN1、从最新恢复为GEN3RAM 计数器同步恢复。第二次捕获撞上运行中的一次resultskipped notea capture of smolskill-src is still running (pid 13935). Run one capture at a time per source: ...“把这个准备好的机器扩散成 worker并保留他们开始时状态的精确拷贝。”branch-point.sh --count 2macOS 上源机停车前把8445写进 RAM两个子机都读到SETUP_DONE、各自CHILD名与8445分支点检查点的恢复也读到8445Linux 上同样流程读22642。两主机source_staterunning。“暂停我恢复的机器稍后带回来而不丢失正在运行的东西。”恢复机计数器ram before31 after34macOS/after33Linux横跨 10 秒暂停。另外 macOS 上磁盘写满时暂停的恢复机首次 resume 失败extract paused checkpoint: failed to unpack ...释放空间后同一条machine resume成功计数器 8 → 14 继续计数。v1.23.0 复验2026-10-04macOS 27.0.1 arm64校验和核对、全新隔离HOME所有脚本端到端。三次计划捕获captures_ok3、longest_capture_s1、三代checkpoint-log、~2与最新恢复、暂停前计数器 20 续跑后 24、批量分支两子机都持有源机 token、cleanup.sh --restore-base移除了 258 MB 的_restore-checkpoints。一次捕获现在会报告源机恢复Source resumed after 0.024s; packaging continued in the background。Mac 上拍的检查点在 Linux aarch64 上恢复成功Mac 上以 RAM 计数器 6 拍下输出40 MiB written、0.066s source pause拷到 Lima 后machine create --from与machine start各一秒计数器读到 7、五秒后 12RAM token 与磁盘标记与 Mac 一致guest 显示Linux 6.12.95。v1.22.2 复验2026-10-03macOS 双跑全脚本三次计划捕获、三代日志、~2与最新恢复、计数器 21→25、两子机同 token、cleanup 移除 275 MBLinux aarch64 全脚本单跑checkpoint_needs_branchableno、计数器 63→66、两子机同 token。未验证范围勿把下述能力当作已确认事实Linux x86_64 与 Windows 上的脚本bash跨小时的长调度只测了十秒间隔的四次捕获--history 32下 store 一天的增长未测Mac → Linux 之外的主机间恢复v1.22.2 及更早跨平台恢复被拒checkpoint host platform ... does not match ...Linux → Mac 与“存储式而非文件式”的迁移未跑GPU/CUDA 机器与--share-weights分支池--hold、branch-release与 Windows 之外的--freeze-sourceAPI 的恢复路由create的from字段——HTTP 上的 pause/resume 见 local-api。相关能力包dev-env只要求状态扛过一次 stop/start 时用。pack把机器作为文件搬到另一台主机包括恢复出的机器。local-api通过 HTTP 做 pause/resume。teardown更大范围的清理以及泄漏检查应排除什么。参考阅读branching.md分支语义、incremental-checkpoints.md增量存储与世代保留、pause-resume.md暂停/续跑各自是单项操作的权威参考本包把它们串起来跑并记录了每个版本上的实测行为。赞分享虚拟化AI Agent人工智能CLI【免费下载链接】smolvmAn embeddable, portable, branchable virtual machine to safely run Agents locally.项目地址https://gitcode.com/gh_mirrors/sm/smolvm点击查看免费下载相关推荐smolvm 分支与检查点实战指南定时快照、任意代恢复与分支点保留smolvm 分支与检查点实战指南定时快照、任意代恢复与分支点保留 本篇指南围绕 smolvm一个可嵌入、可移植、可分支的本地虚拟机的 分支branch虚拟化AI Agent人工智能CLI昇腾AI大赛获奖方案GraspNet1BGeomGraspAscend创新点与技术亮点总结昇腾AI大赛获奖方案GraspNet1BGeomGraspAscend创新点与技术亮点总结 GraspNet1BGeomGraspAscend是面向昇腾AI处深度学习计算机视觉人工智能DeepSeek-Coder-V2本地部署终极指南从零开始构建AI编程助手DeepSeek Coder V2本地部署终极指南从零开始构建AI编程助手 面对日益复杂的软件开发需求传统编程工具已难以满足现代开发者的效率要求。DeepS人工智能大模型代码模型DeepSeek上一篇如何3分钟批量下载音乐歌词ZonyLrcToolsX跨平台歌词下载工具终极指南下一篇无需安装的网页版三国杀随时随地享受跨平台策略对战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进