
一、你以为的”保存了”,其实早就丢了
很多人写文档或代码都有过这种经历:改了三十版,最后发现第一版才是客户要的,但那个版本已经被覆盖了。Windows 的”上一版”功能?聊胜于无,因为它依赖系统还原点,而很多人压根没开。Git?太重,对非程序员不友好。网盘的历史版本?限额有限,而且只按时间回溯,不按逻辑版本。
我见过最夸张的一个案例:某市场团队的方案文档被改了 47 次,最后想找 2 月那次”加了产品对比表”的版本,翻遍回收站和微信文件传输助手都没找到,只能让设计师根据记忆重新做,浪费了整整一天。
OpenClaw 在 2026 年 6 月发布的 4.2 版本里,把”轻量级版本管理”作为主打特性塞进了文件模块。这套机制不依赖 Git,不强制你写 commit message,但你每保存一次,它就会生成一个可命名的快照,存放在本地索引数据库里。下面我们直接看怎么用。
二、初始化工作区:把散落的文件收进同一个屋檐下
OpenClaw 的核心设计哲学是”工作区”(workspace)。一个工作区对应一个项目、一篇长文、或者一组相关文档。开始之前,先在项目根目录初始化:
openclaw init --workspace "Q3-市场方案" cd Q3-市场方案
执行后会在当前目录生成一个 .openclaw/ 隐藏文件夹,里面是索引库和快照存储池。文件本身不会移动,原文件该在哪还在哪。
接着把已有文件”接入”工作区:
openclaw workspace add ./docs/*.md openclaw workspace add ./images/
执行后用 openclaw workspace tree 查看结构:
Q3-市场方案/
├── .openclaw/
├── docs/
│ ├── 方案主文档.md
│ ├── 用户调研.md
│ └── 竞品分析.md
└── images/
├── 配图-01.png
└── 配图-02.png这看起来跟普通文件夹没区别,但关键在下一步——保存快照。
三、版本管理:每改一版,存一个”存档”
OpenClaw 不像某些云文档那样自动存一堆无法命名的历史版本,它需要你主动触发,但操作极简:
# 保存当前状态为一个命名版本 openclaw version save --name "加了产品对比表" openclaw version save --name "客户反馈后修订"
每次 save,会在 .openclaw/snapshots/ 下生成一个不可变的快照包,包含所有工作区文件的哈希指纹和差异块。回溯的时候:
# 列出所有版本 openclaw version list # 输出示例 v001 2026-07-10 14:22 "加了产品对比表" v002 2026-07-15 09:47 "客户反馈后修订" v003 2026-07-22 18:03 "终稿-待审核" # 比对两个版本的差异 openclaw version diff v001 v003 # 恢复到指定版本(默认不覆盖当前文件,而是生成一个对照分支) openclaw version restore v001 --as-branch
--as-branch 这个参数很关键。它不是简单地把当前文件覆盖回 v001,而是把 v001 复制到一个 .openclaw/branches/legacy-v001/ 目录,你可以用 openclaw workspace compare 同时打开两个版本对比,挑选段落回填。这比 Git 的 cherry-pick 还轻量,对非技术用户非常友好。
实际场景:上面那位市场同事如果当时用 OpenClaw,只要一句 openclaw version restore v001 --as-branch,两小时之内就能找回那版”加了产品对比表”的方案,而不是让设计师重做一整天。
四、代码片段管理:让复用代码有自己的版本树
如果你写代码,OpenClaw 4.2 之后还内嵌了 snippets 模块,可以把常用代码块(工具函数、SQL 模板、Prompt 模板)集中管理:
# 添加一个代码片段 openclaw snippet add --name "fetch-with-retry" \ --lang python \ --tags "http,retry" # 列出所有片段 openclaw snippet list
片段存放在 ~/.openclaw/snippets/ 下,是纯文本 Markdown,方便你用任何编辑器修改。但它同样有版本管理:
# 修改片段后保存新版本 openclaw snippet save fetch-with-retry --note "增加了指数退避" # 查看片段的版本历史 openclaw snippet history fetch-with-retry
调用片段的时候,不用打开文件,直接在终端或编辑器里用:
openclaw snippet use