Kinema's Task Management (daily report, active push, traceback)

Prompts

Kinema personal task tracking system. AI Agent maintains tasks as markdown files in workspace. Trigger: User describes tasks, mentions "任务", "task", asks to create/update/archive/check tasks, uses `/mytask`, or receives task-related cron heartbeat.

Install

openclaw skills install kinema-task-management

Kinema's Task Management | Kinema 个人任务追踪系统

⚠️ Before First Use | 首次使用必读

首次使用此 skill 前,必须先读取 ONBOARDING.md 完成环境配置。

  • 首次配置 → 读取 ONBOARDING.md 完成全部步骤
  • 环境不可用(目录缺失、cron 未配置)→ 读取 ONBOARDING.md Troubleshooting 排查修复
  • 配置完成后 → 直接使用下方操作指南

Core Principles | 核心原则

  1. 你说我存 — 用户用自然语言描述任务,Agent 提问补全后结构化存储
  2. 不可擅动 — 未经用户明确同意,不修改任何任务的状态
  3. 主动确认 — Agent 发现某个任务可能已完成时,向用户确认后才标记
  4. 每日推送 — 每天固定时间推送任务报告

Data Structure | 数据结构

目录路径

TASK_DIR=~/.openclaw/workspace/kinema-tasks

文件夹结构

kinema-tasks/
├── active/      ← 活跃任务(Pending / In Progress / Snoozed)
├── archived/    ← 终结任务(Done / Cancelled)
└── snapshots/   ← 每日快照,按日期保存 YYYY-MM-DD.md

序号管理

  • 序号 5 位递增:TASK-00001TASK-00002 → ...
  • 创建新任务时,使用 scripts/next-id.sh 获取下一个可用序号
  • 序号全局唯一,active/archived/ 共享同一序号空间
  • 序号不可复用:已使用的序号永久保留

Task File Format | 任务文件格式

每个任务一个独立 Markdown 文件:TASK-XXXXX.md

# TASK-00001: {标题}

## Metadata

| 字段 | 值 |
|------|-----|
| 状态 | Pending |
| 优先级 | urgent |
| 领域 | OpenClaw生态 |
| 截止日期 | 2026-04-10 |
| 创建时间 | 2026-04-07 |
| 最后更新 | 2026-04-07 |

## 描述

{任务的详细描述,自由格式纯文本}

## Changelog

| 时间 | 变更 |
|------|------|
| 2026-04-07 | 创建任务,状态: Pending |

字段说明

字段必填说明
状态Pending / In Progress / Done / Snoozed / Cancelled
优先级urgent / normal / low
领域预设:OpenClaw生态 / 其他项目 / 生活,可扩展
截止日期YYYY-MM-DD,无截止日期填
创建时间YYYY-MM-DD
最后更新YYYY-MM-DD,每次变更时更新
描述自由格式纯文本
Changelog按时间正序追加,不修改已有记录

Status Flow | 状态流转

┌──────────┐
│ Pending  │
└────┬─────┘
     │ 开始执行
     ▼
┌──────────────┐     完成(需用户确认)
│ In Progress  │────────→ Done → archived/
└──────┬───────┘
       │ 暂停
       ▼
┌──────────┐
│ Snoozed  │
└──────────┘

任意状态 ──→ Cancelled(需用户确认)→ archived/

转换规则

变更触发方式需要确认
Pending → In Progress用户指令
In Progress → Pending用户指令
↔ Snoozed用户指令
→ DoneAgent 主动或用户指令
→ Cancelled用户指令是(二次确认)
Done / Cancelled状态变更后自动移入 archived/

Operations | 五种操作

1. 创建任务

触发:用户描述新任务

流程

  1. 接收自然语言描述
  2. 提问补全缺失必填信息(优先级、领域、截止日期)
  3. 用户确认后,使用 scripts/create-task.sh 创建文件
  4. 返回任务摘要确认
用户: "ClawHub publish 命令在遇到同名版本时报错没有清晰提示"
Agent: "收到,确认几个信息:
 1. 优先级?urgent / normal / low
 2. 属于哪个领域?OpenClaw生态 / 其他项目 / 生活
 3. 截止日期?
 4. 补充描述?还是就按你说的来?"

2. 更新任务

触发:用户明确指令

