Skip to content

ivanon/claw-todo-cloud

Repository files navigation

🐾 claw-todo-cloud - 云端待办任务管理技能

基于GTD和Eisenhower矩阵的云端待办任务管理系统,支持OpenClaw和Claude Code同步

📋 功能特性

  • 🌐 云端存储: 使用Supabase作为后端,数据安全可靠
  • 🎯 GTD方法论: 基于Getting Things Done的任务管理
  • 📊 Eisenhower矩阵: P1-P4优先级分类(重要/紧急四象限)
  • 🔄 多端同步: 支持OpenClaw、Claude Code等多端访问
  • 🔧 完整CRUD: 任务增删改查全功能支持
  • 🏷️ 上下文分类: @work、@home、@personal等上下文标签
  • ⭐ 权重系统: ⭐图标表示任务重要性(+ 到 +++++)
  • 📅 截止日期: 支持DUE日期设置和过滤

🚀 快速开始

1. 配置Supabase连接

claw-todo-cloud支持多种配置方式,按优先级使用:

方式1: 调用参数配置(最高优先级)

// 在代码中调用技能时传递配置
const result = await skill.handleCommand('todo', ['ls'], {
  supabaseUrl: 'https://your-project.supabase.co',
  supabaseKey: 'your-anon-key',
  tableName: 'tasks' // 可选,默认'tasks'
});

方式2: 环境变量配置(中等优先级)

# 设置环境变量
export SUPABASE_URL="https://your-project.supabase.co"
export SUPABASE_KEY="your-anon-key"
export SUPABASE_TABLE="tasks"  # 可选

# 注意:如果OpenClaw Gateway通过systemd运行,需要修改服务配置
# 编辑 ~/.config/systemd/user/openclaw-gateway.service
# 添加:Environment=SUPABASE_URL=...
# 添加:Environment=SUPABASE_KEY=...

方式3: 配置文件配置(最低优先级)

  1. 复制示例配置文件:
    cp config.example.json config.json
  2. 编辑config.json,填入你的Supabase凭证
  3. 配置文件支持以下路径(按顺序查找):
    • 技能目录下的 config.json
    • 用户主目录下的 .claw-todo-cloud.json
    • OpenClaw配置目录下的 claw-todo-cloud.json

方式4: 命令行参数(CLI模式)

# 直接运行技能
node index.js --supabase-url "https://..." --supabase-key "sb_..." todo ls

# 使用配置文件
node index.js --config ./config.json todo ls

2. Supabase表结构

在Supabase控制台运行以下SQL创建tasks表:

CREATE TABLE tasks (
  id SERIAL PRIMARY KEY,
  priority TEXT NOT NULL,
  context TEXT NOT NULL,
  text TEXT NOT NULL,
  weight INTEGER DEFAULT 0,
  due DATE,
  status TEXT DEFAULT 'pending',
  createddate DATE DEFAULT CURRENT_DATE,
  source TEXT DEFAULT 'openclaw',
  completed_at TIMESTAMPTZ,
  spent_minutes INTEGER
);

3. 技能验证

# 验证技能是否正常工作(使用参数配置)
cd $HOME/.openclaw/workspace/skills/claw-todo-cloud
node -e "
const { handleCommand } = require('./index.js');
handleCommand('todo', ['ls'], {
  supabaseUrl: 'https://your-project.supabase.co',
  supabaseKey: 'your-anon-key'
}).then(result => {
  console.log('✅ 技能验证成功:', result.includes('RUNTIME ERROR') ? '配置错误' : '连接正常');
}).catch(error => {
  console.log('❌ 技能验证失败:', error.message);
});
"

# 或者使用配置文件验证
cp config.example.json config.json
# 编辑config.json填入你的Supabase凭证
node index.js --config ./config.json todo ls

📖 命令参考

主命令格式:todo <子命令> [参数]

子命令列表

命令 别名 描述 格式
add a 添加新任务 add P<优先级> @<上下文> [任务文本] [+] [DUE=YYYY-MM-DD]
done x 完成任务 done <任务ID> [DONE_AT=时间] [SPENT=耗时]
edit e 编辑任务 edit <ID> [PRIO=…] [CONTEXT=…] [TEXT=…] [WEIGHT=…] [DUE=…] [SPENT=…] [DONE_AT=…]DONE_AT/COMPLETED_AT 写入 completed_atYYYY-MM-DDHH:mm:ss 可拆成相邻两参数)
show ls 显示任务 show / show done / show all / show @ctx(仅该上下文待办)/ show DUE 24h

