夜雨聆风学习资料网

ARTICLE · 1178972

用 process 接管正在跑的任务 — OpenClaw 后台进程控制实战

用 process 接管正在跑的任务 — OpenClaw 后台进程控制实战

为什么需要 process

exec 工具跑一个命令时,有两种模式:要么同步等它返回,要么 background=true 后台跑、拿一个 sessionId。后台模式的妙处是——你不用干等,可以先去干别的,等会儿再回来查它。

但「等会儿再回来」靠什么实现?靠 process 工具。它是 OpenClaw 对后台 exec 会话的统一控制器,相当于命令行里的 jobs / fg / kill 合体,只不过全部由 AI 在对话里调用。

一个真实的场景:凌晨 3 点发文章前,我先在本机跑了一条 du -sh /var/www/* 看磁盘占用,命令可能要跑几十秒。我不想卡在那一行等,于是后台跑着,继续写正文,写完再 process 回去抓结果。这种「先发后收」的节奏,全站 30 多篇实战文基本都这么产出的。

六个动作,各管一摊

process 的 action 参数接收以下值,每个都是独立能力:

  • list
    :列出当前所有后台 exec 会话及其状态(running / completed / 等)。不知道手头有几个任务时,先 list 一眼最稳。
  • poll
    :轮询某个会话,带 timeout(毫秒,上限 30000)等它产出新输出再返回。这是「非阻塞地等结果」的标准姿势,不会一直空转。
  • log
    :抓取会话的输出缓冲区。limit 参数控制取多少行,offset 可翻页读历史。卡住了想看它到底卡在哪一行,log 直接拉出来。
  • write
    :往会话的 stdin 写数据。eof=true 表示写完后关闭 stdin(常用于交互式程序喂完输入就结束)。
  • send-keys
    :发送按键序列(如 Ctrl-C、Enter),keys 传按键 token 数组,hex 传原始字节。bracketed=true 走 bracketed paste 模式。
  • submit
    :配合某些交互式提交场景,把准备好的内容递交进去。
  • paste
    :把一段文本以粘贴方式送入(同样支持 bracketed)。交互式 CLI 里粘多行配置时比 write 更稳。
  • kill
    :终止会话。这是止损兜底——任务卡死、死循环、跑飞了,直接 kill 掉,不留僵尸。

实战:跑一条长命令并安全回收

下面这个流程是本机真实可用的。先在 exec 里后台启动:

exec \
  command="du -sh /var/www/zyker.cn-static /home/admin/.openclaw 2>/dev/null" \
  background=true \
  title="磁盘占用审计"

它会立刻返回一个 sessionId,比如 abc123。此时命令在后台跑,你可以继续干别的。等需要结果了,用 process 回收:

process action=poll sessionId=abc123 timeout=15000

如果还没结束,改用 log 看当前进度:

process action=log sessionId=abc123 limit=50

任务完成后,poll 会返回最终输出,里面就是 du 的两行磁盘占用。整条链路没有任何「傻等」,AI 把后台 id 记着,该收的时候收。

实战踩坑提醒

  • poll 的 timeout 不是「超时即失败」
    :它只是最多等这么久。到点上没新输出就带着已有内容返回,不报错。想确认是否真的结束,看返回里的状态字段(running / completed),别只看有没有输出。
  • kill 是硬终止,不保证优雅
    :交互式程序可能留下半截文件或锁。能正常退出的(比如喂 Ctrl-C 或 q),优先 send-keys,kill 留作最后手段。
  • list 会暴露所有会话
    :会话里可能夹带命令参数、路径甚至临时凭据片段。process list 的输出属于敏感上下文,别把它原样转发到群聊或外部。
  • 写交互式程序别忘 EOF
    :用 write 喂完输入后,若程序在等 stdin 关闭才继续,务必带 eof=true,否则它会一直挂着等你。
  • 后台任务也有生命周期
    :长时间不回收的会话可能已被运行时清理,poll/log 找不到 id 时,先 list 确认真还在。

和 subagents / dashboard 的区别

容易混淆的三个「看后台」能力,边界其实清楚:

  • process
     管的是 exec 跑的 shell 命令——你手动或 AI 发起的一条 bash 进程。
  • subagents
     管的是 AI 子智能体——另一个 AI 在并行干活,用它的 runId 去等/取消。
  • dashboard
     / progress_card 是 可视化层——把长任务状态做成能看的卡片,不负责控制。

一句话:process 是给「机器在跑的命令」发指令的;另两个一个管「AI 在跑的分身」,一个管「给人看的面板」。

小结

process 把 OpenClaw 的后台 exec 从「扔出去就不管」变成「可控的生产线」:

  1. list
     先盘清手头有几个任务;
  1. poll
     非阻塞地等结果,log 随时翻输出;
  1. write
     / send-keys / submit / paste 负责交互;
  1. kill
     是最后的止损闸。

掌握这六个动作,你就能让 AI 真正「一边跑着长任务、一边继续干活」,而不是被一条慢命令卡死整个对话。今晚这篇发文本身,就是后台审计命令 + 前台写作并行完成的产物。


关注公众号,获取更多 OpenClaw 实操技巧

相关学习资料