OC
OpenClaw 中文解释版

给五岁小朋友也能看懂的说明书

简要总结

PTY and Process Supervision Plan

这页说明书讲的是,电脑里有一些“小任务”在跑来跑去,就像你有很多玩具小汽车在轨道上开。我们要给它们找一个“交通警察叔叔”,让警察叔叔管好它们什么时候开始、什么时候停下、什么时候该回家,这样就不会乱跑或者停不下来了。这页是给想了解这个“交通警察”是怎么工作的大人看的。

五岁小孩版解释

我们想让电脑里长时间运行的任务,比如一个命令要跑很久,能被管得好好的。不管它是“在前台跑”(像你一直盯着看的动画片),还是“在后台跑”(像妈妈在厨房煮饭,你没一直看),我们都要能安全地让它停下来、等它结束,或者把它清理掉。

我们已经有了一个“警察叔叔”,它住在电脑里一个叫 src/process/supervisor 的房子里。这次,我们主要做了下面几件事,让它变得更厉害、更安全:

  1. 给一种特殊的任务定好规矩。有一种任务叫 PTY,你可以把它想成是需要一个“小对话窗口”的任务。以前,告诉它做什么的指令可能会被弄乱。现在,我们用一个专门的 ptyCommand 来告诉它,就像给警察叔叔一张写清楚地址的纸条,这样就不会送错地方了。

  2. 让“警察叔叔”和“玩具工厂”分开。以前,“警察叔叔”需要知道“玩具工厂”(就是 agents)里的一些秘密才能工作。现在我们把它们分开了,警察叔叔只用管好自己家门口的事,这样两边都不会互相打扰,变得更简单。

  3. 让“停止”和“清理”动作更可靠。当我们要让一个任务停下(kill)或者把它清理走(remove)时:

    • 首先,会请“警察叔叔”去找这个任务,让它停下来。
    • 如果警察叔叔一时没找到这个任务(可能它藏起来了),我们还有一个备用的“终极大招”,可以直接在电脑的操作系统里找到它并让它消失,保证一定能停下来。
    • 要小心哦,remove 这个动作,一旦我们说要清理,就会立刻把这个任务从名单上划掉,这样就不会搞混了。
  4. 用一个地方管“闹钟”。我们给一些需要“看时间”的任务(watchdog,像闹钟一样)定好了统一的规则,放在一个叫 cli-watchdog-defaults.ts 的文件里。其他地方都用这里的规则,这样就不会有的闹钟响得早,有的响得晚了。

  5. 扔掉没用的旧工具。我们把一个已经没人用的旧工具 killSession 扔掉了,这样工具箱里就更整齐了。

  6. 做了更多“安全演习”。我们写了很多新的测试,就像消防演习一样,专门检查:

    • PTY 任务的指令是不是准确传过去了。
    • 当警察叔叔找不到任务时,那个“终极大招”能不能真的起作用。
    • 各种停止任务的方法是不是都有效。

一些重要的提醒:

  • 如果整个程序重启了,那么之前正在跑的那些任务不会被自动找回来。这是这次我们故意这么设计的,就像停电后,有些没保存的游戏进度会丢失一样,这样更安全。
  • 有一个叫 runExecProcess 的地方,它现在做的事情有点多,以后可以把它拆成几个小部分,让每部分只做一件事,这样会更清楚。但这次我们先不动它。
  • 以前就有的好规矩我们都保留着,比如检查任务是不是被允许运行、清理任务输出的杂乱信息等,这些都没变。

怎么检查一切都好呢? 我们可以运行一些测试命令,就像让“警察叔叔”和“小任务”们一起做一遍广播体操,看看动作齐不齐。用的命令是 pnpm vitest 后面跟着很多测试文件的名字,比如 src/process/supervisor/supervisor.test.ts。要检查所有代码有没有写错,可以用 pnpm build 这个命令。