Your agent has memory files, cron jobs, and chat. It has no todo list.
No way to say "do this when you get to it." Not "do this at 14:00 UTC." Not "do this right now in this conversation." Just... remember to do it. Track it. Pick it up when there's a gap.
That's clawdo.
clawhub install clawdo # installs skill + docs into your workspace
npm install -g clawdo # install the CLI binary
Requirements: Node.js ≥18
# Capture a task
clawdo add "update dependencies" --urgency soon
# Agent checks its queue (heartbeat, cron, conversation — wherever)
clawdo inbox --format json
# Agent works it
clawdo start a3f2
clawdo done a3f2 --json
add → inbox → start → done. Persistent state in SQLite. Every command has --json so agents parse structured output, not terminal art.
clawdo works everywhere agents work:
# In HEARTBEAT.md — runs every ~30 minutes
TASKS=$(clawdo inbox --format json)
AUTO=$(echo "$TASKS" | jq '.autoReady | length')
if [ "$AUTO" -gt 0 ]; then
TASK=$(clawdo next --auto --json | jq -r '.task.id')
clawdo start "$TASK" --json
# ... do the work ...
clawdo done "$TASK" --json
fi
Tasks can be tagged with permission tiers that control what the agent is allowed to do unsupervised:
| Level | Time Limit | What it means |
|---|---|---|
| ------- | ------------ | --------------- |
| auto | 10 min | Agent does it silently. Fix a typo, run tests. |
| auto-notify | 30 min | Agent does it, tells the human when done. |
| collab | Unlimited | Human required. Complex, risky, or ambiguous. |
Default: collab (safe).
Key rule: Autonomy is a permission, not a suggestion. Once set, agents can't change it. If an agent fails 3 times, autonomy demotes to collab. Safety only moves down, never up.
Agents propose, humans approve. Agent tasks always start as proposed. The human runs clawdo confirm or it doesn't happen.
# Add tasks — inline metadata parsing
clawdo add "deploy new API +backend auto-notify now"
# └── text ──────┘ └project┘ └─level──┘ └urg┘
# View
clawdo list # active tasks
clawdo list --status proposed # agent suggestions
clawdo next # highest priority
# Review agent proposals
clawdo confirm <id> # approve
clawdo reject <id> # reject
# Work
clawdo start <id>
clawdo done <id>
clawdo done abc,def,ghi # complete several
# Check inbox (structured)
clawdo inbox --format json
# Propose work
clawdo propose "add input validation" --level auto --json
# Execute
TASK=$(clawdo next --auto --json | jq -r '.task.id // empty')
if [ -n "$TASK" ]; then
clawdo start "$TASK" --json
# ... do the work ...
clawdo done "$TASK" --json
fi
The inbox returns: autoReady, autoNotifyReady, urgent, overdue, proposed, stale, blocked.
clawdo add "fix auth bug +backend @code auto soon"
+word → project@word → contextauto / auto-notify / collab → autonomy levelnow / soon / whenever / someday → urgencydue:YYYY-MM-DD → due datecrypto.randomInt(), no modulo biasclawdo --helpMIT
共 1 个版本