长任务最怕的不是 Agent 停了一次,而是恢复后重复做了已完成的事,或把没核实的结果报成完成。更稳的办法是同时保留两种状态:用固定会话键接回对话,用一份简短检查点记录已经做过什么、下一步是什么,以及哪些结果还没验收。
这篇用本机 OpenClaw 和 Ollama 跑一个虚构上新任务。两轮命令分别启动独立进程,但共用一个 session-key。练习会先规划,再续写;每次都检查恢复标记。不会连接店铺、发布商品或上传真实资料。
先把任务切成能验收的小段
不要只给 Agent 一个“跑几个小时把事情做完”的大目标。先写出几个有明确结果的小阶段,每一段都包含:输入、允许动作、成功条件和停止条件。例如“列出三本虚构书目”是可检查的;“把店铺运营好”则没有清楚的完成边界。
在每段结束时更新检查点。最少写明:任务 ID、已完成且有证据的事项、未完成事项、下一步唯一动作、重跑前要检查的副作用,以及证据文件位置。练习包里的 checkpoint-template.md 可以直接复制。
OpenClaw 的会话键用于选中同一个会话;会话记录可以跨 CLI 调用继续使用。openclaw sessions tail 可查看本地运行轨迹。轨迹会显示工具名称和参数,所以复制、分享前要先检查其中是否含路径或敏感内容。Agent CLI 文档 · Sessions CLI 文档
固定续跑会话
练习使用 --dev 隔离出来的 OpenClaw 配置,以及已经安装的 qwen3.8-27b:latest。先运行 ollama list 确认本机有这个模型;如果没有,就停在这里,不要为本教程执行 ollama pull。
纯本地对话还有个容易漏掉的地方:聊天模型选了 Ollama,并不代表 OpenClaw 的记忆检索也走本机。未指定记忆服务时,向量检索默认会用 OpenAI。练习先在隔离配置中关闭记忆搜索,运行时再移除 OpenAI Key,并把 Ollama 的本机认证标记传给进程。Ollama 本地设置 · 记忆检索配置
openclaw --dev config set memory.search.enabled false --strict-json
openclaw --dev config set tools.deny '["*"]' --strict-json
本练习只输出文字,因此明确拒绝所有工具。OpenClaw 的工具拒绝策略优先于模型提示,也会在沙箱关闭时生效;真实任务需要工具时,应只放行完成这项任务所需的工具,并配合沙箱和审批。仅在提示里写“不要调用工具”不是安全边界。工具策略文档
下载长任务断点续跑练习包,解压后在练习目录打开终端。第一轮:
env -u OPENAI_API_KEY OLLAMA_API_KEY=ollama-local openclaw --dev agent --local \
--model ollama/qwen3.8-27b:latest \
--session-key agent:main:s265-resume-demo \
--message-file 续跑-第一轮.txt --timeout 300 --json > round1.json
第二轮要用同一个 --session-key,只换提示文件:
env -u OPENAI_API_KEY OLLAMA_API_KEY=ollama-local openclaw --dev agent --local \
--model ollama/qwen3.8-27b:latest \
--session-key agent:main:s265-resume-demo \
--message-file 续跑-第二轮.txt --timeout 300 --json > round2.json
--model 明确选中 Ollama,--local 在当前进程里运行嵌入式 Agent,--session-key 让两次运行落到同一个会话。--local 需要独占该配置的状态目录;不要同时让该 --dev 配置的网关或另一轮本地运行占用状态目录。Agent CLI 文档
OLLAMA_API_KEY=ollama-local 是本机 Ollama 使用的标记值,不是真实云端密钥。教程用的模型已经在测试机上;练习包不会下载模型,也不会修改普通 OpenClaw 配置。两轮完成后运行:
python3 scripts/check_resume_results.py round1.json round2.json
检查器会核对两轮都使用 ollama/qwen3.8-27b:latest、会话 ID 相同、第二轮含有两项恢复标记,并确认终端没有模型改道。完整提示和检查点模板都在练习包里。
本机实测:换进程,不换会话
我在 Apple M1 Max、64GB 内存的 Mac 上用 OpenClaw 2026.10.1、Ollama 0.35.1 和本机 Qwen3.8-27B 做了两轮虚构任务。两次成功运行的 session-key 和 sessionId 一致;第二轮没有重发完整计划,仍恢复出 resume_id=s265-7c21 与 checkpoint=松果-3阶段,并完成三本虚构书目的字段和检查清单。
| 轮次 | 模型耗时 | 实测结果 |
|---|---|---|
| 第一轮 | 142.2 秒 | 建立三阶段计划,输出两个恢复标记;本轮曾调用一次 exec,只在 /tmp 写入虚构检查点 |
| 续跑轮 | 93.3 秒 | 相同会话 ID;输出三本虚构书目、检查清单和原恢复标记;最终这轮没有任何工具调用 |
第一轮提示里写了“不要调用工具”,模型仍选择了 exec。我检查了运行轨迹,确认它只改写了唯一的虚构 /tmp 检查点;随后在 --dev 配置中拒绝全部工具,再以同一会话键续跑。这个结果说明:提示词可以描述意图,工具策略才负责限制权限。
本次验证的是“两个独立 CLI 进程通过同一会话记录继续任务”,不是连续运行几小时的稳定性证明。也没有验证系统崩溃、电源中断、长对话压缩或真实业务副作用恢复。练习数据是虚构的,聊天推理使用本机 Ollama;一次最初的配置探测发现默认记忆检索会尝试 OpenAI Embeddings 并收到 401,关闭记忆搜索、移除 OpenAI Key 后的正式运行均由 Ollama 完成。
封面插图由本机 AI 生成,标题由代码排版。
恢复时先检查,再继续
恢复任务时,不要让 Agent 看到“未完成”就立刻重跑。先检查检查点列出的证据文件和最近一次副作用:文件是否已经生成、消息是否已发送、支付或发布请求是否已经提交。对可能产生重复副作用的动作,先查状态或使用幂等键;不能安全判断时先停下来交给人确认。
最后再核实交付物本身。检查点写着“完成”不代表文件正确,运行轨迹写着“done”也不代表线上服务已验收。让 Agent 用具体证据逐项对照成功条件,未检查的部分保留为待办。