OpenClaw Timebox

TotalClaw 作者 vincent v2.7.0

基于潘农菲翻译的《时间盒》,为 OpenClaw 打造的全天任务执行系统。早晨用一段对话规划全天、讨论优先级、锁定时间盒;执行时 AI 完全不打扰;每盒结束做 30 秒快速收集;全天结束生成每日总结并自动同步到 Flomo、Notion 等工具。支持苹果日历、飞书、Google 日历自动占位,以及将时间盒任务双向同步到滴答清单(TickTick)。触发词:"时间盒"、"timebox"、"开始今天的规划"、"帮我规划任务"、"start timebox"、"task planning"。

源码 ↗

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install totalclaw:vinile~openclaw-timebox
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Avinile~openclaw-timebox/file -o openclaw-timebox.md
Git 仓库获取源码
git clone https://github.com/openclaw/skills/commit/7be30f93b30830b466e758b403fd81be7a2e5cbd
# OpenClaw Timebox

一套**全天维度**的任务管理工作法,分四个阶段:

```
早晨规划(PLAN)→ 执行时间盒(RUN)→ 单盒收集(CHECK)→ 全天复盘(REVIEW)
```

每个时间盒是一个**不可拆分的执行单元**,AI 不干预盒内执行细节,只负责规划、衔接和复盘。

---

## 使用方式

```bash
/openclaw-timebox-cpr                  # 开始今天的规划
/openclaw-timebox-cpr --run            # 跳过规划,直接开始一个时间盒
/openclaw-timebox-cpr --check          # 完成一个时间盒后做快速收集
/openclaw-timebox-cpr --review         # 全天结束后做整体复盘
/openclaw-timebox-cpr --log            # 查看今日日志摘要
```

---

## 偏好配置(EXTEND.md)

按优先级搜索以下路径,找到即用:
1. 项目级:`{project}/.baoyu-skills/openclaw-timebox-cpr/EXTEND.md`
2. 用户级:`~/.baoyu-skills/openclaw-timebox-cpr/EXTEND.md`

**如果 EXTEND.md 不存在,MUST 执行首次配置(见下方章节),完成后继续。**

```yaml
default_timebox: 25          # 默认单个时间盒时长(分钟)
calendar: macos              # 日历工具(见支持列表)
calendar_name: 工作          # 日历名称/账户
calendar_alert_before: 2     # 提醒提前几分钟
log_backend: local           # 日志工具(见支持列表)
log_dir: ~/.openclaw/logs    # 仅 local 模式使用
log_token:                   # 第三方日志工具的 Token/Key(如需要)
log_workspace:               # 第三方日志工具的空间/数据库 ID(如需要)
task_sync: none              # 任务同步:ticktick(国际版)| dida365(中国版,使用 dida-cli)| none
ticktick_token_file: ~/.config/timebox/ticktick.json  # ticktick 国际版 token 文件路径
ticktick_project_id:         # ticktick 国际版:同步到哪个清单(留空则用收件箱)
dida_project_id:             # dida365 中国版:同步到哪个清单 ID(留空则用收件箱)
lang: zh                     # zh | en
runtime: codebuddy           # 运行环境:codebuddy | openclaw
```

---

## 首次配置

EXTEND.md 不存在时,**一次性**提问以下四项,创建文件后继续。

### 问题 1:默认时间盒时长

> 你常用的专注时长是多少分钟?
> 推荐:**25 分钟**(番茄钟)/ **45 分钟**(深度工作)/ **90 分钟**(长任务)/ 自定义

### 问题 2:日历工具

> 你用哪个日历记录时间安排?时间盒会自动在日历里创建占位事件。

| 选项 | 说明 |
|------|------|
| `macos` | 苹果日历(Apple Calendar),本地,无需配置 |
| `wecom` | 企业微信日历,需要企业微信登录态 |
| `feishu` | 飞书日历,需要飞书 API Token |
| `google` | Google 日历,需要 Google OAuth |
| `none` | 不使用日历 |

选择后追问:
- 若 `macos`:使用哪个日历名称?(默认"工作",不存在则用默认日历)
- 若 `feishu` / `google` / `wecom`:需要提供对应 Token 或引导完成授权

### 问题 3:任务同步到滴答清单(TickTick)

> 是否将每个时间盒任务自动同步到滴答清单?规划时创建任务,完成时标记勾选。

| 选项 | 说明 |
|------|------|
| `ticktick` | 同步到 TickTick **国际版**(ticktick.com) |
| `dida365` | 同步到滴答清单**中国版**(dida365.com,使用 dida-cli) |
| `none` | 不同步(默认)|

> ⚠️ **国际版与中国版账号完全独立,token 不互通**,请根据你的实际登录平台选择。

