14.3 /loop + TODO.md:超长任务的异步执行

面向经管学生、研究者与从业者的 AI 智能体设计教材

作者

李学恒、林建浩、严翊歆

发布于

2026-05-11

14.3 配图

/loop 本身是定时轮询机制,TODO.md 是结构化任务清单。两者结合,可以实现一种实用的工作模式:用户把待办事项写进文件,Claude 定时读取并逐条执行,完成后自动更新状态。用户不需要在场等待。

核心思路

这个模式的运作分四步:

  1. 用户写清单:在 TODO.md 中列出待执行的任务,标记为 pending
  2. /loop 定时轮询:Claude 每隔固定时间读取 TODO.md,找到第一个 pending 任务
  3. 执行并更新:Claude 执行该任务,完成后把状态改为 completed,把执行结果写入日志
  4. 用户随时追加:用户可以在任意时刻往 TODO.md 追加新任务,Claude 下次轮询时自动拾取

启动命令:

▶ Claude Code
/loop 10m 读取 TODO.md,找到第一个状态为 pending 的任务,执行它,完成后把状态改为 completed,然后把执行结果追加到 progress.md

TODO.md 格式示例

# 任务清单

## task-001
- 状态:completed
- 描述:下载沪深 300 成分股列表,保存到 data/hs300.csv
- 完成时间:2026-03-14 10:32

## task-002
- 状态:in_progress
- 描述:从东方财富抓取最新一季度基金持仓数据
- 开始时间:2026-03-14 10:42

## task-003
- 状态:pending
- 描述:对比上季度和本季度持仓变动,生成增减仓分析报告

## task-004
- 状态:pending
- 描述:根据增减仓数据筛选连续两季加仓的个股,输出 watchlist

Claude 每次轮询时,按顺序找到第一个 pending 任务并执行。用户可以在 Claude 执行过程中继续往文件末尾追加新任务。

任务粒度建议

每条任务的粒度应控制在 Claude 单次执行能完成的范围内。如果一条任务需要 30 分钟才能做完,而 /loop 间隔设的是 10 分钟,会出现任务还没做完、下一轮轮询就触发的情况(不过 /loop 不会插队,会等当前任务结束)。建议每条任务控制在 5-15 分钟可完成的粒度。

异步分离:用户与 AI 的时间解耦

传统交互模式下,用户必须在场等待每个任务完成后再下达下一个。/loop + TODO.md 模式打破了这种绑定:

维度 传统同步模式 /loop 异步模式
工作流 用户输入 → AI 执行 → 用户查看 → 下一个 用户写清单 → AI 后台循环执行
用户是否在场 必须在场等待 写完清单后可以离开
任务追加 等上一个完成才能下达 随时往文件追加
适合场景 需要实时反馈的交互 批量处理、定时采集、夜间跑任务

这种模式在金融研究中有明确的应用场景。分析师在下午列好数据采集清单,Claude 在晚间逐条执行,第二天早上分析师到办公室时,数据已经准备好了。

多终端并行

打开多个终端窗口,每个窗口启动独立的 Claude Code session,各自运行 /loop,互不干扰:

# 终端 1:舆情监控
cd ~/sentiment-monitor && claude --dangerously-skip-permissions
▶ Claude Code
/loop 30m 检查 news/ 目录下是否有新文件,有的话做情感分析并更新 sentiment-log.csv
# 终端 2:数据采集
cd ~/macro-data && claude --dangerously-skip-permissions
▶ Claude Code
/loop 1h 读取 TODO.md,执行下一个 pending 任务

结合 tmux 的分屏功能,可以在一个界面内同时观察多个 Claude Code session 的运行状态。

三层架构

多个组件组合后形成三层架构:

  • CLAUDE.md 提供长期规则和知识(Agent 的身份)
  • /loop 提供定时执行能力(Agent 的心跳)
  • Hooks 提供自动提交和质量门禁(Agent 的纪律)

例如,在 CLAUDE.md 中写明数据格式规范和输出目录,用 /loop 定时触发采集任务,用 Git Hook 在每次任务完成后自动提交结果。三者配合,Claude Code 就变成了一个有规则、有节奏、有纪律的自主运转系统。