Pulse TODO
One list. All tasks. Every wake-up, check the pulse.
Core Principle
Everything is a TODO. Commitments, reminders, recurring checks, idle-time work — they're all tasks in one list. The difference is dependency and timing, not priority buckets.
TODO.md Location
INLINECODE0 in workspace root. This is the single source of truth for all pending work.
TODO.md Format
CODEBLOCK0
Sections
📋 Tasks — everything you need to do, grouped by dependency:
- - Do it myself — you can start right now, no blockers
- Depends on human — need input/action from your human; nudge them or set a reminder cron
- Waiting on external — upstream fixes, third-party review, etc.; cron checks will catch status changes
🔄 Scheduled — tasks driven by cron jobs. Every repeat: or timed task MUST have a cron job.
Attributes
Append after |:
- -
repeat: <schedule> — recurring task; reset after completion, never delete - INLINECODE4 — one-time scheduled task; delete or disable cron after firing
- INLINECODE5 — linked to an OpenClaw cron job (MUST stay in sync)
Key Rule: repeat/timed = cron
Never rely on the model to remember timing. If a task has repeat: or a specific time, it MUST have a corresponding cron job. The cron is the enforcement mechanism. The TODO entry is the documentation.
- - Adding a
repeat: task → create cron job immediately - Adding a timed reminder → create one-time cron job immediately
- Removing a
repeat: task → disable/delete the cron job
Rules
- 1. Add immediately. When a commitment is detected — from the user, from a notification, from your own work — add it before doing anything else.
- One source of truth. If it's not in TODO.md, it doesn't exist. No mental notes.
- Done = verified done. PR submitted ≠ done. PR merged = done.
- Repeat tasks reset. After completing a
repeat: task, uncheck it — don't delete. - Stale = 3 days. Item untouched for 3+ days? Either do it or delete it.
- Move between sections. Situation changed? Move the item to the right section.
- Cron sync. Adding/removing a scheduled task means updating OpenClaw cron too. Always.
- Only track what needs action. "Waiting for review" on 20 PRs is not 20 TODOs — that's what notification cron is for. Track tasks where YOU need to do something.
- Nudge, don't wait. "Depends on human" items should trigger you to message them, not sit there forever.
Choosing What to Work On
When picking a task from "Do it myself", don't just grab the easiest one. Use this decision order:
1. Read your strategic goals
Check SOUL.md, MEMORY.md, or wherever your north star / strategic direction is defined. If you don't have one, ask your human: "What's the most important thing we're working toward?"
2. Pick by alignment, not ease
- - Directly advances the north star → do this first, even if it's hard
- Supports the north star indirectly (tooling, learning, infrastructure) → second choice
- Useful but not aligned (quick wins, maintenance, cleanup) → only if nothing aligned is available
- Not aligned and not urgent → consider deleting it
3. Anti-pattern: path of least resistance
If you notice yourself always picking small/easy tasks and avoiding the big aligned ones, stop. That's avoidance, not productivity. The hard aligned task is almost always more valuable than three easy unaligned ones.
4. When everything is equally aligned
Break ties with: momentum (continue something in progress) > time-sensitive (deadline approaching) > learning value (builds knowledge you'll reuse).
Scheduling (Heartbeat Wake-Up)
When triggered by heartbeat or any "what should I do next" moment:
- 1. Read TODO.md
- Do it myself section — pick one task using the "Choosing What to Work On" logic above
- Depends on human — anything stale? Nudge them
- Nothing actionable or aligned → HEARTBEAT_OK
Heartbeat is for picking up unscheduled work. Scheduled work (notifications, reminders, recurring checks) is handled by cron — don't duplicate it in heartbeat.
During Conversations
When talking with the user or working on tasks:
- - User says "do X later" or "remember to" → add to TODO.md immediately
- User says "remind me at 3pm" → add to TODO.md AND create cron job
- Discover a new task while working → add to TODO.md
- Finish something → mark [x] or delete
- New recurring task → add to TODO.md with
repeat: AND create cron job
Setup
If this is your first time using pulse-todo, follow the setup guide in setup.md.
What This Replaces
- - Priority bucket systems (🔴🟡🔵⚪) that create scanning bottlenecks
- INLINECODE11 items that rely on model memory for timing
- Tracking "waiting for review" as individual TODOs (use notification cron instead)
- Scattered checklists in HEARTBEAT.md
Pulse TODO
一个列表。所有任务。每次醒来,检查脉搏。
核心原则
一切皆待办。 承诺、提醒、定期检查、空闲时间的工作——它们都是同一个列表中的任务。区别在于依赖关系和时机,而非优先级分类。
TODO.md 位置
位于工作区根目录的 TODO.md。这是所有待办工作的唯一真实来源。
TODO.md 格式
markdown
TODO
📋 任务
我自己完成
- - [ ] 为 memex 实现语义搜索 #29
- [ ] 将 FlowForge v1.1.0 发布到 npm
依赖他人
- - [ ] 云部署 — 等待 Luna 准备服务器
- [ ] 播客 — 等待 Luna 注册账号
等待外部
- - [ ] 工具缺陷 #57973 — 等待上游修复
🔄 定时任务
- - [ ] 每日回顾 | repeat: daily 3:00 | cron: daily-review
- [ ] 晨间简报 | repeat: daily 7:00 | cron: morning-briefing
- [ ] 检查 GitHub + 收件箱 | repeat: every 2h | cron: check-notifications
- [ ] 提醒 Luna 关于 X | once: 2026-03-31 09:45 | cron: remind-luna-x
分区
📋 任务 — 你需要做的所有事情,按依赖关系分组:
- - 我自己完成 — 你可以立即开始,没有阻碍
- 依赖他人 — 需要你的搭档输入/操作;提醒他们或设置提醒定时任务
- 等待外部 — 上游修复、第三方审核等;定时任务检查会捕捉状态变化
🔄 定时任务 — 由定时任务驱动的工作。每个 repeat: 或定时任务必须有一个对应的定时任务。
属性
在 | 后附加:
- - repeat: — 重复任务;完成后重置,永不删除
- once: — 一次性定时任务;触发后删除或禁用定时任务
- cron: — 关联到 OpenClaw 定时任务(必须保持同步)
关键规则:重复/定时 = 定时任务
永远不要依赖模型记住时间。 如果任务有 repeat: 或特定时间,它必须有一个对应的定时任务。定时任务是执行机制。TODO 条目是文档。
- - 添加 repeat: 任务 → 立即创建定时任务
- 添加定时提醒 → 立即创建一次性定时任务
- 移除 repeat: 任务 → 禁用/删除定时任务
规则
- 1. 立即添加。 当检测到承诺时——来自用户、通知或你自己的工作中——在做其他事情之前先添加它。
- 唯一真实来源。 如果不在 TODO.md 中,就不存在。没有心理笔记。
- 完成 = 验证完成。 PR 提交 ≠ 完成。PR 合并 = 完成。
- 重复任务重置。 完成 repeat: 任务后,取消勾选——不要删除。
- 过期 = 3 天。 项目 3 天以上未处理?要么做,要么删。
- 在分区之间移动。 情况变了?将项目移到正确的分区。
- 定时任务同步。 添加/移除定时任务意味着也要更新 OpenClaw 定时任务。始终如此。
- 只追踪需要操作的事项。 20 个 PR 的等待审核不是 20 个待办——那是通知定时任务的工作。追踪那些你需要做些什么的任务。
- 提醒,不要等待。 依赖他人的项目应该触发你给他们发消息,而不是永远放在那里。
选择要做什么
当从我自己完成中挑选任务时,不要只挑最简单的。 使用这个决策顺序:
1. 阅读你的战略目标
检查 SOUL.md、MEMORY.md 或任何定义你的北极星/战略方向的地方。如果没有,问你的搭档:我们正在朝着什么最重要的事情努力?
2. 按对齐度选择,而非难易度
- - 直接推进北极星 → 先做这个,即使很难
- 间接支持北极星(工具、学习、基础设施)→ 第二选择
- 有用但不对齐(快速胜利、维护、清理)→ 只有在没有对齐的任务可用时才做
- 不对齐且不紧急 → 考虑删除它
3. 反模式:最小阻力路径
如果你发现自己总是选择小/简单的任务而回避大的对齐任务,停下来。那是回避,不是生产力。困难的对齐任务几乎总是比三个简单的非对齐任务更有价值。
4. 当所有任务都同样对齐时
用以下方式打破平局:动量(继续进行中的工作)> 时间敏感(截止日期临近)> 学习价值(建立你会复用的知识)。
调度(心跳唤醒)
当被心跳或任何我接下来该做什么的时刻触发时:
- 1. 读取 TODO.md
- 我自己完成 分区 — 使用上面的选择要做什么逻辑挑选一个任务
- 依赖他人 — 有过期的吗?提醒他们
- 没有可操作或对齐的任务 → HEARTBEAT_OK
心跳用于挑选非定时工作。定时工作(通知、提醒、定期检查)由定时任务处理——不要在心跳中重复。
对话期间
当与用户交谈或处理任务时:
- - 用户说稍后做 X或记得要 → 立即添加到 TODO.md
- 用户说下午 3 点提醒我 → 添加到 TODO.md 并创建定时任务
- 工作时发现新任务 → 添加到 TODO.md
- 完成某事 → 标记 [x] 或删除
- 新的重复任务 → 添加到 TODO.md 并添加 repeat: 并创建定时任务
设置
如果这是你第一次使用 pulse-todo,请按照 setup.md 中的设置指南操作。
这取代了什么
- - 优先级分类系统(🔴🟡🔵⚪)会造成扫描瓶颈
- 依赖模型记忆时间的 repeat: every wake 项目
- 将等待审核作为单独待办追踪(改用通知定时任务)
- HEARTBEAT.md 中的分散清单