SKILL.md 5.74 KB

name: base-task-loop description: "通用任务执行手册:RESEARCH → PLAN → EXECUTE → VERIFY 四段式的每一步该产出什么、怎么流转、怎么自证做完。所有新本体从 _base 继承的默认主技能。" layer: 1 domain: general keywords:

  • task-loop
  • research-plan-execute-verify
  • handoff

- self-verification

⚠️ 本文件仍是 _base 通用骨架,还没有按角色填充过。 上面那行 LEMONBOSS_BASE_SKELETON 标记就是证据:它在,说明 agent-creator 还没把 这份定义改写成本角色专属的内容。标记被清除之前,这个本体不会从 draft 转正 (判据见 server/services/agent-locator.js 的 missingBodyDefinition), 也就不会被任何公司雇走。要让它上岗,就把本文件重写成这个角色真正的定义, 连同这段说明一起删掉 —— 保留它去补内容,等于告诉系统"我还没写完"。

Skill: 通用任务执行回路

这是 _base 骨架自带的主技能,每个新本体出生时都带着它。 agent-creator 之后会用角色特化的技能覆盖或补充本文件;在被覆盖之前, 按本文件干活就能把一个任务从"收到"推到"可验收的完成"。

何时用

收到任何一个上级派发的任务时。跨度小到"改一行配置",大到"实现一个子系统", 四段式都不跳 —— 小任务的四段可以各只有几行,但不能没有。

先确认三个坐标(一次,30 秒)

提示词开头有一段运行时坐标声明。开工前先把它读明白,它决定了你后面每一次读写的落点:

坐标 是什么 规矩
cwd(工作目录) 本次任务的私有目录 草稿 / 日志放这儿,会被清理
本体目录 你自己的定义(agent.md / soul.md / 主技能) 只读;从 cwd 数是 ../../({任务ID} 一层、{公司ID} 一层)
交付物落点 声明里明写的那个目录 只有写到这里的东西才算交付

坐标声明里没出现的路径一律不写,代码仓库根目录尤其不许写 —— 边界守卫会把越界 判成节点失败,而且归因常常落到别的节点头上,排查代价极高。 ../../ 之外要读什么,先确认那是不是你的边界内。

四段式

阶段一:RESEARCH(调研)

目的:把任务从"一句话"变成"一组已知事实 + 一组待定问题"。

  1. 读任务本身:目标是什么、验收人是谁、有没有给参考物。
  2. 去磁盘上找背景:相关代码 / 文档 / 上一轮的产出 / 同类任务的历史结果。 不要凭记忆断言仓库里有什么,读一眼的成本远低于基于幻觉规划的返工。
  3. 列出空缺:口径没定的、落点没说的、两种解法差异很大的。 能自己拍板的写下"我按 X 处理,理由 Y";真拍不了板的,这时候问上级(一次问全)。

产出 _research.md:已知事实(带出处路径)、空缺与处置、初步判断。 写给"失忆之后的你自己"看 —— 下一阶段你手上只有这份文件。

流转:

node bin/lemon.js task transition --agentId <你的ID> --phase plan --artifact <_research.md 路径>

阶段二:PLAN(规划)

目的:把事实变成一条可执行、可验收的步骤序列。

  1. 先写验收标准,再写实现步骤。验收必须是能跑的命令 + 能看的预期结果; "应正确处理边界情况"是废话,node cli.js < empty.txt && echo OK 才是标准。
  2. 步骤切到"一步能做完、做完能立刻验"的粒度。一步超过五条验收,说明塞了两件事,拆开。
  3. 写明本次不做什么,以及每一步会写到哪个文件(落点按坐标声明)。
  4. 列出风险与回退:哪一步失败要怎么退回去,别把系统留在中间态。

产出 _plan.md。流转:

node bin/lemon.js task transition --agentId <你的ID> --phase execute --artifact <_plan.md 路径>

阶段三:EXECUTE(执行)

目的:按 _plan.md 落地,不夹带计划外的改动。

  • 改已有文件前先完整读一遍现状;新建文件前先确认没有同名的既有实现。
  • 一次一步,做完一步就地自查(文件真写出来了吗?内容是你以为的那份吗?)。
  • 计划外发现的问题:记下来,不顺手改。顺手改会让验证阶段说不清是哪一处生效了。
  • 交付物写进坐标声明给的落点;cwd 里只留中间草稿。

产出:实际交付物 + 一份改动清单(改了哪些文件、各自为什么)。流转:

node bin/lemon.js task transition --agentId <你的ID> --phase verify

阶段四:VERIFY(验证)

目的:自己证伪自己,而不是自己说服自己。

  1. 逐条跑 _plan.md 的验收命令,把真实输出贴进验证记录 —— 不贴输出的验证不算验证。
  2. 回读一遍交付物的落点:路径存在吗?内容完整吗?别人按你写的路径能找到吗?
  3. 反向检查:如果我的改动没生效,哪一条验收会红?一条都红不了,说明验收写空了,回去补。
  4. 失败 → 把"试了什么 / 报什么错 / 判断的原因"写进 _lessons.md,打回上一阶段重来。
  5. 确实全过 → report_task({status: "PASS"}),附上交付物路径与验收输出摘要。

硬规矩(违反即事故)

  • 未走完四段直接汇报 PASS:严重违规。
  • 交付物留在 cwd:等于没交付,下游读不到、索引指向空气且不会报错。
  • 写坐标声明之外的路径(尤其仓库根):节点会被判越界失败。
  • 汇报里写"应该没问题 / 大概可以":没跑过就是没做完,如实报 FAIL 更省事。