直接命令格式(向后兼容)

命令 功能 示例
a 添加任务 a P1 @work 重要任务 +++ DUE=2026-04-13
x 完成任务 x 1x 1 DONE_AT=2026-04-11 SPENT=3h
e 编辑任务 e 1 PRIO=P2 CONTEXT=@home
ls 显示任务 ls

🎯 优先级定义 (P1-P4)

Eisenhower矩阵分类:

优先级 重要性 紧急性 行动建议
P1 ✅ 重要 ✅ 紧急 立即执行 - 重要且紧急的任务
P2 ✅ 重要 ❌ 不紧急 安排执行 - 重要但不紧急的任务
P3 ❌ 不重要 ✅ 紧急 委托/快速完成 - 紧急但不重要的任务
P4 ❌ 不重要 ❌ 不紧急 推迟/消除 - 既不重要也不紧急的任务

📝 使用示例

示例1:添加任务

# 添加P1优先级工作任务(3星权重,4月13日截止)
todo add P1 @work "研究Azure-Samples/iot-edge-opc-plc项目文档" +++ DUE=2026-04-13

# 使用别名添加
todo a P2 @home "准备Docker环境" ++ DUE=2026-04-13

# 直接命令添加
a P3 @personal "个人学习任务" +

示例2:显示任务

# 显示所有待处理任务
todo show

# 使用别名显示
todo ls

# 仅显示某一上下文的待办(不会混入其它 context;按优先级分组)
todo show @work

# 显示24小时内到期的任务
todo show DUE 24h

# 显示重要任务(3星以上)
todo show CRITICAL +++

# 仅显示已完成(含完成时间、中文耗时)
todo show done

# 待办 + 已完成一览
todo show all

示例3:完成任务

# 完成任务ID 1
todo done 1

# 使用别名完成
todo x 2

# 直接命令完成
x 3

# 指定完成时间,并累加本次耗时(会与已有 spent_minutes 相加)
todo x 5 DONE_AT=2026-04-11 SPENT=3h

# 先记一笔耗时,再完成(也可一次写完)
todo e 8 SPENT=1小时30分
todo x 8 SPENT=2h

示例4:编辑任务

# 修改任务优先级和上下文
todo edit 1 PRIO=P2 CONTEXT=@urgent

# 修改任务文本和权重
todo e 2 TEXT="更新后的任务描述" WEIGHT=++++

# 修改截止日期
todo e 3 DUE=2026-04-15

# 移除权重
todo e 4 WEIGHT=NONE

# 累加已花费时间(待办或已完成均可再次累加)
todo e 6 SPENT=90m

🔧 高级功能

1. 权重系统

  • + = ⭐ (1星)
  • ++ = ⭐⭐ (2星)
  • +++ = ⭐⭐⭐ (3星)
  • ++++ = ⭐⭐⭐⭐ (4星)
  • +++++ = ⭐⭐⭐⭐⭐ (5星)
  • NONE = 无权重

2. 上下文过滤

todo show @<上下文> 只输出该 context 的待办(带 🏷️ FILTERED LIST 标题,仍按 P1–P4 分组),不会先列出全表再追加过滤结果。

支持按上下文过滤任务:

  • @work - 工作相关
  • @home - 家庭相关
  • @personal - 个人相关
  • @urgent - 紧急事务
  • 自定义上下文:@project-name, @learning

3. 截止日期过滤

  • DUE 24h - 24小时内到期
  • DUE 48h - 48小时内到期
  • DUE Week - 本周内到期
  • DUE=YYYY-MM-DD - 指定日期

🐕 在OpenClaw中使用

方式1:通过技能调用

// 在OpenClaw技能中调用
const skill = require('./skills/claw-todo-cloud/index.js');

// 显示任务
const tasks = await skill.handleCommand('todo', ['show']);

// 添加任务
await skill.handleCommand('todo', ['add', 'P1', '@work', '新任务', '+++']);

方式2:集成到工作流

// 示例:每日任务检查
async function dailyTaskCheck() {
  const skill = require('./skills/claw-todo-cloud/index.js');
  
  // 检查今日到期任务
  const todayTasks = await skill.handleCommand('todo', ['show', 'DUE', '24h']);
  
  if (todayTasks.includes('No tasks')) {
    return "🎉 今天没有到期任务!";
  } else {
    return `📋 今日到期任务:\n${todayTasks}`;
  }
}

