Install
openclaw skills install @seairteng/week-to-day-splitter⚠️ **本 skill 包含以下能力,使用前请仔细阅读 SKILL.md 顶部「⚠️ 阅读前必读」章节**: - 文件读写 + 飞书 webhook 推送(daily plan 全文) - 3 个 cron 任务(每天自动执行) 周工作计划自动拆分到日计划系统 — 按子步骤时间标签,把周计划智能拆分成 5 个 daily plan。 适用场景: - 每周固定节奏的项目管理(周一-周五) - 多项目并行(每个项目含多个子步骤,时间标签驱动) - 想从一份周计划自动生成 5 份日计划 - 每天 15:00 推送次日计划到飞书私聊 本 skill 含完整工作流:v7 算法 + 周五复制 + 周日拆分 + 周日-周四推送。
openclaw skills install @seairteng/week-to-day-splitter把一份周工作计划,按子步骤的 #周一/#周二/.../#周五 时间标签,自动拆分成 5 个日工作计划。
本 skill 不只是"本地计划管理",还包含以下能力:
执行能力:
外发数据范围(推送到飞书):
隐私影响:
如果不同意上述,请不要安装本 skill。
| 权限 | 必填 | 范围 | 用途 / 风险 |
|---|---|---|---|
| `file_read` | ✅ | `${NOTES_DIR}/00-工作计划/` | 读取周计划 + 日计划 |
| `file_write` | ✅ | `${NOTES_DIR}/00-工作计划/002日工作计划/` | 写覆盖 5 个 daily plan(自动备份) |
| `network` | ✅ | 飞书 webhook(可选) | 推送 daily plan 到飞书 |
| `exec` | ✅ | node split_weekly.js | 拆分算法执行 |
| `install_cron` | ✅ | 3 个 cron 任务 | 周五复制 + 周日拆分 + 推送 |
warning: daily plan 内容会被自动推送到飞书(用户配置 webhook URL)
disable_command: `openclaw cron remove ` 禁用 3 个 cron
┌─────────────────────────────────────────────────┐
│ 每周工作流循环 │
├─────────────────────────────────────────────────┤
│ │
│ [周五 15:00 cron] → copy_next_week_plan.js │
│ ├─ 找当前周计划(mtime 最新)│
│ ├─ 复制副本 + 改名【下周一-五】│
│ └─ 项目截止 +7 天 │
│ │
│ [周五-周日] 用户手动调整副本 │
│ 改项目截止(今天+30天) │
│ 添加/删除任务 │
│ │
│ [周日 14:00 cron] → split_weekly.js v7 │
│ ├─ 解析周计划 │
│ ├─ 按时间标签分配 │
│ ├─ 任务整体 vs 拆分 │
│ ├─ 写 5 个 daily plan │
│ └─ 飞书请示 │
│ │
│ [周日-周四 15:00 cron] → 推送次日计划 │
│ 读次日 daily plan │
│ message tool 推私聊 │
│ │
└─────────────────────────────────────────────────┘
# 推荐路径(可改成任意同步盘)
mkdir -p "${NOTES_DIR}/001周工作计划"
mkdir -p "${NOTES_DIR}/002日工作计划"
mkdir -p ~/.openclaw/workspace/.analysis/weekly_planner
cp scripts/*.js ~/.openclaw/workspace/.analysis/weekly_planner/
编辑 split_weekly.js 第 27-28 行:
const WEEK_DIR = '${NOTES_DIR}/001周工作计划';
const DAY_DIR = '${NOTES_DIR}/002日工作计划';
文件名格式:【YYYYMMDD-YYYYMMDD】周工作计划.md
# 【20260817-20260821】周工作计划
## 任务清单
### 1. 项目 A
`@客户A` `[截止:20260915]` `📍地点A`
- **已推进**:基础调研完成
- **下一步**:
- 与客户 A 沟通项目意向 `#沟通 #周一`
- 调研客户 A 的需求清单 `#调研 #周二`
### 2. 项目 B
`@客户B` `[截止:20260920]` `📍地点B`
- **已推进**:方案初稿完成
- **下一步**:
- 拜访客户 B 当面汇报 `#拜访 #周三`
cd ~/.openclaw/workspace/.analysis/weekly_planner
node split_weekly.js --dry-run
# 应该输出类似:
# === split_weekly.js v7 启动(v7 算法)===
# [解析] 找到 2 个任务
# [分配] 任务 1 → 周一
# [分配] 任务 2.1 → 周二,任务 2.2 → 周三
# === 验证输出 ===
# 周五 15:00 复制下周周计划
openclaw cron add "周五复制下周周计划" \
--schedule "0 15 * * 5" --tz "Asia/Shanghai" \
--message "运行命令:node ~/.openclaw/workspace/.analysis/weekly_planner/copy_next_week_plan.js
完成后飞书告知结果"
# 周日 14:00 拆分周计划
openclaw cron add "周日拆分周计划" \
--schedule "0 14 * * 0" --tz "Asia/Shanghai" \
--message "运行命令:node ~/.openclaw/workspace/.analysis/weekly_planner/split_weekly.js
读 5 个 daily plan → 用 message tool 飞书请示(plain text)"
# 周日-周四 15:00 推送次日
openclaw cron add "推送次日工作计划" \
--schedule "0 15 * * 0-4" --tz "Asia/Shanghai" \
--message "今天 \${dayName},推送次日(\${nextDayName})的日工作计划给用户私聊
1. 计算次日日期
2. 用 read 工具读次日 daily plan
3. 用 message tool 推私聊(plain text)"
用户 在 daily plan 中勾选 - [x] 完成项,周五 15:00 cron 自动合并到当前周计划"已推进",然后复制到下周计划。
用户 编辑 daily plan(勾选 - [x])
↓
周五 15:00 cron (copy_next_week_plan.js)
├─ 5-pre. 从本周 5 个 daily plan 提取 - [x]
├─ 5. 合并到当前周计划"已推进"(fingerprint 去重)
└─ 6-8. 复制当前周计划 → 下周计划(日期 +7、截止 +7)
1. split_weekly.js formatDailyPlan() 输出 checkbox 格式
生成的 daily plan 任务头用 ### 1. 格式(与周计划一致),子步骤用 - [ ]:
### 1. 任务标题:
- [ ] 子步骤1 `#动作 #时间标签`
- [ ] 子步骤2 `#动作 #时间标签`
2. copy_next_week_plan.js extractCompletedSubSteps()
从本周 5 个 daily plan 提取所有 - [x] 项,返回 Map<taskId, items[]>。
3. copy_next_week_plan.js mergeCompletedIntoProgress()
合并到周计划"已推进"段落:
`#动作`)### )逐块替换已推进段落4. 严格 action tag 匹配(用户 拍板)
提取时只匹配动作类型库的标签:
const EXECUTION_TAGS = ['踏勘', '拜访', '来访', '出差'];
const DOCUMENT_TAGS = ['写方案', '拟协议', '写报告', '调研'];
const TEMPORARY_TAGS = ['沟通', '请示', '跟进', '确认', '等待', '流转'];
const ACTION_TAG_REGEX = new RegExp('#(' + ALL_ACTION_TAGS.join('|') + ')');
不在库的动作标签会被忽略(用户 自己改)。不在库的不输出 `#xxx`。
1、 → ### 1.(与周计划一致)- [x] 匹配## 约束段 而非下一个 ### N.,改用 split(/(?=### )/) 替代 lookahead)#进展 等不再使用的标签残留)发版前必检:
/Users/home/...)详见 README.md。
铁律:任何周计划文件,标题之后、
## 任务清单之前,必须包含## 类型说明章节。原因:方便读者理解任务标题下的
#项目类型和子步骤后的#动作类型。
## 类型说明
### 项目类型(写在任务标题下 `#xxx`)
| # 标签 | 含义 |
|---|---|
| `#设备投放` | 智能设备投放 |
| `#合作共建` | 双方合作共建 |
| `#产业导入` | 产业基地 |
| `#活动举办` | 大会、活动 |
| `#全域治理` | 全域土地治理 |
| `#城市更新` | 城市更新 |
| `#文创开发` | 文创产品 |
| `#乡村振兴` | 乡村项目 |
| `#商业运营` | 商业运营 |
| `#视频短剧` | 视频短剧/漫剧 |
| `#供应商合作` | 与供应商合作 |
| `#景区运营` | 演艺、活动、招商运维、舞台演出 |
### 动作类型(写在下一步分支后 `#xxx`)
**🌍 执行型**(占用整天/半天,1 天最多 2 个)
- `#踏勘` 现场勘测
- `#拜访` 去别人场地面谈
- `#来访` 到我们场地面谈
- `#出差` 异地出行
**📝 文档型**(占用 1-3 小时,1 天最多 2 个)
- `#写方案` 方案撰写
- `#拟协议` 协议起草
- `#写报告` 报告撰写
- `#调研` 线上调研(搜集情报、找知情人、写调研报告)
**⚡ 临时型**(占用 30 分钟以内,1 天可多任务)
- `#沟通` 微信/邮件/电话
- `#请示` 请示上级
- `#跟进` 跟进进度
- `#确认` 信息确认
- `#等待` 等待对方回复
- `#流转` 内部流程流转
copy_next_week_plan.js 已加自动补章节逻辑:
## 类型说明TYPES_SECTION 常量模板补上(防止再次丢失)事故案例(2026-08-18):
| 类型 | 格式 | 示例 |
|---|---|---|
| 周计划 | 【YYYYMMDD-YYYYMMDD】周工作计划.md | 【20260817-20260821】周工作计划.md |
| 日计划 | 【YYYYMMDD】周X工作计划.md | 【20260817】周一工作计划.md |
### N. 任务名(可选:跨周标记)
`@联系人` `[截止:YYYYMMDD]` `📍地点` `⚠️`(可选:阻塞标记)
- **已推进**:xxx(已完成的事)
- **下一步**:
- 子步骤1 `#动作类型 #时间标签`(#周一/#周二/.../#周五/#待定)
- 子步骤2 `#动作类型 #时间标签`
- **任务备注**:xxx(可选)
| 标签 | 含义 |
|---|---|
#周一 | 安排在周一 |
#周二 | 安排在周二 |
#周三 | 安排在周三 |
#周四 | 安排在周四 |
#周五 | 安排在周五 |
#待定 | 不指定,由算法分配 |
| 动作 | 性质 |
|---|---|
#沟通 | 沟通类(电话/微信) |
#拜访 | 出差类 |
#调研 | 信息收集 |
#等待 | 被动等待 |
#实施 | 现场操作 |
#汇报 | 当面/书面 |
#待定 | 临时任务 |
[截止:YYYYMMDD] = 整个项目预期完成时间#周一/#周二/... = 这一步最晚完成时间# 示例 1:整体(子步骤时间标签一致 → 整体)
### 1. 项目 A
- 调研情况 `#调研 #周一`
- 沟通反馈 `#沟通 #周一`
→ 任务 1 整体分配到周一
# 示例 2:拆分(子步骤时间标签不同 → 拆分)
### 2. 项目 B
- 调研需求 `#调研 #周一`
- 拜访客户 `#拜访 #周三`
→ 任务 2.1 分配到周一,任务 2.2 分配到周三
旧版本:硬编码 swapDays(如"周一项目 A"必须 swap) v7 版本:不硬编码,行程由用户时间标签决定,swap 由用户人工调整
理由:硬编码 swap 规则不灵活,用户的真实行程随时变化。
| 时间 | 任务 | cron 表达式 | 说明 |
|---|---|---|---|
| 周五 15:00 | 复制下周周计划 | 0 15 * * 5 | 找 mtime 最新周计划,复制 +7 天 |
| 周日 14:00 | 拆分周计划 | 0 14 * * 0 | v7 算法拆分到 5 天 |
| 周日-周四 15:00 | 推送次日计划 | 0 15 * * 0-4 | 早上推送当天计划 |
时区:Asia/Shanghai
14:00 cron 触发
↓
agent 跑 split_weekly.js v7
↓
脚本读周计划 → 解析任务 → 按时间标签分配
↓
写 5 个 daily plan 到 ${NOTES_DIR}/002日工作计划/
↓
agent 读 5 个 daily plan
↓
用 message tool 飞书请示(plain text,不加表格)
↓
用户回复修改项(飞书格式 A 或直接编辑文件)
↓
算法反向同步:修改 daily plan → 更新周计划(时间标签 + 任务内容)
根因:周计划 Markdown 格式不符(任务结构缺字段)。
修复:参考 SKILL.md 第 4 节格式规范,确保每个任务含 @联系人 [截止:YYYYMMDD] 📍地点 和 #动作 #时间标签。
根因:用户时间标签集中在某天。
修复:在子步骤里增加其他时间标签(如 #调研 #周一 改成 #调研 #周一或#周二)。
根因:周计划文件路径配置错误,或文件名格式不符。
修复:
WEEK_DIR 路径正确【YYYYMMDD-YYYYMMDD】周工作计划.md 格式根因:手动编辑 daily plan 格式破坏。
修复:保留原有任务编号(1., 2., ...),算法才能匹配。
${NOTES_DIR} 是占位符,用户必须替换为实际路径| 操作 | 耗时 |
|---|---|
| 解析周计划(~15 任务) | < 100ms |
| v7 拆分算法 | < 50ms |
| 写 5 个 daily plan | < 50ms |
| 整体 dry-run | < 1 秒 |
MIT