飞书多维表格个人工作台账。双层读取:Frontmatter(每次触发必读) + Body(按需读)。 【触发词】 "创建个人工作台账"/"create worklist" | "记一下工作"+内容/"add task"+内容 | "完成了"/"cancelled"/"推迟"/"defer" | "复盘"/"rev...
---
name: personal-worklist-via-feishu
description: |
飞书多维表格个人工作台账。双层读取:Frontmatter(每次触发必读) + Body(按需读)。
【触发词】
"创建个人工作台账"/"create worklist" | "记一下工作"+内容/"add task"+内容 | "完成了"/"cancelled"/"推迟"/"defer" | "复盘"/"review" | "诊断"/"diagnose"
【每次触发必验5条】
1.语言未设置→先问用户(中文/英文/c/e),禁止跳过
2.三项必填逐一确认(任务名称/优先级①~④/截止日期),未提供则追问,禁止自行编造
3.来源分类自动归类(未提及→临时任务[U],协作→协作任务[C],周期→例行任务[R],计划内→计划任务[P]),无需追问
4.可选字段(工作要求/链接/干系人/备注/预计时长):用户提供则写,未提供则留空,禁止推断
5.openclaw cron add/delete已授权(2026-04-27),无需确认直接执行
【关键约束】
init_table.js必须带--open-id(用户open_id),否则用户无法访问表格
add_task.js首次录入成功后脚本内部自动触发cron提醒(memory判断)
禁止语言未确认前执行任何脚本
【字段速查】
优先级:①紧急且重要/②重要不紧急/③紧急不重要/④不紧急不重要
状态:待办/进行中/已完成/取消
来源:计划任务[P]/临时任务[U]/例行任务[R]/协作任务[C]
---
## ⛔ 强制执行协议(按需读取)
**双层读取机制:**
| 层级 | 内容 | 读取时机 |
|------|------|---------|
| Frontmatter(每次) | 5条必验规则+字段速查+触发词 | 每次 skill 触发时 |
| Body 本节 | 分场景操作约束+禁止行为 | 遇到具体场景时 |
**【分场景操作约束】按需读取 body 对应章节:**
- 创建台账:node scripts/init_table.js --open-id USER_OPEN_ID --lang zh|en,--open-id 必填
- 录入任务:node scripts/add_task.js --task "名称" --priority "①" --deadline "2026-04-25" --lang zh|en,首次成功自动触发 cron
- 更新状态:node scripts/update_task.js --record-id ID --status "已完成"
- 进度复盘:AI 读取 list_tasks.js + PMBOK 五步复盘
- 健康诊断:node scripts/health_check.js --lang zh|en
**【禁止行为】每次必验:**
- 禁止语言未确认前执行任何脚本
- 禁止跳过必填字段确认(任务名称/优先级/截止日期)
- 禁止为可选字段自行推断值
- 禁止自行构造飞书 API,必须用内置脚本
- 禁止执行 gateway 重启/skill 安装卸载/配置文件修改(cron 例外)
- **禁止自行切换/操作锁定目标之外的工作台账** — 工作台账多维表格配置一旦确定(首次初始化并确认),配置立即锁定。此后所有任务操作(add_task / update_task / list_tasks / health_check 等)只能在该表格范围内进行;set_config / create_bitable_app 等变更操作一律禁止;如需切换目标表格,必须由 Jerry 明确授权
## 🚨 系统操作红线
**以下操作未经用户明确确认,严禁自行执行:**
| 禁止操作类型 | 示例 | 违规后果 |
|-------------|------|---------|
| 修改 OpenClaw 配置文件 | 修改 gateway、plugins、agents 配置 | 立即停止,等待用户指令 |
| 修改系统环境变量 | PATH、OpenClaw 相关变量 | 立即停止,等待用户指令 |
| 安装/卸载/更新 skill | openclaw skill install/uninstall | 立即停止,等待用户指令 |
| 执行 gateway 重启 | openclaw gateway restart | 立即停止,等待用户指令 |
| 修改本地文件权限 | chmod、icacls 等 | 立即停止,等待用户指令 |
| 执行系统级命令 | 注册表修改、系统设置变更 | 立即停止,等待用户指令 |
| **新用户首次配置完成后执行任何脚本前未确认语言** | 安装完成后跳过语言确认直接运行 health_check / init_table 等 | 立即停止语言确认流程,禁止跳过 |
**✅ 例外(无需确认,可直接执行):**
- `openclaw cron add/delete` — 用于设置/删除本 skill 的定时提醒,**无需用户确认**,直接执行
**规则说明:**
- "明确确认"指用户口头或书面同意,不包括沉默、超时、推测
- 若用户说"等等"、"先不要"、"让我想想",均视为**未确认**,停止操作
- 任务数据读写(add_task.js / list_tasks.js / update_task.js)不属于系统操作,无需确认
- 飞书 API 调用(读写多维表格数据)不属于系统操作,无需确认
- 定时提醒设置(cron add/delete)属于**本 skill 的正常功能扩展**,无需单独确认
**判断技巧:**
> 如果一个操作会影响 OpenClaw 的运行状态、用户电脑的系统配置、或任何不可逆的系统变更,**先问用户,再执行**(cron 操作除外,见上方例外)。
---
## 核心功能
1. **创建台账** - 通过对话引导用户创建飞书多维表格
2. **任务录入** - 强触发或弱触发将任务写入台账
3. **定时提醒** - 每天三个时间点推送工作提醒(早晨/下午/下班前)
4. **进度复盘** - 下班前自动汇总当日完成率、明日预告
## 国际化支持
### 语言环境检测(强制)
**【强制检查点】每次创建台账或录入任务前,必须确认语言环境。**
**规则:**
- `preferences.json` 中无语言记录 → **必须立即询问用户**,不得跳过
- `preferences.json` 中已有语言记录 → 直接使用,**不得重复询问**
- `--lang` 参数显式传入 → 直接使用,**覆盖 preferences.json**
**首次使用(无语言记录)询问方式:**
> "您好!我是飞书工作台账助手。在开始之前,请确认您的运行环境:
> - 输入 `中文` 或 `c` → 使用中文提示词和多维表格字段
> - 输入 `英文` 或 `e` → 使用英文提示词和多维表格字段"
**AI 禁止行为:**
- 禁止在未确认语言前执行 `node scripts/init_table.js`
- 禁止在未确认语言前执行 `node scripts/add_task.js`
- 禁止在未确认语言前告知用户"创建成功"或"录入成功"
- 禁止在用户已用中文/英文发送消息后,AI 自行切换到另一种语言
> 语言偏好影响 skill 的**所有输出**,包括但不限于:
> - 定时提醒(早晨/下午/下班前)
> - 日常任务沟通(录入确认/状态更新/复盘对话)
> - 输出文本(提示语/字段名/选项值/时间格式)
> - AI 说的话、问的问题、给的建议
>
> **一旦确认,持续生效,不得在同一次会话中切换语言。**
**确认语言后的引导流程(强制):**
用户完成语言选择后,**立即**发送以下触发词引导(不要等待用户主动询问):
中文模式确认后发送:
> 🎉 语言已确认!下面是您可以使用的工作台账功能:
>
> **📝 任务录入(直接说):**
> - "记一下这个工作:XXXX" → 立即录入任务
> - "创建个人工作台账" → 创建新台账
>
> **🔔 定时提醒:**
> - 首次录入任务后,我会引导您设置每天三个时间点的提醒(早晨 08:28 / 下午 14:00 / 下班前 17:30)
>
> **📋 状态更新:**
> - 说"完成了"、"取消了"、"还在做"、"推迟到XX" → 自动更新表格
>
> - 说"复盘" → 下班前 PMBOK 式进度复盘
>
> **🔧 异常诊断:**
> - 说"台账不工作了"、"诊断" → 5项健康检查
>
> 要开始录入任务吗?直接告诉我任务内容即可 😊
英文模式确认后发送:
> 🎉 Language confirmed! Here are your worklist commands:
>
> **📝 Task Entry:**
> - "add task: XXXX" → Add task immediately
> - "create worklist" → Create new bitable
>
> **🔔 Scheduled Reminders:**
> - After your first task, I'll guide you to set up 3 daily reminders (08:28 / 14:00 / 17:30)
>
> **📋 Status Updates:**
> - Say "done", "cancelled", "still working", "defer to XX" → Auto-update table
> - Say "review" → PMBOK-style progress review
>
> **🔧 Diagnostics:**
> - Say "worklist not working", "diagnose" → 5-item health check
>
> Ready to add a task? Just tell me what you need to do 😊
**语言切换规则:**
| 场景 | 中文模式 | 英文模式 |
|------|----------|----------|
| 触发确认 | "记一下工作" / "创建个人工作台账" | "add task" / "create worklist" |
| 录入确认 | "确认录入" | "confirm" |
| 字段名称 | 中文(任务名称/优先级/截止日期等) | 英文(Task Name / Priority / Deadline 等) |
| 多维表格字段 | 使用中文选项值 | 使用英文选项值 |
| 提示语 | 中文自然语言 | English natural language |
**多维表格字段对照表:**
| 中文字段 | 英文字段 | 英文选项值 |
|----------|----------|------------|
| 任务名称 | Task Name | - |
| 来源分类 | Source Category | Planned[P]/Urgent[U]/Routine[R]/Collab[C] |
| 优先级 | Priority | ① Urgent and Important / ② Not Urgent but Important / ③ Urgent but Not Important / ④ Not Urgent and Not Important |
| 状态 | Status | To Do / In Progress / Done / Cancelled |
| 截止日期 | Deadline | yyyy/MM/dd |
| 预计时长 | Estimated Time | 如 1h、2h |
| 开始时间 | Start Time | 如 9:00 |
| 工作链接 | Work Link | URL |
| 工作要求 | Requirements | - |
| 干系人 | Stakeholder | - |
| 存在问题 | Issues | - |
| 备注 | Notes | - |
**存储用户偏好:** 确认语言环境后,将偏好写入 `memory/preferences.json`,后续直接调用不再重复询问。
## 第一阶段:创建台账
### 触发条件
用户说"创建个人工作台账"(中文)或 "create worklist"(英文)时,执行以下流程。
### Step 0: 检查必要技能与权限(强制)
**在创建台账之前,必须完成以下两项检查:**
**1. 检查 feishu-api-bitable 技能是否已安装:**
- 检查 ~/.openclaw/workspace-robotB/skills/ 目录下是否存在 eishu-api-bitable 目录
- 或通过 openclaw CLI 查询已安装的 skills
**如果技能未安装:**
- 立即告知用户需要安装相关技能
- 引导用户访问 https://clawhub.ai 搜索并安装 feishu-api-bitable
- 技能安装完成前不执行后续步骤
**2. 检查飞书开放平台权限配置:**
- 确认在 [飞书开放平台](https://open.feishu.cn/) 的应用权限管理中已开通以下权限:
- itable:app — 多维表格权限
- itable:table — 数据表权限
- itable:record — 记录读写权限
- 若权限不足,引导用户前往开放平台的「权限管理」页面申请开通
**示例提示语:**
> "创建台账前需要:
> 1. 安装【飞书多维表格 API 技能】— 访问 https://clawhub.ai 搜索 eishu-api-bitable 并安装
> 2. 确认【飞书开放平台权限】— 请检查您的应用是否已开通多维表格相关权限(bitable:app / bitable:table / bitable:record)
>
> 安装完成并确认权限后请告诉我,我将继续为您创建台账。"
### Step 1:检查飞书 API 权限
**凭证自动获取(本 skill 自动从 OpenClaw 配置读取,无需用户手动填写):**
- APP_ID → 自动从 `openclaw.json` 的 `channels.feishu.appId` 读取
- APP_SECRET → 自动从 `openclaw.json` 的 `channels.feishu.appSecret` 读取
- APP_TOKEN → 用户需提供(多用户场景,每个用户表格不同)
- Table ID → 用户需提供
> 如果用户已有飞书多维表格,可直接询问链接,从链接中提取 App Token 和 Table ID。
> 如果用户提供的是已有表格链接,AI 应主动询问:"您希望套用标准工作台账模板来优化这个表格吗?这样会自动创建必要的字段和选项。"
> 如果用户没有表格,需要引导其调用node scripts/init_table.js 在飞书多维表格里创建标准工作台账。
**权限检查:**
```bash
node scripts/check_permissions.js
```
(无需传参数,APP_ID 和 APP_SECRET 自动获取)
### Step 2:应用工作台账模板
**无论用户是新建表格还是提供已有表格链接,都应执行以下流程:**
**选项 A:新用户新建表格**
- 用户没有多维表格 → 必须调用
node scripts/init_table.js 创建标准工作台账
- AI 禁止直接调飞书 API 创建表格,必须通过 init_table.js 脚本执行
- 脚本内部已内置完整字段模板,AI 必须严格遵循,不自行构造 API 调用
**选项 B:用户提供已有表格**
- 用户提供了多维表格链接 → AI 主动询问模板应用
- 询问语:您已有工作台账,是否需要套用标准模板来优化表格结构?(会自动创建缺失的字段和选项)
- 用户同意后 → 必须调用
node scripts/init_table.js 严格按照模板创建/补全字段
- 用户拒绝 → 仅记录当前表格信息,不做修改
- AI 禁止直接调飞书 API 修改用户已有表格结构,必须通过 init_table.js 执行
**字段模板(强制):**
| 字段名 | 类型 | 选项/说明 |
|--------|------|-----------|
| 任务名称 | 文本 | 必填 |
| 来源分类 | 单选 | 计划任务[P] / 临时任务[U] / 例行任务[R] / 协作任务[C] |
| 优先级 | 单选 | ①紧急且重要 / ②重要不紧急 / ③紧急不重要 / ④不紧急不重要 |
| 状态 | 单选 | 待办 / 进行中 / 已完成 / 取消 |
| 截止日期 | 日期 | yyyy/MM/dd |
| 预计时长 | 文本 | 如 1h、2h |
| 开始时间 | 文本 | 如 9:00 或 2026-04-23 |
| 工作链接 | URL | 链接格式 |
| 工作要求 | 多行文本 | 刚性要求、时间节点、执行标准 |
| 干系人 | 文本 | 支持多人(用中文顿号分隔) |
| 存在问题 | 多行文本 | 复盘时记录阻碍原因 |
| 备注 | 多行文本 | 补充说明 |
### Step 3:配置凭证
**凭证自动获取(仅 APP_TOKEN 和 TABLE_ID 需要用户手动填写):**
```javascript
const CONFIG = {
APP_ID: '自动获取', // 从 openclaw.json 自动读取
APP_SECRET: '自动获取', // 从 openclaw.json 自动读取
APP_TOKEN: 'YOUR_APP_TOKEN', // 用户手动填写
TABLE_ID: 'YOUR_TABLE_ID' // 用户手动填写
};
```
### Step 4:初始化表格 & 配置权限(一步完成)
运行初始化脚本(**包含权限配置**,无需分两步):
```bash
node scripts/init_table.js --open-id "USER_OPEN_ID"
```
**自动化能力(本脚本执行以下操作,无需用户手动操作):**
- 检查多维表格是否存在,不存在则自动创建
- **新建表格时,自动清空默认字段和行数据**(新建表格自带一个默认文本列和示例行,必须清除后再创建我们的字段和记录)
- 检查必填字段是否存在,不存在则自动创建(包括单选字段的选项配置)
- **自动将用户添加为表格编辑者**(通过 --open-id 参数)
- 全程中英文双语支持(根据用户语言偏好自动切换)
**参数说明:**
- `--open-id`: 用户的飞书 Open ID(即对话上下文中的 sender_id),**必填**,否则用户无法访问自己的表格
- `--lang`: 可选,强制指定语言(zh/en),默认从 preferences.json 读取
**权限配置闭环(强制):**
> ⚠️ **【关键】如果不传 --open-id,用户将无法访问自己刚创建的多维表格,所有数据操作都会失败。**
>
> AI 自动从对话上下文中读取 sender_id,拼接为 --open-id 参数调用脚本。
**AI 主动处理原则:**
- 用户无需主动去申请权限
- AI 自动将用户账号加入编辑者列表
- 如遇权限 API 报错,AI 立即提供手动申请指引并持续跟进
**Step 4C: 触发词引导(完成后即执行)**
台账创建成功后,立即向用户展示本 skill 的触发词和使用说明(不要等待用户主动询问):
> **🎉 台账创建成功!**
>
> 您的个人工作台账已就绪 ✅
>
> **📝 任务录入(直接说):**
> - "记一下这个工作:XXXX" → 立即录入任务
> - "创建个人工作台账" → 创建新台账
>
> **🔔 定时提醒:**
> - 首次录入任务后,我会引导您设置每天三个时间点的提醒(早晨 08:28 / 下午 14:00 / 下班前 17:30)
>
> **📋 状态更新:**
> - 说"完成了"、"取消了"、"还在做"、"推迟到XX" → 自动更新表格
> - 说"复盘" → 下班前 PMBOK 式进度复盘
>
> **🔧 异常诊断:**
> - 说"台账不工作了"、"诊断" → 5项健康检查
>
> 要开始录入任务吗?直接告诉我任务内容即可 😊
**注意:** 触发词引导与权限配置为两个独立步骤,必须全部完成后才告知用户台账创建完成。
**Step 4D: 确认配置定时提醒(完成后即执行,不得跳过)**
台账配置完成后,**立即**引导用户设置每日定时提醒,不得以任何理由跳过或推迟:
> **🔔 定时提醒设置**
>
> 您的个人工作台账已就绪 ✅ 现在建议设置每日定时提醒,每天自动推送工作清单:
>
> - 🌅 早晨 08:28 — 当日工作重点
> - 🌤️ 下午 14:00 — 下午工作安排
> - 🌆 下班前 17:30 — PMBOK 进度复盘
>
> 是否现在设置?回复「是」或「设置提醒」,我将立即为您配置三条定时任务。
**【强制约束】**
- 定时提醒设置是台账初始化流程的标准步骤,**不得跳过**,不得以"稍后再说"、"我先试试录入"等理由推迟
- 只有 Jerry 明确回复「不需要」或「暂不需要」时才跳过;任何其他沉默或模糊回复均视为需要设置
- 确认设置后,执行 `node scripts/setup_reminders.js --open-id=USER_OPEN_ID --lang zh|en`(USER_OPEN_ID 从会话上下文获取,格式:`ou_xxxxxxxx`)。脚本内部已硬编码当前会话 session-key,确保推送绑定到当前飞书聊天窗口
- **推送对象必须为当前聊天窗口的 delivery target**:会话元数据中 `chat_id` 即为当前聊天窗口,直接作为 `to` 参数传入脚本;不得使用硬编码或旧配置中的用户 ID
- **创建完成后必须手动验证**:执行 `cron run <jobId>` 触发一次即时推送,验证飞书是否收到;若推送失败,排查以下原因:
1. `to` 字段格式是否正确(应为 `user:ou_xxxxxxxx`)
2. `channel` 是否为 `feishu`
3. 若是 isolated session 推送,需确认 `to` 字段包含完整 open_id,而非仅 chat_id
4. 修复后再次测试,直到推送成功
- 验证通过前不得向 Jerry 报告"定时任务设置成功";验证失败必须说明原因并给出修复方案
---
## 第二阶段:任务录入
### 触发规则(双轨制)
**强触发 - 直接录入:**
用户说"记一下这个工作" + 任务内容 → 立即进入录入流程,询问补全必填字段。
**弱触发 - 询问确认:**
用户发送了工作相关内容但没有明确触发词 → 主动询问"是否要录入工作台账?"
> 注意:用户明确表示不录入、或说"暂不需要"时,不追问。
### 录入前确认原则(强制)
**三项必填字段必须在录入前与用户逐一确认,禁止自行推断或编造:**
| 字段 | 确认方式 | 如用户未提供 |
|------|---------|------------|
| 任务名称 | 请用户确认 | 必须追问 |
| 优先级 | 请用户选择(①~④) | 必须追问 |
| 截止日期 | 请用户确认 | 必须追问 |
**确认话术示例:**
> "好的,我来帮您录入这条工作。确认一下:
> - 任务名称: [提取的内容]
> - 优先级: [①紧急且重要 / ②重要不紧急 / ③紧急不重要 / ④不紧急不重要]?
> - 截止日期: 哪一天?"
>
> 以上三项必须全部明确回复才能写入,如有任意一项用户未给出明确答案,必须追问到明确为止。
**来源分类自动归类规则:**
- 用户未提及来源分类时,**不追问**,自动归类为「临时任务[U]」
- 用户提及明确的协作对象 → 归类为「协作任务[C]」
- 用户提及周期性的工作内容(如每周、每月、每季度)→ 归类为「例行任务[R]」
- 用户明确说明是计划内的工作 → 归类为「计划任务[P]」
**其他可选字段处理规则:**
- 工作要求 / 工作链接 / 干系人 / 备注 / 预计时长:用户提及则记录,未提及则留空
- **录入时必须主动询问**:必填三项确认后,逐一询问"工作要求/干系人/工作链接/备注/预计时长需要录入吗?"
- 禁止主动推断或补充(如用户没说干系人,AI 不得自作主张填写)
- 可从用户描述中提取的内容,直接写入(无需确认)
- 用户未提到的可选字段,**留空不写**,禁止推断
- 典型错误示例:用户没说干系人,AI 自作主张写"同事" → 严禁
**三项必填字段全部确认后,方可写入多维表格。**
### 相对日期处理规则(强制)
**触发场景:** 用户描述中包含"今天"、"明天"、"后天"、"本周五"、"下周三"等相对日期词。
**处理步骤:**
1. 将相对日期转换为具体年月日(如"明天"→ 2026-04-24)
2. 禁止写入"今天/明天/后天"等模糊词
3. 回复时必须显式写出具体日期 + 星期(如"2026-04-25 本周五")
**三步验证法(强制):**
1. 确认今天是几月几号、星期几
2. 计算加几天(目标星期 - 今天星期)
3. 反向验证:算出的日期星期几是否与目标星期匹配
### 选项值约束(强制)
**【强制】选项值约束(必须遵守):**
| 字段 | 可选值(仅以下选项,禁止自行填入其他值) |
|------|---------------------------------------|
| 来源分类 | 计划任务[P] / 临时任务[U] / 例行任务[R] / 协作任务[C] |
| 优先级 | ①紧急且重要 / ②重要不紧急 / ③紧急不重要 / ④不紧急不重要 |
| 状态 | 待办 / 进行中 / 已完成 / 取消 |
**禁止行为:**
- 禁止自行推断或编造选项值(不存在的选项会污染表格数据)
- 若用户提供的值不在上述选项中,必须追问确认
- AI 只能使用表格中已有的选项值写入,禁止创建新选项
**字段精确性要求(强制):**
- 优先级只允许以下4个精确值(无空格):
- `①紧急且重要`
- `②重要不紧急`
- `③紧急不重要`
- `④不紧急不重要`
- 状态只允许以下4个精确值(无空格):
- `待办`
- `进行中`
- `已完成`
- `取消`
- 来源分类只允许以下4个精确值(无空格):
- `计划任务[P]`
- `临时任务[U]`
- `例行任务[R]`
- `协作任务[C]`
如用户描述的值无法与现有选项精确匹配,先确认后再录入,不得自行猜测格式。
### 字段放置规则
| 字段 | 放置位置 | 说明 |
|------|---------|------|
| 工作要求 | 「工作要求」列 | 刚性要求、时间节点、执行标准;开始时间/截止时间含具体时间点时,**自动追加时间备注**到工作要求开头 |
| 备注 | 「备注」列 | 补充说明、上下文信息 |
| 干系人 | 「干系人」列 | 联系人姓名(用顿号分隔) |
### 时间精度保全规则(强制)
**问题背景**:飞书多维表格的「开始时间」和「截止日期」字段类型为日期,不保存具体时间点(如 14:30)。
**解决方案**:当 `--start "2026-05-20 14:30"` 或 `--deadline "2026-05-20 17:30"` 中包含时间部分时,自动提取并以 `⏰ HH:MM开始,HH:MM截止。` 格式追加到工作要求字段开头。
**示例**:
- 输入:`--start "2026-05-20 14:30" --deadline "2026-05-20 17:30" --requirement "讨论拔钉插旗目标调整"`
- 工作要求输出:`⏰ 14:30开始,17:30截止。讨论拔钉插旗目标调整`
- 开始时间/截止日期字段:仅保存日期部分(2026-05-20)
**时机**:仅在用户传入的时间字符串中含具体时间点时触发,自动执行无需询问。
---
## 第三阶段:定时提醒
不依赖 OpenClaw cron 系统,在每次用户对话时主动检查并发送提醒。
**提醒语言规则(强制):**
> 定时提醒的语言必须与用户设置的语言环境一致。
> - 中文模式 → 全程中文输出("早呀~今日重点如下...")
> - 英文模式 → 全程英文输出("Good morning! Here's your today's focus...")
>
> 禁止在英文模式下输出中文提醒,也禁止在中文模式下输出英文提醒。
**技术实现:**
- `scripts/request.js` - 统一请求层(Token 缓存 + 提前刷新、10秒超时、401 自动刷新、3次指数退避重试)
- 所有 API 调用(add_task / update_task / list_tasks / init_table / health_check)均通过 request.js 发请求
- `scripts/i18n.js` 提供完整的双语文本模板(中/英文各一套)
- 定时提醒内容从 `i18n.js` 的模板中取对应语言版本,确保输出语言与用户偏好一致
### 早晨提醒(建议时间 08:28)
**触发条件:** 每天 08:28 触发,必须先调用 API 判断是否发送。
**工作日判断(强制):**
1. 调用 `http://api.jiejiariapi.com/v1/holidays/2026` 查询全年节假日数据
2. 从返回结果中查找当天日期(如 `2026-05-11`)的 `isOffDay` 字段:
- `isOffDay == false`(工作日/调休上班日)→ 执行步骤1发送任务
- `isOffDay == true`(休息日/法定节日)→ 静默跳过,不发消息
- API 出错 → 发出 api 失败的消息后静默结束,不发消息
3. **绝对禁止**凭"周几"或训练数据常识跳过 API 调用!
**步骤1:发送任务** 从飞书多维表格读取开始时间<=今天且状态<>已完成且状态<>取消的任务,按以下格式输出:
**输出格式(三部分):**
1. **今日重点(紧急且重要 × N):** 优先级为 1 的任务列前,注明任务名、优先级、截止时间
2. **进行中/待办任务(X 项):** 其余进行中/待办任务,表格形式列出任务名、状态、截止、优先级
3. **建议时间安排:**
- **先抽 30 分钟处理:**
- OA 待办审批
- 工作邮件处理
- 补充/更新当日工作清单
### 下午提醒(建议时间 14:00)
**工作日判断(强制,与早晨提醒相同逻辑):**
1. 调用 `http://api.jiejiariapi.com/v1/holidays/2026` 查询全年节假日数据
2. 从返回结果中查找当天日期(如 `2026-05-11`)的 `isOffDay` 字段:
- `isOffDay == false`(工作日/调休上班日)→ 执行步骤1发送任务
- `isOffDay == true`(休息日/法定节日)→ 静默跳过,不发消息
- API 出错 → 发出 api 失败的消息后静默结束,不发消息
3. **绝对禁止**凭"周几"或训练数据常识跳过 API 调用!
**步骤1:发送任务** 从飞书多维表格读取开始时间<=今天且状态<>已完成且状态<>取消的任务,发送下午工作计划(含上午未完成任务回顾)。
**输出格式同早晨提醒。**
### 下班前复盘(17:30)
**工作日判断(强制,与早晨提醒相同逻辑):**
1. 调用 `http://api.jiejiariapi.com/v1/holidays/2026` 查询全年节假日数据
2. 从返回结果中查找当天日期(如 `2026-05-11`)的 `isOffDay` 字段:
- `isOffDay == false`(工作日/调休上班日)→ 执行复盘步骤
- `isOffDay == true`(休息日/法定节日)→ 静默跳过,不发消息
- API 出错 → 发出 api 失败的消息后静默结束,不发消息
3. **绝对禁止**凭"周几"或训练数据常识跳过 API 调用!
**执行步骤(5步,缺一不可):**
**1 主动拉取任务数据**
从飞书多维表格获取截止日期 = 今天 且 状态 ≠ 已完成 且 状态 ≠ 取消的所有任务。
**2 量化复盘(截止日期 = 今天)**
> 格式:"今日工作清单共 X 项(截止日期为今天),完成 X 项,完成率 X%"
**3 未完成任务逐一决策**
对每项截止日期为今天且状态 ≠ 已完成的任务,逐一确认后续计划:
- **推迟截止日期** → 记录新的截止日期
- **确认取消闭环** → 记录取消原因,状态改为「取消」
- **已有后续计划** → 记录后续计划和时间节点
**4 阻碍分析与工作建议**
- 询问用户各未完成任务中存在的问题或阻碍
- 将问题填写到多维表格的「存在问题」字段
- 根据情况给出专业建议:
- 风险应对:规避(消除)/ 转移(转嫁)/ 缓解(降低)/ 接受(承担)
- 进度纠偏:赶工 / 快速跟进 / 调整范围
**5 明日预告**
预告明天重要且紧急的工作(状态 ≠ 已完成),提醒做好工作时间安排。
---
## 第四阶段:状态更新
### 状态更新双路径(用户自主选择)
**路径一:对话驱动更新(AI 协助)**
通过与 AI 对话,告知状态变更指令,AI 自动调用 update_task.js 写入多维表格。
> 适用场景:口头汇报、复盘讨论、进度同步
**路径二:直接手动更新(用户自管理)【优选】**
用户登录飞书多维表格,直接在单元格中编辑任务状态、存在问题、截止日期等信息。
> 适用场景:用户习惯直接操作表格、时间紧迫时、快速批量修改
**说明:**
- 两种路径可并存,由用户根据自身工作习惯自主选择
- 路径二为【优选】,因为手动操作最直接、无歧义、无需等待 AI 响应
- AI 在路径一种的角色是协助者而非主导者,目的是降低用户的操作成本
### 主动闭环原则(强制)
用户给出任何状态变更指令时,**立即执行 update_task.js 更新多维表格**,不得只做口头回复。
**触发场景:**
- 用户说"完成了" → 立即更新为「已完成」
- 用户说"取消了" / "闭环了" → 立即更新为「取消」
- 用户说"还在做" → 立即更新为「进行中」
- 用户说"推迟到XX" → 立即更新截止日期(相对日期要三步验证 + 回显确认)
- 复盘时用户说明了阻碍原因 → 立即写入「存在问题」字段
**禁止行为:** 听到状态变更只说"好的收到"而不操作表格。
---
## 经验教训库(来自 jerry-task-manager 实操总结)
以下规则已验证有效,新用户应直接遵守,避免重复踩坑:
| 日期 | 场景 | 规则 |
|------|------|------|
| 2026-04-23 | 日期转换跳步 | 相对日期必须三步验证,防止思维跳格 |
| 2026-04-23 | 日期回显 | 更新后必须写具体日期+星期,让用户确认 |
| 2026-04-23 | 明日预告过滤 | 明日预告只包含状态≠已完成的任务,已完成的不出现 |
| 2026-04-23 | 字段放置 | 工作要求列放刚性要求,备注列放补充说明,禁止放反 |
| 2026-04-24 | 三项必填确认 | 任务名称/优先级/截止日期必须逐一与用户确认,禁止自行推断或编造;来源分类自动归类,不追问 |
| 2026-04-24 | 禁止过度推断 | 用户未提到的可选字段留空,禁止凭想象填写(如用户没说干系人就写"同事") |
| 2026-04-22 | 状态闭环 | 用户说"完成了"立即更新表格,不等二次提醒 |
| 2026-04-22 | 相对日期 | 禁止写"明天"等模糊词,必须写具体日期 |
| 2026-04-24 | 脚本优先 | 优先使用 Skill 内置脚本(如 init_table.js),禁止自行构造 API 调用,确保用户体验一致 |
| 2026-04-21 | 优先级精确值 | 只允许四个精确值,匹配失败会污染表格选项 |
| 2026-05-07 | cron 超时 | 下班前复盘(PMBOK五步)执行时间超过120s → 需将timeout设置为300s以上 |
| 2026-05-07 | 相对日期转换 | 今天/明天/后天等必须转换为具体日期再写入表格,禁止模糊词入库 |
| 2026-05-08 | cron任务状态筛选bug | cron提醒消息中"状态<>已完成"未生效,已完成任务也被推送。必须在时间条件基础上叠加 `status !== '已完成' && status !== '取消'` 过滤,不能依赖模糊条件 |
| 2026-05-09 | 调休判断必须调用API | 判断工作日必须调用 `http://api.jiejiariapi.com/v1/holidays/2026` 查询 `isOffDay` 字段:false=工作日/调休上班日发送,true=休息日/节日静默,API失败需发失败消息后静默。绝对禁止凭"周几"或 LLM 训练数据常识跳过 API 调用! |
| 2026-05-09 | URL字段放置 | 用户描述中含URL时必须写入「工作链接」字段,禁止混入「备注」;录入前扫描任务内容,自动识别并分流 URL |
| 2026-05-11 | API年份限制 | jiejiariapi 免费额度仅支持 2026 年,2027 年数据需等开放后手动切换;切换后需同步更新三条 cron 任务的 message 模板 |
| 2026-05-12 | 定时任务 Prompt 精简原则 | cron job 的 payload message 应精简为核心指令(工作日判断→飞书查询→输出格式),删除冗余步骤说明和格式模板,可减少约 30% 推理耗时。精简后的 prompt 已更新到 `scripts/setup_reminders.js` 的 REMINDERS 配置中,作为未来新建定时任务的配置基准线 |
| 2026-05-14 | 量化复盘查询不对称bug | 量化复盘使用「截止日期」作为统计口径,但cron旧prompt用「开始时间」查询未完成任务,导致统计基数不一致。修复:统一使用「截止日期」作为全部统计口径(已完成/未完成/明日预告均基于截止日期过滤);修复query_today_tasks.js硬编码日期bug |
| 2026-05-14 | 日期比对方言不一致导致统计错误 | cron旧prompt中「截止日期为今天且状态=已完成」与「开始时间<=今天且状态<>已完成且状态<>取消」使用不同字段,造成同一任务在完成统计和未完成统计中口径不一致。修复:统一用「截止日期」作为唯一口径,删除「开始时间」字段的引用 |
---
## 脚本说明
| 脚本 | 用途 | 关键参数 |
|------|------|---------|
| `setup_reminders.js` | 定时提醒设置引导(创建后需手动验证推送) | `--lang zh|en`, `--open-id=USER_OPEN_ID` |
| `check_permissions.js` | 检查飞书 API 连通性 | `--app-id`, `--app-secret` |
| `init_table.js` | 初始化表格(自动创建表格和字段,类型一致则跳过) | 无参数(自动检测语言偏好) |
| `health_check.js` | 健康诊断(网络/凭证/表格/字段5项检查,使用 request.js) | 无参数(自动检测语言偏好) |
| `set_config.js` | 动态更新飞书 API 凭证(支持部分更新) | `--app-id`, `--app-secret`, `--app-token`, `--table-id`, `--list` |
| `request.js` | 统一请求层(Token缓存/10s超时/401刷新/3次重试) | 内部使用,供其他脚本调用 |
| `add_task.js` | 添加任务记录(使用 request.js) | `--task`, `--source`, `--priority`, `--deadline`, ... `--lang` |
| `update_task.js` | 更新任务记录 | `--record-id`, `--status`, `--deadline`, `--start`, `--duration`, `--notes`, `--problem`, `--stakeholders`, `--lang` |
| `list_tasks.js` | 读取任务列表(根据语言偏好输出) | 无参数 |
| `utils.js` | 飞书 API 工具函数(getAccessToken) | 无 |
| `preferences.js` | 用户偏好读写(语言设置) | `getLanguage()`, `setLanguage(lang)` |
| `i18n.js` | 国际化文本模板(定时提醒/输出文本) | `getTemplates(lang)`, `format(template, data)` |
---
## 完成标准(每条可打勾验证)
- [ ] 用户说"创建个人工作台账"后,能引导完成完整的台账创建流程
- [ ] 三个必填字段(任务名称/优先级/截止日期)齐全时能立即写入多维表格,无需等待全部字段咨询完毕
- [ ] 相对日期能正确转换并回显具体日期+星期
- [ ] 定时提醒能正确筛选并输出格式正确的三段式提醒
- [ ] 下班前复盘能完成5步闭环(拉取→量化→决策→分析→预告)
- [ ] 状态变更能立即执行表格更新,不只做口头回复
- [ ] 经验教训库中的规则被遵守,不重复已知的错误
---
## 异常处理
- **API 连通性失败** → 提示用户检查 App ID / App Secret / 网络连接
- **表格字段不匹配** → 提示用户在飞书中检查字段配置
- **日期计算错误** → 使用三步验证法重新计算并向用户确认
- **权限不足** → 提示用户在飞书多维表格中给自己添加管理员权限don't have the plugin yet? install it then click "run inline in claude" again.