Install
openclaw skills install @13929110463/personal-worklist-via-feishu飞书多维表格个人工作台账。双层读取: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]
openclaw skills install @13929110463/personal-worklist-via-feishu双层读取机制:
| 层级 | 内容 | 读取时机 |
|---|---|---|
| Frontmatter(每次) | 5条必验规则+字段速查+触发词 | 每次 skill 触发时 |
| Body 本节 | 分场景操作约束+禁止行为 | 遇到具体场景时 |
【分场景操作约束】按需读取 body 对应章节:
【禁止行为】每次必验:
以下操作未经用户明确确认,严禁自行执行:
| 禁止操作类型 | 示例 | 违规后果 |
|---|---|---|
| 修改 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 的定时提醒,无需用户确认,直接执行规则说明:
判断技巧:
如果一个操作会影响 OpenClaw 的运行状态、用户电脑的系统配置、或任何不可逆的系统变更,先问用户,再执行(cron 操作除外,见上方例外)。
【强制检查点】每次创建台账或录入任务前,必须确认语言环境。
规则:
preferences.json 中无语言记录 → 必须立即询问用户,不得跳过preferences.json 中已有语言记录 → 直接使用,不得重复询问--lang 参数显式传入 → 直接使用,覆盖 preferences.json首次使用(无语言记录)询问方式:
"您好!我是飞书工作台账助手。在开始之前,请确认您的运行环境:
- 输入
中文或c→ 使用中文提示词和多维表格字段- 输入
英文或e→ 使用英文提示词和多维表格字段"
AI 禁止行为:
node scripts/init_table.jsnode scripts/add_task.js语言偏好影响 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"(英文)时,执行以下流程。
在创建台账之前,必须完成以下两项检查:
1. 检查 feishu-api-bitable 技能是否已安装:
如果技能未安装:
2. 检查飞书开放平台权限配置:
示例提示语:
"创建台账前需要:
- 安装【飞书多维表格 API 技能】— 访问 https://clawhub.ai 搜索 eishu-api-bitable 并安装
- 确认【飞书开放平台权限】— 请检查您的应用是否已开通多维表格相关权限(bitable:app / bitable:table / bitable:record)
安装完成并确认权限后请告诉我,我将继续为您创建台账。"
凭证自动获取(本 skill 自动从 OpenClaw 配置读取,无需用户手动填写):
openclaw.json 的 channels.feishu.appId 读取openclaw.json 的 channels.feishu.appSecret 读取如果用户已有飞书多维表格,可直接询问链接,从链接中提取 App Token 和 Table ID。 如果用户提供的是已有表格链接,AI 应主动询问:"您希望套用标准工作台账模板来优化这个表格吗?这样会自动创建必要的字段和选项。" 如果用户没有表格,需要引导其调用node scripts/init_table.js 在飞书多维表格里创建标准工作台账。
权限检查:
node scripts/check_permissions.js
(无需传参数,APP_ID 和 APP_SECRET 自动获取)
无论用户是新建表格还是提供已有表格链接,都应执行以下流程:
选项 A:新用户新建表格
选项 B:用户提供已有表格
字段模板(强制):
| 字段名 | 类型 | 选项/说明 |
|---|---|---|
| 任务名称 | 文本 | 必填 |
| 来源分类 | 单选 | 计划任务[P] / 临时任务[U] / 例行任务[R] / 协作任务[C] |
| 优先级 | 单选 | ①紧急且重要 / ②重要不紧急 / ③紧急不重要 / ④不紧急不重要 |
| 状态 | 单选 | 待办 / 进行中 / 已完成 / 取消 |
| 截止日期 | 日期 | yyyy/MM/dd |
| 预计时长 | 文本 | 如 1h、2h |
| 开始时间 | 文本 | 如 9:00 或 2026-04-23 |
| 工作链接 | URL | 链接格式 |
| 工作要求 | 多行文本 | 刚性要求、时间节点、执行标准 |
| 干系人 | 文本 | 支持多人(用中文顿号分隔) |
| 存在问题 | 多行文本 | 复盘时记录阻碍原因 |
| 备注 | 多行文本 | 补充说明 |
凭证自动获取(仅 APP_TOKEN 和 TABLE_ID 需要用户手动填写):
const CONFIG = {
APP_ID: '自动获取', // 从 openclaw.json 自动读取
APP_SECRET: '自动获取', // 从 openclaw.json 自动读取
APP_TOKEN: 'YOUR_APP_TOKEN', // 用户手动填写
TABLE_ID: 'YOUR_TABLE_ID' // 用户手动填写
};
运行初始化脚本(包含权限配置,无需分两步):
node scripts/init_table.js --open-id "USER_OPEN_ID"
自动化能力(本脚本执行以下操作,无需用户手动操作):
参数说明:
--open-id: 用户的飞书 Open ID(即对话上下文中的 sender_id),必填,否则用户无法访问自己的表格--lang: 可选,强制指定语言(zh/en),默认从 preferences.json 读取权限配置闭环(强制):
⚠️ 【关键】如果不传 --open-id,用户将无法访问自己刚创建的多维表格,所有数据操作都会失败。
AI 自动从对话上下文中读取 sender_id,拼接为 --open-id 参数调用脚本。
AI 主动处理原则:
Step 4C: 触发词引导(完成后即执行)
台账创建成功后,立即向用户展示本 skill 的触发词和使用说明(不要等待用户主动询问):
🎉 台账创建成功!
您的个人工作台账已就绪 ✅
📝 任务录入(直接说):
- "记一下这个工作:XXXX" → 立即录入任务
- "创建个人工作台账" → 创建新台账
🔔 定时提醒:
- 首次录入任务后,我会引导您设置每天三个时间点的提醒(早晨 08:28 / 下午 14:00 / 下班前 17:30)
📋 状态更新:
- 说"完成了"、"取消了"、"还在做"、"推迟到XX" → 自动更新表格
- 说"复盘" → 下班前 PMBOK 式进度复盘
🔧 异常诊断:
- 说"台账不工作了"、"诊断" → 5项健康检查
要开始录入任务吗?直接告诉我任务内容即可 😊
注意: 触发词引导与权限配置为两个独立步骤,必须全部完成后才告知用户台账创建完成。
Step 4D: 确认配置定时提醒(完成后即执行,不得跳过)
台账配置完成后,立即引导用户设置每日定时提醒,不得以任何理由跳过或推迟:
🔔 定时提醒设置
您的个人工作台账已就绪 ✅ 现在建议设置每日定时提醒,每天自动推送工作清单:
- 🌅 早晨 08:28 — 当日工作重点
- 🌤️ 下午 14:00 — 下午工作安排
- 🌆 下班前 17:30 — PMBOK 进度复盘
是否现在设置?回复「是」或「设置提醒」,我将立即为您配置三条定时任务。
【强制约束】
node scripts/setup_reminders.js --open-id=USER_OPEN_ID --lang zh|en(USER_OPEN_ID 从会话上下文获取,格式:ou_xxxxxxxx)。脚本内部已硬编码当前会话 session-key,确保推送绑定到当前飞书聊天窗口chat_id 即为当前聊天窗口,直接作为 to 参数传入脚本;不得使用硬编码或旧配置中的用户 IDcron run <jobId> 触发一次即时推送,验证飞书是否收到;若推送失败,排查以下原因:
to 字段格式是否正确(应为 user:ou_xxxxxxxx)channel 是否为 feishuto 字段包含完整 open_id,而非仅 chat_id强触发 - 直接录入: 用户说"记一下这个工作" + 任务内容 → 立即进入录入流程,询问补全必填字段。
弱触发 - 询问确认: 用户发送了工作相关内容但没有明确触发词 → 主动询问"是否要录入工作台账?"
注意:用户明确表示不录入、或说"暂不需要"时,不追问。
三项必填字段必须在录入前与用户逐一确认,禁止自行推断或编造:
| 字段 | 确认方式 | 如用户未提供 |
|---|---|---|
| 任务名称 | 请用户确认 | 必须追问 |
| 优先级 | 请用户选择(①~④) | 必须追问 |
| 截止日期 | 请用户确认 | 必须追问 |
确认话术示例:
"好的,我来帮您录入这条工作。确认一下:
- 任务名称: [提取的内容]
- 优先级: [①紧急且重要 / ②重要不紧急 / ③紧急不重要 / ④不紧急不重要]?
- 截止日期: 哪一天?"
以上三项必须全部明确回复才能写入,如有任意一项用户未给出明确答案,必须追问到明确为止。
来源分类自动归类规则:
其他可选字段处理规则:
三项必填字段全部确认后,方可写入多维表格。
触发场景: 用户描述中包含"今天"、"明天"、"后天"、"本周五"、"下周三"等相对日期词。
处理步骤:
三步验证法(强制):
【强制】选项值约束(必须遵守):
| 字段 | 可选值(仅以下选项,禁止自行填入其他值) |
|---|---|
| 来源分类 | 计划任务[P] / 临时任务[U] / 例行任务[R] / 协作任务[C] |
| 优先级 | ①紧急且重要 / ②重要不紧急 / ③紧急不重要 / ④不紧急不重要 |
| 状态 | 待办 / 进行中 / 已完成 / 取消 |
禁止行为:
字段精确性要求(强制):
①紧急且重要②重要不紧急③紧急不重要④不紧急不重要待办进行中已完成取消计划任务[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截止。讨论拔钉插旗目标调整时机:仅在用户传入的时间字符串中含具体时间点时触发,自动执行无需询问。
不依赖 OpenClaw cron 系统,在每次用户对话时主动检查并发送提醒。
提醒语言规则(强制):
定时提醒的语言必须与用户设置的语言环境一致。
- 中文模式 → 全程中文输出("早呀~今日重点如下...")
- 英文模式 → 全程英文输出("Good morning! Here's your today's focus...")
禁止在英文模式下输出中文提醒,也禁止在中文模式下输出英文提醒。
技术实现:
scripts/request.js - 统一请求层(Token 缓存 + 提前刷新、10秒超时、401 自动刷新、3次指数退避重试)scripts/i18n.js 提供完整的双语文本模板(中/英文各一套)i18n.js 的模板中取对应语言版本,确保输出语言与用户偏好一致触发条件: 每天 08:28 触发,必须先调用 API 判断是否发送。
工作日判断(强制):
http://api.jiejiariapi.com/v1/holidays/2026 查询全年节假日数据2026-05-11)的 isOffDay 字段:
isOffDay == false(工作日/调休上班日)→ 执行步骤1发送任务isOffDay == true(休息日/法定节日)→ 静默跳过,不发消息步骤1:发送任务 从飞书多维表格读取开始时间<=今天且状态<>已完成且状态<>取消的任务,按以下格式输出:
输出格式(三部分):
工作日判断(强制,与早晨提醒相同逻辑):
http://api.jiejiariapi.com/v1/holidays/2026 查询全年节假日数据2026-05-11)的 isOffDay 字段:
isOffDay == false(工作日/调休上班日)→ 执行步骤1发送任务isOffDay == true(休息日/法定节日)→ 静默跳过,不发消息步骤1:发送任务 从飞书多维表格读取开始时间<=今天且状态<>已完成且状态<>取消的任务,发送下午工作计划(含上午未完成任务回顾)。
输出格式同早晨提醒。
工作日判断(强制,与早晨提醒相同逻辑):
http://api.jiejiariapi.com/v1/holidays/2026 查询全年节假日数据2026-05-11)的 isOffDay 字段:
isOffDay == false(工作日/调休上班日)→ 执行复盘步骤isOffDay == true(休息日/法定节日)→ 静默跳过,不发消息执行步骤(5步,缺一不可):
1 主动拉取任务数据 从飞书多维表格获取截止日期 = 今天 且 状态 ≠ 已完成 且 状态 ≠ 取消的所有任务。
2 量化复盘(截止日期 = 今天)
格式:"今日工作清单共 X 项(截止日期为今天),完成 X 项,完成率 X%"
3 未完成任务逐一决策 对每项截止日期为今天且状态 ≠ 已完成的任务,逐一确认后续计划:
4 阻碍分析与工作建议
5 明日预告 预告明天重要且紧急的工作(状态 ≠ 已完成),提醒做好工作时间安排。
路径一:对话驱动更新(AI 协助) 通过与 AI 对话,告知状态变更指令,AI 自动调用 update_task.js 写入多维表格。
适用场景:口头汇报、复盘讨论、进度同步
路径二:直接手动更新(用户自管理)【优选】 用户登录飞书多维表格,直接在单元格中编辑任务状态、存在问题、截止日期等信息。
适用场景:用户习惯直接操作表格、时间紧迫时、快速批量修改
说明:
用户给出任何状态变更指令时,立即执行 update_task.js 更新多维表格,不得只做口头回复。
触发场景:
禁止行为: 听到状态变更只说"好的收到"而不操作表格。
以下规则已验证有效,新用户应直接遵守,避免重复踩坑:
| 日期 | 场景 | 规则 |
|---|---|---|
| 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 |
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) |