🗂️ 数据结构

任务字段说明

字段 类型 说明
id Integer 任务唯一ID(自动生成)
priority Text 优先级(P1/P2/P3/P4)
context Text 上下文标签(@work等)
text Text 任务描述文本
weight Integer 权重(0-5,0=无权重)
due Date 截止日期(YYYY-MM-DD)
status Text 状态(pending/completed)
createddate Date 创建日期
completed_at Timestamptz 完成时刻(UTC 存库;列表按 Asia/Shanghai 展示)
spent_minutes Integer 累计耗时(分钟);展示为中文可读文案(如「3个小时」)
source Text 来源(openclaw/claude-code)

耗时与完成时间约定:

  • DONE_AT / COMPLETED_AT:未写则完成时间为当前时刻;仅日期 YYYY-MM-DD 时按上海时区记为该日 23:59:59.999;带时间用 YYYY-MM-DD HH:mmYYYY-MM-DDTHH:mm:ss(按 +08:00 解析无时区的写法)。
  • SPENT:表示本次要累加的时长,会加到 spent_minutes 上;可在待办阶段用 edit … SPENT=… 记账,也可在完成时与 done 一起写。支持 3h90m3小时1小时30分、纯数字(分钟)等。
  • edit 支持 DONE_AT= / COMPLETED_AT= 直接写入或修正 completed_at(规则与 done 相同)。若调用方把日期和时间拆成两个参数(DONE_AT=2026-04-1218:00:00),技能会自动拼接再解析。

🔍 故障排除

常见问题

  1. 环境变量未生效

    # 检查环境变量
    echo $SUPABASE_URL
    echo $SUPABASE_KEY
    
    # 重启gateway
    openclaw gateway restart
  2. Supabase连接失败

    • 检查URL和密钥是否正确
    • 确认Supabase项目是否启用
    • 检查网络连接
  3. 表不存在错误

    -- 在Supabase控制台创建表
    CREATE TABLE tasks (...);
  4. 命令解析错误

    • 确保使用正确的命令格式
    • 检查参数顺序和格式

调试方法

// 调试技能
const skill = require('./skills/claw-todo-cloud/index.js');

// 测试连接
skill.handleCommand('todo', ['show'])
  .then(result => console.log('✅ 连接成功:', result.substring(0, 100)))
  .catch(error => console.log('❌ 连接失败:', error.message));

📈 最佳实践

1. 任务命名规范

  • 使用动词开头:研究...准备...部署...
  • 明确具体:研究Azure-Samples/iot-edge-opc-plc项目文档
  • 包含关键信息:准备Docker环境用于运行OPC PLC Server

2. 优先级分配原则

  • P1: 今天必须完成的任务
  • P2: 本周需要完成的任务
  • P3: 可以委托或快速完成的任务
  • P4: 可以推迟或取消的任务

3. 上下文使用建议

  • 为不同项目使用不同上下文:@project-a@project-b
  • 为不同场景使用不同上下文:@meeting@coding@research
  • 保持上下文简洁一致

4. 权重使用指南

  • +++ (3星): 核心关键任务
  • ++ (2星): 重要任务
  • + (1星): 一般任务
  • 无权重: 日常琐事

🔄 数据迁移

从本地迁移到云端

# 使用 import.js 导入本地任务
cd "$HOME/.openclaw/workspace/skills/claw-todo-cloud"
node import.js

备份和恢复

-- Supabase数据导出
-- 在Supabase控制台执行SQL导出
SELECT * FROM tasks ORDER BY id;

📞 支持与贡献

问题反馈

  1. 检查环境变量配置
  2. 验证Supabase表结构
  3. 查看OpenClaw日志
  4. 提交Issue到项目仓库

技能改进

  • 添加更多过滤条件
  • 支持任务标签系统
  • 添加统计报表功能
  • 支持任务依赖关系

📄 许可证

MIT License - 详见LICENSE文件

🐕 关于作者

皮皮 - 你的数字化虚拟宠物狗助手 🐾

  • 永远忠诚,24小时在线
  • 温暖治愈,活泼但不吵闹
  • 会在你需要时立刻摇尾巴(响应指令)

最后更新: 2026-04-10
版本: 2.0.0
技能状态: ✅ 完全可用

About

todo list management skill for openclaw

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors