Consumer
用于“执行任务并归档结果”,与 producer 配合使用。
自动托管规则
- 调用
consumerskill 时,不要求用户手动运行任何命令。 - 消费循环默认由
skills/consumer/scripts/ensure_consumer.sh静默拉起(tmux后台会话)。 - 当连续空闲超过
IDLE_EXIT_SECONDS(默认 180 秒)时,consumer_loop.sh自动退出并释放会话。 producer在成功入队后应自动调用ensure_consumer.sh,实现“写入即触发消费”。
职责边界
- 只从
TASK_QUEUE.md获取任务并执行。 - 任务闭环后必须从队列移除,不保留已完成项。
- 每个已完成任务都要写入
TASK_RECORD.md。 - 任务必须满足 SSD 字段完整性,不完整任务直接标记
blocked。
循环执行流程
- 拉取任务
- 打开仓库根目录
TASK_QUEUE.md,从上到下读取第一条status: todo任务。 - 将该任务临时标记为
status: doing(避免并行冲突)。
- 执行任务
- 严格按
goal/method/verification执行。 - 若发现任务定义不完整(缺目标或缺验证),停止执行并回写
blocked说明,等待producer重新产出。
- 验证闭环
- 必须运行或检查任务中定义的验证手段。
- 验证失败则继续迭代;必要时记录失败原因与下一步。
- 出队与归档
- 验证通过后,将该任务从
TASK_QUEUE.md删除。 - 在
TASK_RECORD.md追加一条完整记录(含目标、方法、验证、结果、产物路径、时间戳)。
- 继续循环
- 继续读取下一条
todo任务,直到队列为空。
脚本执行语义
consumer_loop.sh会周期扫描TASK_QUEUE.md,并使用.task_queue.lock做互斥。- 每次只抢占一条
todo任务,先改为doing,避免并发重复消费。 - 调用 handler 执行任务:
- 返回
0:视为闭环成功,出队并写TASK_RECORD.md。 - 非
0:改为blocked,等待人工或producer修复任务定义。
- 返回
- 当队列持续无可消费任务达到空闲阈值后,消费者自动退出。
- 默认 handler 只自动执行
verification中可提取的命令:verification: cmd: <shell command>- 或
verification含反引号命令(例如`pytest -q`)
- SSD 必填字段:
goal、scope_in、scope_out、constraints、method、verification、done_definition、risk、complexity、created
记录模板(追加到 TASK_RECORD.md)
## T-0001 | YYYY-MM-DD HH:MM UTC
- goal: ...
- scope_in: ...
- scope_out: ...
- constraints: ...
- method:
- step1 ...
- step2 ...
- verification:
- command/check: ...
- pass criteria: ...
- done_definition: ...
- risk: ...
- result: pass/fail
- artifacts: ...
- notes: ...
并行协同约束
- 允许与
producer并行对话与行动。 producer只追加任务,consumer只消费任务,职责不交叉。- 发生冲突时以
TASK_QUEUE.md当前文件内容为准,先读后写,避免覆盖。