基于GTD和Eisenhower矩阵的云端待办任务管理系统,支持OpenClaw和Claude Code同步
- 🌐 云端存储: 使用Supabase作为后端,数据安全可靠
- 🎯 GTD方法论: 基于Getting Things Done的任务管理
- 📊 Eisenhower矩阵: P1-P4优先级分类(重要/紧急四象限)
- 🔄 多端同步: 支持OpenClaw、Claude Code等多端访问
- 🔧 完整CRUD: 任务增删改查全功能支持
- 🏷️ 上下文分类: @work、@home、@personal等上下文标签
- ⭐ 权重系统: ⭐图标表示任务重要性(+ 到 +++++)
- 📅 截止日期: 支持DUE日期设置和过滤
claw-todo-cloud支持多种配置方式,按优先级使用:
// 在代码中调用技能时传递配置
const result = await skill.handleCommand('todo', ['ls'], {
supabaseUrl: 'https://your-project.supabase.co',
supabaseKey: 'your-anon-key',
tableName: 'tasks' // 可选,默认'tasks'
});# 设置环境变量
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=...- 复制示例配置文件:
cp config.example.json config.json
- 编辑config.json,填入你的Supabase凭证
- 配置文件支持以下路径(按顺序查找):
- 技能目录下的
config.json - 用户主目录下的
.claw-todo-cloud.json - OpenClaw配置目录下的
claw-todo-cloud.json
- 技能目录下的
# 直接运行技能
node index.js --supabase-url "https://..." --supabase-key "sb_..." todo ls
# 使用配置文件
node index.js --config ./config.json todo ls在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
);# 验证技能是否正常工作(使用参数配置)
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| 命令 | 别名 | 描述 | 格式 |
|---|---|---|---|
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_at(YYYY-MM-DD 与 HH:mm:ss 可拆成相邻两参数) |
show |
ls |
显示任务 | show / show done / show all / show @ctx(仅该上下文待办)/ show DUE 24h 等 |
| 命令 | 功能 | 示例 |
|---|---|---|
a |
添加任务 | a P1 @work 重要任务 +++ DUE=2026-04-13 |
x |
完成任务 | x 1 或 x 1 DONE_AT=2026-04-11 SPENT=3h |
e |
编辑任务 | e 1 PRIO=P2 CONTEXT=@home |
ls |
显示任务 | ls |
| 优先级 | 重要性 | 紧急性 | 行动建议 |
|---|---|---|---|
| P1 | ✅ 重要 | ✅ 紧急 | 立即执行 - 重要且紧急的任务 |
| P2 | ✅ 重要 | ❌ 不紧急 | 安排执行 - 重要但不紧急的任务 |
| P3 | ❌ 不重要 | ✅ 紧急 | 委托/快速完成 - 紧急但不重要的任务 |
| P4 | ❌ 不重要 | ❌ 不紧急 | 推迟/消除 - 既不重要也不紧急的任务 |
# 添加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 "个人学习任务" +# 显示所有待处理任务
todo show
# 使用别名显示
todo ls
# 仅显示某一上下文的待办(不会混入其它 context;按优先级分组)
todo show @work
# 显示24小时内到期的任务
todo show DUE 24h
# 显示重要任务(3星以上)
todo show CRITICAL +++
# 仅显示已完成(含完成时间、中文耗时)
todo show done
# 待办 + 已完成一览
todo show all# 完成任务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# 修改任务优先级和上下文
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星)++= ⭐⭐ (2星)+++= ⭐⭐⭐ (3星)++++= ⭐⭐⭐⭐ (4星)+++++= ⭐⭐⭐⭐⭐ (5星)NONE= 无权重
todo show @<上下文> 只输出该 context 的待办(带 🏷️ FILTERED LIST 标题,仍按 P1–P4 分组),不会先列出全表再追加过滤结果。
支持按上下文过滤任务:
@work- 工作相关@home- 家庭相关@personal- 个人相关@urgent- 紧急事务- 自定义上下文:
@project-name,@learning等
DUE 24h- 24小时内到期DUE 48h- 48小时内到期DUE Week- 本周内到期DUE=YYYY-MM-DD- 指定日期
// 在OpenClaw技能中调用
const skill = require('./skills/claw-todo-cloud/index.js');
// 显示任务
const tasks = await skill.handleCommand('todo', ['show']);
// 添加任务
await skill.handleCommand('todo', ['add', 'P1', '@work', '新任务', '+++']);// 示例:每日任务检查
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:mm或YYYY-MM-DDTHH:mm:ss(按 +08:00 解析无时区的写法)。SPENT:表示本次要累加的时长,会加到spent_minutes上;可在待办阶段用edit … SPENT=…记账,也可在完成时与done一起写。支持3h、90m、3小时、1小时30分、纯数字(分钟)等。edit支持DONE_AT=/COMPLETED_AT=直接写入或修正completed_at(规则与done相同)。若调用方把日期和时间拆成两个参数(DONE_AT=2026-04-12与18:00:00),技能会自动拼接再解析。
-
环境变量未生效
# 检查环境变量 echo $SUPABASE_URL echo $SUPABASE_KEY # 重启gateway openclaw gateway restart
-
Supabase连接失败
- 检查URL和密钥是否正确
- 确认Supabase项目是否启用
- 检查网络连接
-
表不存在错误
-- 在Supabase控制台创建表 CREATE TABLE tasks (...);
-
命令解析错误
- 确保使用正确的命令格式
- 检查参数顺序和格式
// 调试技能
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));- 使用动词开头:
研究...、准备...、部署... - 明确具体:
研究Azure-Samples/iot-edge-opc-plc项目文档 - 包含关键信息:
准备Docker环境用于运行OPC PLC Server
- P1: 今天必须完成的任务
- P2: 本周需要完成的任务
- P3: 可以委托或快速完成的任务
- P4: 可以推迟或取消的任务
- 为不同项目使用不同上下文:
@project-a、@project-b - 为不同场景使用不同上下文:
@meeting、@coding、@research - 保持上下文简洁一致
+++(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;- 检查环境变量配置
- 验证Supabase表结构
- 查看OpenClaw日志
- 提交Issue到项目仓库
- 添加更多过滤条件
- 支持任务标签系统
- 添加统计报表功能
- 支持任务依赖关系
MIT License - 详见LICENSE文件
皮皮 - 你的数字化虚拟宠物狗助手 🐾
- 永远忠诚,24小时在线
- 温暖治愈,活泼但不吵闹
- 会在你需要时立刻摇尾巴(响应指令)
最后更新: 2026-04-10
版本: 2.0.0
技能状态: ✅ 完全可用