流程

  1. 直接修改对应的 .md 文件
  2. 更新 Metadata 表中相关字段和最后更新时间
  3. 在 Changelog 中追加变更记录
  4. 状态变为 Done/Cancelled → 使用 scripts/archive-task.sh 移入 archived/
用户: "TASK-00003 标记为 In Progress"
用户: "TASK-00001 的截止日期改到 4月20日"

3. 批量操作

触发:用户指令涉及多个任务

流程

  1. 解析意图,确定受影响任务列表
  2. 向用户展示将要修改的任务清单,请求确认
  3. 逐个修改文件(每个文件独立更新 Metadata + Changelog)
  4. 返回操作摘要
用户: "把所有 normal 的任务截止日期都推迟一天"
Agent: "以下任务将被修改:
 - TASK-00002(截止 04/10 → 04/11)
 - TASK-00005(截止 04/20 → 04/21)
 确认执行?"

4. 取消任务

触发:用户明确说"取消"或"删除"某个任务

流程

  1. Agent 向用户确认(取消不可逆
  2. 用户同意 → 状态改为 Cancelled,Changelog 追加记录,移入 archived/
  3. 返回确认

5. 主动询问

触发条件

  • 对话中明显完成了某个任务的工作
  • 任务描述与最近对话内容高度匹配
  • Agent 有合理依据认为任务已达成

流程

  1. 向用户提出确认
  2. 同意 → 标记 Done,移入 archived/
  3. 拒绝 → 不修改

Daily Report | 每日推送

推送时间

北京时间 09:00(UTC 01:00),每天一次

推送格式

📋 KinemaTasks Daily Report — {M月D日}

{2-3句话状况摘要,由模型根据下方 section 内容生成,非固定模板}

Status: ▶ in_progress ○ pending ✓ done

● URGENT ────────────────────────────────────────────────────────────
▶ TASK-XXXXX Apr 09 2d left 标题 #领域
○ TASK-XXXXX Apr 10 3d left 标题 #领域

● NORMAL ────────────────────────────────────────────────────────────
○ TASK-XXXXX Apr 11 4d left 标题 #领域
✓ TASK-XXXXX Apr 06 done 标题 #领域

● LOW ────────────────────────────────────────────────────────────────
○ TASK-XXXXX — 标题 #领域

● SNOOZED ────────────────────────────────────────────────────────────
○ TASK-XXXXX Apr 12 5d left 标题 #领域

● EXPIRED ────────────────────────────────────────────────────────────
○ TASK-XXXXX Apr 01 6d overdue 标题 #领域

───────────────────────────────────────────────────────────────────────

● RECENTLY DONE ───────────────────────────────────────────────────────
✓ TASK-XXXXX Apr 06 done 标题 #领域

───────────────────────────────────────────────────────────────────────

新增 (N)
 TASK-XXXXX 标题 | 优先级 | 领域

状态变更 (N)
 TASK-XXXXX 旧状态 → 新状态

字段变更 (N)
 TASK-XXXXX 字段 旧值 → 新值

取消 (N)
 TASK-XXXXX 标题

状态图例

符号状态
In Progress
Pending / Snoozed
Done

条目格式

每行格式:{符号} TASK-XXXXX {日期} {时间提示} {标题} #{领域}

  • 日期:Apr 09 格式,无截止日期显示
  • 时间提示:Nd left / due today / Nd overdue / done(仅已完成任务)/ 无(无截止日期)
  • 领域:#领域 格式

最近完成的 Done 任务单独列出在「RECENTLY DONE」section,最近 5 条,按完成时间倒序,Cancelled 不展示。

触发方式

报告有两种触发方式:

方式触发者执行者说明
定时推送Cron(每天 09:00/09:01/09:02 BJT)Isolated session agentcron 依次执行归档→报告→快照,推送结果
手动查询用户在对话中询问当前 session agentAgent 直接在对话中执行,不走 cron

定时推送流程(Cron)

  1. 归档检查 cron 扫描 active/,移入 archived/
  2. 报告 cron 读取 SKILL.md 规范,扫描任务文件,调用 report.sh 生成结构化内容,由模型撰写 2-3 句摘要,组装完整报告并推送
  3. 快照 cron 调用 snapshot.sh 写入当日快照

手动查询流程

触发:用户输入 /mytask、询问"看看任务"、"任务列表"、"任务报告"等

  1. Agent 扫描 active/archived/ 中所有任务文件
  2. 按 SKILL.md 中的推送格式生成完整报告
  3. 由模型撰写 2-3 句摘要(基于各 section 统计)
  4. 直接在对话中返回报告,无需调用 cron

/mytask 可直接触发手动查询,无需额外参数。

report.sh 输出的是不含摘要的结构化部分(当前任务状况 + 昨日变动)。摘要由 Agent 模型根据 report.sh 的输出内容自行撰写。

Diff 计算规则

对比最近一次快照与当前 active/ 状态:

变动类型判断依据
新增任务 ID 在上次快照中不存在
状态变更状态字段值不同(Cancelled 单独归入"取消")
字段变更优先级 / 领域 / 截止日期字段值不同
取消上次快照中存在、当前 archived/ 中状态为 Cancelled

无上次快照 → 跳过 diff 部分,只输出当日任务状况 无变动 → diff 部分显示"无变动"

当日任务状况分组

Section包含排除排序
● URGENT优先级 = urgent,未过期Snoozed 状态剩余时间升序,无截止日期排末尾
● NORMAL优先级 = normal,未过期Snoozed 状态同上
● LOW优先级 = low,未过期Snoozed 状态同上
● SNOOZED状态 = Snoozed(无论是否过期)剩余时间升序,无截止日期排末尾
● EXPIREDPending/InProgress + 已过期Snoozed 状态过期天数降序(过期最久排前)
● RECENTLY DONEarchived/ 中最近 5 条 Done 任务Cancelled完成时间倒序

最近完成的 Done 任务单独列出在「RECENTLY DONE」section,最近 5 条,按完成时间倒序,Cancelled 不展示。

时间提示格式

  • 未过期有截止日期:Nd left(如 2d left
  • 今天截止:due today
  • 已过期:Nd overdue(不再追加 ⚠️)
  • 已完成:done
  • 无截止日期:不显示时间提示

核心规则:Snoozed 状态优先,即使过期也不出现在「EXPIRED」中。


Snapshot | 每日快照

格式

# Snapshot — {YYYY-MM-DD}

> 生成时间:{YYYY-MM-DD} 09:00 BJT

## 任务列表

| 任务 | 标题 | 状态 | 优先级 | 领域 | 截止日期 |
|------|------|------|--------|------|---------|
| TASK-XXXXX | 标题 | 状态 | 优先级 | 领域 | 截止日期 |

## 摘要

共 N 个活跃任务 | N In Progress · N Pending · N Snoozed

快照文件由 cron 写入,不应手动修改。


Cron Jobs | 定时任务

任务时间(BJT)Cron Name说明
归档检查09:00kinema-tasks-archive-check扫描 active/ 中 Done/Cancelled 文件,更新 Changelog 并移入 archived/
每日早报09:01kinema-tasks-daily-report读取最近快照 + 当前 active 生成 diff + 报告,推送到对话
写入快照09:02kinema-tasks-write-snapshot扫描 active/ 生成快照写入 snapshots/YYYY-MM-DD.md

三个 cron 使用 --session isolated + --channel + --to + --announce,配置步骤详见 ONBOARDING.md Step 2(确定推送通道)和 Step 4(创建 cron 任务)。 严格按顺序执行:归档检查 → 早报推送 → 写入快照


Helper Scripts | 辅助脚本

所有脚本位于 scripts/ 目录,通过 TASK_DIR 环境变量控制路径,默认 ~/.openclaw/workspace/kinema-tasks

脚本用途
next-id.sh获取下一个可用任务序号
create-task.sh创建任务文件(模板填充)
archive-task.sh将任务移入 archived/
snapshot.sh生成并写入当日快照
report.sh生成每日报告(输出到 stdout)

Domain Tags | 领域标签

领域说明
OpenClaw生态Skill 开发、生态调研、社区贡献
其他项目非 OpenClaw 的技术项目
生活非技术类事务

可自由扩展,创建任务时由用户指定或 Agent 提议。


Rules | 注意事项

  • 禁止自动完成:未经确认不将任务标记为 Done 或 Cancelled
  • 取消不可逆:Cancelled 执行前必须二次确认
  • 文件原子性:状态变更和文件移动在同一操作中完成
  • Changelog 只追加:不修改已有记录
  • 序号不可复用:已使用序号永久保留
  • 描述为纯文本:不做结构化拆分
  • 快照只读:仅由 cron 写入
  • Cron 顺序固定:归档 → 报告 → 快照