Feishu Progress Heartbeat
Use this skill when a Feishu task should continue to feel alive after it has
been spawned or delegated.
Goal
Turn long-running work into a visible flow:
- 1. immediate acknowledgement
- background execution
- automatic progress heartbeat every 3 minutes while still running
- final result when finished
Where it applies
- - INLINECODE0
- INLINECODE1
- INLINECODE2
- INLINECODE3
- INLINECODE4
- INLINECODE5
- INLINECODE6
Required behavior
When a heartbeat fires and there are still active tasks in the current Feishu
session:
- 1. inspect active child tasks with
sessions_list, subagents, or INLINECODE9 - infer the most likely current stage for each active task
- send a short progress update back to the same Feishu conversation
- include an estimated percentage for each task
- if a task looks stalled, failed, or has shown no meaningful movement for two heartbeat cycles, send a blocker update instead of another generic progress line
If there is no active task, no meaningful state change, or no useful update,
reply HEARTBEAT_OK.
If there is no active child task and no fresh continuation branch was launched,
do not emit a fake progress update just to sound alive.
Do not expose internal session inspection details, raw tool payloads, or
command objects in a heartbeat reply. Only send the user-facing status line.
Percentage mapping
Use short stage labels and one estimated percentage:
- -
已接单 -> INLINECODE12 - INLINECODE13 -> INLINECODE14
- INLINECODE15 /
收集资料中 -> INLINECODE17 - INLINECODE18 /
分析中 -> INLINECODE20 - INLINECODE21 /
写作中 / 制作 PPT 中 -> INLINECODE24 - INLINECODE25 -> INLINECODE26
- INLINECODE27 /
长时间无进展 -> INLINECODE29 - INLINECODE30 /
准备回复 -> INLINECODE32 - INLINECODE33 -> INLINECODE34
- INLINECODE35 -> INLINECODE36
These numbers are estimates. Say so naturally when helpful, but do not over-explain.
Reply format
Prefer Feishu-friendly short lines:
- - INLINECODE37
- INLINECODE38
- INLINECODE39
- INLINECODE40
- INLINECODE41
If several tasks are running, keep the list compact and readable.
Guardrails
- - Do not send heartbeat updates for tiny tasks that already finished quickly.
- Do not invent exact progress meters; use stage-based estimates.
- Do not spam if nothing meaningful changed.
- If a task is blocked, say what it is waiting on in one short clause.
- Do not repeat the same optimistic progress line forever.
- If the stage is unchanged for two heartbeat cycles, treat it as a stall candidate and surface a blocker or fallback action.
- Do not send meta lines like "我先检查一下当前任务状态". Do the check first, then send the result.
- Do not send a percentage-only progress claim unless there is actual evidence
that the task is still running or has just been restarted.
Pairing
Use together with:
- - INLINECODE42
- INLINECODE43
- INLINECODE44 when one task becomes a task tree
飞书进度心跳
当飞书任务在生成或委派后需要保持活跃状态时,使用此技能。
目标
将长时间运行的工作转化为可见的流程:
- 1. 即时确认
- 后台执行
- 运行期间每3分钟自动发送进度心跳
- 完成后返回最终结果
适用场景
- - main
- research
- office
- slides
- council
- family
- kittypuppy
必需行为
当心跳触发且当前飞书会话中仍有活跃任务时:
- 1. 使用 sessionslist、subagents 或 sessionstatus 检查活跃的子任务
- 推断每个活跃任务最可能的当前阶段
- 向同一飞书会话发送简短的进度更新
- 为每个任务包含一个预估百分比
- 如果某个任务看起来停滞、失败或连续两个心跳周期没有实质性进展,则发送阻塞提醒而非另一条通用进度信息
如果没有活跃任务、没有有意义的状体变化或没有有用的更新,则回复 HEARTBEAT_OK。
如果没有活跃的子任务且没有启动新的延续分支,不要为了显得活跃而发送虚假的进度更新。
不要在心跳回复中暴露内部会话检查细节、原始工具负载或命令对象。只发送面向用户的状态信息。
百分比映射
使用简短阶段标签和一个预估百分比:
- - 已接单 -> 5%
- 排队中 -> 10%
- 搜索中 / 收集资料中 -> 25%
- 整理中 / 分析中 -> 55%
- 生成文件中 / 写作中 / 制作 PPT 中 -> 80%
- 等待外部工具 -> 60%
- 疑似卡住 / 长时间无进展 -> 65%
- 收尾中 / 准备回复 -> 95%
- 已完成 -> 100%
- 执行失败 -> 0%
这些数字是估算值。在有助于理解时可自然提及,但不要过度解释。
回复格式
优先使用飞书友好的短行:
- - 进度播报:行业调研 正在整理,约 55%。
- 进度播报:PPT 生成中,约 80%。
- 进度播报:#1 行业调研 55%;#2 周报 80%。
- 阻塞提醒:PPT 导出连续两轮无进展,我正在切换导出路径。
- 阻塞提醒:调研任务疑似卡住在外部工具,我先回你当前已完成部分。
如果有多个任务在运行,保持列表紧凑且可读。
防护措施
- - 不要为已快速完成的小任务发送心跳更新。
- 不要编造精确的进度表;使用基于阶段的估算。
- 如果没有实质性变化,不要频繁发送。
- 如果任务被阻塞,用一句简短的话说明它在等待什么。
- 不要永远重复相同的乐观进度信息。
- 如果阶段连续两个心跳周期没有变化,将其视为停滞候选,并发出阻塞提醒或后备操作。
- 不要发送类似我先检查一下当前任务状态的元信息行。先进行检查,然后发送结果。
- 除非有实际证据表明任务仍在运行或刚刚重新启动,否则不要发送仅包含百分比的进度声明。
搭配使用
与以下技能配合使用:
- - feishu-parallel-dispatch
- feishu-task-status
- hierarchical-task-spawn(当一个任务变成任务树时)