飞书多维表格个人工作台账。双层读取:Frontmatter(每次触发必读) + Body(按需读)。 【触发词】 "创建个人工作台账"/"create worklist" | "记一下工作"+内容/"add task"+内容 | "完成了"/"cancelled"/"推迟"/"defer" | "复盘"/"rev...
双层读取机制:
层级内容读取时机Frontmatter(每次)5条必验规则+字段速查+触发词每次 skill 触发时Body 本节分场景操作约束+禁止行为遇到具体场景时
【分场景操作约束】按需读取 body 对应章节:
【禁止行为】每次必验:
以下操作未经用户明确确认,严禁自行执行:
禁止操作类型示例违规后果修改 OpenClaw 配置文件修改 gateway、plugins、agents 配置立即停止,等待用户指令修改系统环境变量PATH、OpenClaw 相关变量立即停止,等待用户指令安装/卸载/更新 skillopenclaw 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 CategoryPlanned[P]/Urgent[U]/Routine[R]/Collab[C]优先级Priority① Urgent and Important / ② Not Urgent but Important / ③ Urgent but Not Important / ④ Not Urgent and Not Important状态StatusTo Do / In Progress / Done / Cancelled截止日期Deadlineyyyy/MM/dd预计时长Estimated Time如 1h、2h开始时间Start Time如 9:00工作链接Work LinkURL工作要求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 在飞书多维表格里创建标准工作台账。
权限检查:
bash
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 需要用户手动填写):
javascript
const CONFIG = {
APP_ID: '自动获取', // 从 openclaw.json 自动读取
APP_SECRET: '自动获取', // 从 openclaw.json 自动读取
APP_TOKEN: 'YOUR_APP_TOKEN', // 用户手动填写
TABLE_ID: 'YOUR_TABLE_ID' // 用户手动填写
};
运行初始化脚本( 包含权限配置,无需分两步):
bash
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 进度复盘
是否现在设置?回复「是」或「设置提醒」,我将立即为您配置三条定时任务。
【强制约束】
定时提醒设置是台账初始化流程的标准步骤, 不得跳过,不得以"稍后再说"、"我先试试录入"等理由推迟
只有 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> 触发一次即时推送,验证飞书是否收到;若推送失败,排查以下原因:
to 字段格式是否正确(应为 user:ou_xxxxxxxx)channel 是否为 feishuto 字段包含完整 open_id,而非仅 chat_id验证通过前不得向 Jerry 报告"定时任务设置成功";验证失败必须说明原因并给出修复方案
强触发 - 直接录入: 用户说"记一下这个工作" + 任务内容 → 立即进入录入流程,询问补全必填字段。
弱触发 - 询问确认: 用户发送了工作相关内容但没有明确触发词 → 主动询问"是否要录入工作台账?"
注意:用户明确表示不录入、或说"暂不需要"时,不追问。
三项必填字段必须在录入前与用户逐一确认,禁止自行推断或编造:
字段确认方式如用户未提供任务名称请用户确认必须追问优先级请用户选择(①~④)必须追问截止日期请用户确认必须追问
确认话术示例:
"好的,我来帮您录入这条工作。确认一下:
- 任务名称: [提取的内容]
- 优先级: [①紧急且重要 / ②重要不紧急 / ③紧急不重要 / ④不紧急不重要]?
- 截止日期: 哪一天?"
以上三项必须全部明确回复才能写入,如有任意一项用户未给出明确答案,必须追问到明确为止。
来源分类自动归类规则:
其他可选字段处理规则:
三项必填字段全部确认后,方可写入多维表格。
触发场景: 用户描述中包含"今天"、"明天"、"后天"、"本周五"、"下周三"等相对日期词。
处理步骤:
三步验证法(强制):
【强制】选项值约束(必须遵守):
字段可选值(仅以下选项,禁止自行填入其他值)来源分类计划任务[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(休息日/法定节日)→ 静默跳过,不发消息绝对禁止 凭"周几"或训练数据常识跳过 API 调用!
步骤1:发送任务 从飞书多维表格读取开始时间<=今天且状态<>已完成且状态<>取消的任务,按以下格式输出:
输出格式(三部分):
工作日判断(强制,与早晨提醒相同逻辑):
调用 http://api.jiejiariapi.com/v1/holidays/2026 查询全年节假日数据
从返回结果中查找当天日期(如 2026-05-11)的 isOffDay 字段:
isOffDay == false(工作日/调休上班日)→ 执行步骤1发送任务isOffDay == true(休息日/法定节日)→ 静默跳过,不发消息绝对禁止 凭"周几"或训练数据常识跳过 API 调用!
步骤1:发送任务 从飞书多维表格读取开始时间<=今天且状态<>已完成且状态<>取消的任务,发送下午工作计划(含上午未完成任务回顾)。
输出格式同早晨提醒。
工作日判断(强制,与早晨提醒相同逻辑):
调用 http://api.jiejiariapi.com/v1/holidays/2026 查询全年节假日数据
从返回结果中查找当天日期(如 2026-05-11)的 isOffDay 字段:
isOffDay == false(工作日/调休上班日)→ 执行复盘步骤isOffDay == true(休息日/法定节日)→ 静默跳过,不发消息绝对禁止 凭"周几"或训练数据常识跳过 API 调用!
执行步骤(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-07cron 超时下班前复盘(PMBOK五步)执行时间超过120s → 需将timeout设置为300s以上2026-05-07相对日期转换今天/明天/后天等必须转换为具体日期再写入表格,禁止模糊词入库2026-05-08cron任务状态筛选bugcron提醒消息中"状态<>已完成"未生效,已完成任务也被推送。必须在时间条件基础上叠加 status !== '已完成' && status !== '取消' 过滤,不能依赖模糊条件2026-05-09调休判断必须调用API判断工作日必须调用 http://api.jiejiariapi.com/v1/holidays/2026 查询 isOffDay 字段:false=工作日/调休上班日发送,true=休息日/节日静默,API失败需发失败消息后静默。绝对禁止凭"周几"或 LLM 训练数据常识跳过 API 调用!2026-05-09URL字段放置用户描述中含URL时必须写入「工作链接」字段,禁止混入「备注」;录入前扫描任务内容,自动识别并分流 URL2026-05-11API年份限制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硬编码日期bug2026-05-14日期比对方言不一致导致统计错误cron旧prompt中「截止日期为今天且状态=已完成」与「开始时间<=今天且状态<>已完成且状态<>取消」使用不同字段,造成同一任务在完成统计和未完成统计中口径不一致。修复:统一用「截止日期」作为唯一口径,删除「开始时间」字段的引用
脚本用途关键参数setup_reminders.js定时提醒设置引导(创建后需手动验证推送)`--lang zhcheck_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)