---

#### 若选择 `dida365`(中国版,推荐)

使用 [dida-cli](https://clawhub.ai/ilooch/dida-cli) 方案,无需注册开发者 App,一条命令完成授权。

**Step 1:检查 dida-cli 是否已安装且已登录**

```bash
dida auth status
```

- 输出已登录 → 跳到 Step 3
- 命令不存在 → 继续 Step 2 安装
- 输出未登录 → 直接执行 Step 2 登录

**Step 2:安装 dida-cli 并授权**

```bash
npm install -g @suibiji/dida-cli
dida auth login
```

浏览器弹出滴答清单授权页,登录并授权后返回命令行即完成。授权完成后再次执行 `dida auth status` 确认。

**Step 3:选择同步清单**

> "要同步到哪个清单?(留空用收件箱,或告诉我清单名称)"

AI 拉取用户现有清单并展示:

```bash
dida project list --json
```

用户选择后,将清单 ID 写入 `dida_project_id`(留空则用收件箱)。

---

#### 若选择 `ticktick`(国际版)

**Step 1:检查 token 是否已存在且有效**

```bash
python3 -c "
import json, urllib.request
try:
    t = json.load(open('$HOME/.config/timebox/ticktick.json'))
    req = urllib.request.Request('https://api.ticktick.com/open/v1/project')
    req.add_header('Authorization', f'Bearer {t[\"access_token\"]}')
    urllib.request.urlopen(req); print('ok')
except Exception as e: print('fail')
"
```

- 输出 `ok` → 跳到 Step 4
- 输出 `fail` → 继续 Step 2

**Step 2:引导注册开发者 App(首次必做,约 3 分钟)**

AI 告知用户:

> "需要先在 TickTick 开放平台注册一个 App,获取 client_id 和 client_secret,整个过程约 3 分钟,只需做一次。
>
> 请按以下步骤操作:
> 1. 访问 https://developer.ticktick.com/ 用 TickTick 账号登录
> 2. 点击「Register App」
> 3. App Name 随意填(如 `timebox-local`)
> 4. Redirect URI 填:`http://localhost:8765/callback`
> 5. 提交后复制 **Client ID** 和 **Client Secret**,告诉我。"

**Step 3:写入授权脚本并执行**

AI 收到 client_id 和 client_secret 后,将授权脚本写入 `~/.config/timebox/ticktick_auth.py`(填入真实 credentials,见滴答清单集成章节脚本模板),然后告知用户运行:

```bash
python3 ~/.config/timebox/ticktick_auth.py
```

用户完成浏览器授权后,AI 重新执行 Step 1 验证。

**Step 4:选择同步清单**

> "要同步到哪个清单?(留空用收件箱,或告诉我清单名称)"

```bash
python3 -c "
import json, urllib.request
t = json.load(open('$HOME/.config/timebox/ticktick.json'))
req = urllib.request.Request('https://api.ticktick.com/open/v1/project')
req.add_header('Authorization', f'Bearer {t[\"access_token\"]}')
data = json.loads(urllib.request.urlopen(req).read())
for p in data: print(p['id'], '|', p['name'])
"
```

用户选择后,将清单 ID 写入 `ticktick_project_id`(留空则用收件箱)。

### 问题 4:日志工具

> 你用什么记录工作日志?每个时间盒的执行记录和复盘会自动写入。

| 选项 | 说明 |
|------|------|
| `local` | 本地 Markdown 文件(默认,无需配置)|
| `feishu_doc` | 飞书文档,需要飞书 API Token + 文档 ID |
| `wecom_doc` | 企业微信文档,需要企业微信登录态 |
| `notion` | Notion,需要 Integration Token + Database ID |
| `google_doc` | Google Docs,需要 Google OAuth |
| `flomo` | Flomo,需要 Flomo API URL(在 Flomo 个人设置页面获取)|

选择后追问对应的 Token / ID / 路径配置项(若需要)。

### 问题 5:交互语言

> 中文 / English

---

## 日历集成

### 通用行为

- PLAN 阶段时间分配确认后,为每个时间盒批量创建日历事件
- 事件标题格式:`[Timebox #{N}] {任务名}`
- 事件描述:任务名 + 优先级 + 紧急程度
- CHECK 收集完成后,更新对应事件备注(追加实际完成情况)
- **任何日历操作失败,仅提示,不阻断主流程**

### 各平台实现

**macOS Apple Calendar(AppleScript)**
```applescript
tell application "Calendar"
  set targetCal to first calendar whose name is "{calendar_name}"
  -- 若不存在则用 first calendar whose writable is true
  tell targetCal
    make new event with properties {
      summary: "[Timebox #{N}] {任务名}",
      start date: {开始时间},
      end date: {开始时间} + {时长} * minutes,
      description: "优先级:{priority} · 紧急程度:{urgency}"
    }
  end tell
end tell
```

**飞书日历(Feishu Calendar API)**
```
# 请求方式:POST
# 接口:https://open.feishu.cn/open-apis/calendar/v4/calendars/{calendar_id}/events
# 请求头:需携带飞书 API Token(header: X-Token: {log_token})
# 请求体:
{
  "summary": "[Timebox #{N}] {任务名}",
  "start_time": { "timestamp": "{unix_ts}" },
  "end_time": { "timestamp": "{unix_ts}" },
  "description": "优先级:{priority} · 紧急程度:{urgency}"
}
```

**企业微信日历(WeCom)**
> 企业微信日历暂无开放 API,使用 AppleScript 控制企业微信桌面端或提示用户手动创建。

**Google Calendar API**
```
# 请求方式:POST
# 接口:https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events
# 请求头:需携带 Google OAuth Token(header: X-Token: {oauth_token})
# 请求体:
{
  "summary": "[Timebox #{N}] {任务名}",
  "start": { "dateTime": "{ISO8601}" },
  "end": { "dateTime": "{ISO8601}" }
}
```

---

## 日志集成

### 通用行为

- 每天在 PLAN 阶段确认时间分配后,创建当日日志并写入今日规划
- RUN 阶段每个时间盒启动时,追加启动记录到本地日志
- CHECK 阶段收集每个时间盒结果后,追加结果记录到本地日志
- REVIEW 阶段将每日总结写入本地日志
- **外部工具同步(flomo、Notion 等)**:仅在 REVIEW 完成后推送每日总结,不推送逐条执行记录
- **任何日志写入失败,仅提示,不阻断主流程**

### 各平台实现

**本地 Markdown(local)**

存储结构:
```
{log_dir}/
├── {YYYY-MM}/
│   └── {YYYY-MM-DD}.md
└── index.md
```

**飞书文档(feishu_doc)**
```
POST https://open.feishu.cn/open-apis/docx/v1/documents/{document_id}/blocks
-- 在指定文档末尾追加当天日志块
```

**企业微信文档(wecom_doc)**
> 通过企业微信文档 API 写入,需要企业自建应用 Token。

**Notion**
```
# 请求方式:POST
# 接口:https://api.notion.com/v1/pages
# 请求头:需携带 Notion Integration Token(header: X-Token: {log_token})
# 在指定 Database 创建新 Page,每天一条
# 追加内容通过 PATCH blocks endpoint 实现
```

**Google Docs**
```
# 通过 Google Docs API batchUpdate 在文档末尾追加内容
# 接口:https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate
```

**Flomo**
```
# 请求方式:POST
# 接口:{flomo_api_url}(在 Flomo 个人设置中获取)
# 请求体:{ "content": "[Timebox #{N}] {任务名}\n{执行记录}\n{复盘内容}" }
# Flomo 每条为独立笔记,建议每个时间盒一条,复盘单独一条
```

---

## 滴答清单(TickTick / 滴答清单)集成

> 仅当 `task_sync: ticktick` 或 `task_sync: dida365` 时生效。

### 国际版 vs 中国版

| | 国际版(ticktick) | 中国版(dida365) |
|--|--|--|
| 授权方式 | Python OAuth 脚本(需注册 App) | dida-cli(`dida auth login`,无需注册 App) |
| 任务操作 | REST API(`api.ticktick.com`) | `dida task` CLI 命令 |
| 清单配置字段 | `ticktick_project_id` | `dida_project_id` |

> **两个版本账号独立,token 不互通。**

---

### dida365(中国版)—— 使用 dida-cli

所有操作通过 `@suibiji/dida-cli` 完成,无需手动管理 token。

#### 通用行为

- PLAN 阶段确认时间分配后,为每个时间盒**创建对应任务**
- CHECK 阶段收集完毕后,**更新任务**(追加 CHECK 结果到 content)
- REVIEW 完成后,将完成的时间盒任务**标记为已完成**
- 未完成的时间盒任务保留在清单中,便于次日处理
- **任何 dida-cli 操作失败,仅提示,不阻断主流程**

#### 检查 dida-cli 可用性

每次操作前先确认 CLI 已安装且已登录:

```bash
dida auth status
```

若未登录,提示用户执行 `dida auth login`;若未安装,提示先运行 `npm install -g @suibiji/dida-cli`。

#### 创建时间盒任务(PLAN 完成时)

```bash
dida task create \
  --title "[Timebox #{N}] {任务名}" \
  --project {dida_project_id} \
  --content "优先级:{priority} · 紧急程度:{urgency}\