Copedal

文件与工作区

长任务护栏

超时、落盘日志、断点与逃生流程。

免费 免费阅读,也可以邮件索要技能文件。

runtime-guard 188 行 · 12 KB

背景描述

一句话:把"卡住"变成"可观测、可中断、可续跑"。 卡顿与卡死的根因只有四类——命令没有边界(永不返回)、输出没有预算(撑爆上下文)、状态没有落盘(丢失后重做)、失败没有止损(同一动作反复重试)。本技能逐条封死。

为什么这么做

卡住只有四种成因:命令没边界、输出没预算、状态没落盘、失败没止损。所以护栏落成开工前跑的三个脚本:guard.py 预检命令、budget.py 量要读的东西、断点脚本写目标。判 BLOCK 就换写法,不跟检查讨价还价;三条铁律要求超时、日志、存活判据同时在场,缺一条不许开工。四个成因各配一个动作。

pulse.py 把等待变成有据可查的等待:0 成功、124 总超时、125 空闲超时,看到 125 基本可以认定在等输入。这就是规则要求先读日志尾部、不要立刻重跑的原因。输出分三级,单次回显卡在 8 KB 或 200 行,全文只进 work/logs/ 的磁盘文件,对话里只留路径,需要细节再取行区间。护栏本身有成本,短任务别套这一层,长任务才划算。

真实踩坑

  • 超时被当成失败 退出码 124 是到点被切断,125 是一段时间没有新输出,当成普通失败处理就会原样重跑一遍。规则要求先读日志尾部,判断是慢还是死,再把超时设成预估时长的两倍。
  • 不带超时跑 npm install 没有超时也没有日志,命令是在装包还是在等密钥,谁也不知道,只能干等。三条铁律要求超时、日志落盘、存活判据同时在场才开工:pulse.py 给超时,work/logs/ 收日志,wait-port 探活。
  • 一次 grep 撑爆会话 几百行命中整段贴回对话,上下文立刻变成噪音,回复开始被截断。切片只给 120 行并带五行上下文,搜索结果卡在 50 条,更大的内容写进磁盘文件,对话里只留路径,必要时再按行区间取。
  • 同一命令试到第四次 原样重试第四次,结果多半一样,还多烧一轮。三振规则连续失败三次就停,强制三选一:换层级去看日志和源码、缩成最小复现、或者停下来说清缺哪个文件或凭据。选择写进断点文件,连已排除的假设一起记。

这个技能里有什么

  1. 适用场景
  2. 三条铁律
  3. 开工前 30 秒(三条命令)
  4. 一、长命令:一律走 pulse
  5. 二、常驻与交互命令:识别与改写
  6. 三、输出预算:L0 / L1 / L2
  7. 四、三振规则(防死循环)
  8. 五、卡死判定与逃生
  9. 六、断点续跑协议
  10. 七、并发与子智能体
  11. 八、收尾检查(5 条,缺一不算完成)
  12. 九、禁止清单
  13. 配套文件

目录就是技能文件自己的标题,顺序没有动过。

用法描述

任何可能超过 10 秒、产出超过一屏、或需要多轮次推进的任务都必须先过这道护栏:给命令加超时与日志落盘、给输出定量预算、给进度写断点文件,并提供卡死判定与逃生流程。当任务涉及构建/测试/安装/渲染/爬取、服务或 GUI 启动、大文件大日志大 diff、会话变慢或工具返回被截断、同一报错反复出现、长任务可能被打断或需要跨会话接力时使用。

怎么用

  1. 用邮箱收这个文件,它就是一个 SKILL.md。
  2. 放进 agent 读取的技能目录,目录名用 runtime-guard。
  3. 用描述里的触发句开头,或直接点名这个技能。

技能文件改成邮件发送,不再给下载链接。已登录就发到账号邮箱,没登录就留一个地址。