任务交接清单(Task Handoff Checklist)
把"进行到一半、但上下文快写满要切走"的任务,压成一份能续接的交接清单。
核心目标只有一个:下次打开这份清单(或新会话贴上指令块),不用重读整段对话也能接着干。
何时使用
满足以下任一情况即触发:
- 用户明确说"写交接清单""任务交接""出个 handoff""记下续接点""先停、切下一个任务"。
- 当前会话上下文已很长(任务写到 8 轮以上、或用户主动说"写满了/快满了"),用户准备切换任务。
- 用户要把一个未完成的任务交给另一个人(或另一个 Agent 实例)继续。
- 用户要求"更新一下上次的交接清单"——此时按"更新版"出,不要另起炉灶。
不要把它当成"任务总结"来用。总结是给人看的回顾,交接清单是给"未来的执行者"看的续接说明书,字段必须可执行。
工作流程
第 1 步:检查是否已有同任务交接清单
先在工作区搜 *交接清单*、*handoff*、*续接* 等文件名:
- 若已有旧版,本次输出命名为 {任务名}_交接清单_更新_{YYYYMMDD}.md/.docx,并在清单顶部写清"基于 XXXX-XX-XX 旧版更新,主要变化:……"。
- 若没有旧版,输出命名为 {任务名}_交接清单_{YYYYMMDD}.md/.docx。
第 2 步:锁定要交接的任务
先判断当前在跑的是哪个任务:
- 优先看任务列表工具(TaskList / TaskGet)里 in_progress 的条目。
- 没有则用对话上下文推断:用户刚才在做什么、目标是啥、做到哪了。
- 若同时有多个进行中任务且不清楚交接哪一个,用 AskUserQuestion 让用户点选,不要替他猜。
第 3 步:收集状态(先读后写,别拍脑袋)
动手前先把以下来源扫一遍,确保清单基于事实而非记忆:
- 当前对话里已完成的动作、已产出的文件、已做的决策。
- 工作区文件(用 Glob / Read 确认实际产物路径,别凭印象写路径)。
- 任务列表里各条目的状态(pending / in_progress / completed)。
- 如有相关记忆文件(.workbuddy/memory/ 或 ~/.workbuddy/MEMORY.md),读取其中对该任务的约定。
- 若任务关联 skill,读取该 skill 的 SKILL.md 中的 workflow / 模板,把关键规则写进"死规矩"。
凡是从对话推断、未经文件佐证的项,标注【推断】;凡是有文件实锤的,写明出处(哪个文件 / 哪条任务 / 哪页)。
第 4 步:确认交接对象与格式
用 AskUserQuestion 确认两点(可合并为一题,二选一即可,不要连问超过两题):
- 交接给谁:① 本人新会话续做(默认) ② 交给别人/别的 Agent。
- 输出格式:① Markdown + Word(默认) ② 仅 Markdown。
若用户已明确(比如只说"出个清单",没提格式),按默认(md + docx)走,不必追问。
交接给本人续做时,死规矩、实现细节(如脚本重跑顺序、着色逻辑)可以写得很细,因为接收方还是同一个 Agent。
交接给他人时,除了模板正文,必须在清单开头或末尾加一段「新人须知」:续接人需要哪些前置(运行环境 / 权限 / 领域知识),哪些动作离开脚本或凭据根本做不了,第一件该做的事是什么。实现细节对外人要可操作,不能只甩一句"跑 recalc"。
第 5 步:生成交接清单
套用下方模板,逐字段填写。空字段写"无 / 未涉及",不要删字段(字段缺失会让续接人漏看关键点)。
进度、卡点、下一步这三块是重点,必须具体、可操作,禁止写"继续推进"这类空话。
如果状态是"暂停待决策"(卡在某个还没拍板的事),模板第五节会强制出现「待拍板决策清单」,把每条待决策项、决策人、拍板后解锁的动作、当前默认假设都列清楚,不要只在摘要里说"等开会"。
第 5.5 步:交付前自检(合格判定)
产出并 present 之前,逐项过一遍。任何一项不达标,先补再交:
- 路径真实:第三节列出的每个路径,都经过 Glob / Read 验证存在;写错的路径会把续接人带偏。
- 表格保真:若清单含表格,转出的 docx 里表格必须是真实 Word 表格(行、列、单元格边界可分辨),不得被压平成连成一行的大段文字。自检方法:用编辑器打开 docx,看文件地图 / 决策清单那几张表能否按行列读。若被压平,改用表格保真的方式重转(见注意事项"docx 表格保真")。
- 数字可验证:第四节的关键指标(如综合毛利、异常道数),要么在第七节有一条能重算/断言这些数字命令,要么明确标注【待验证】。禁止只断言不给定验证入口。
- 决策显式:若状态含"待拍板 / 待决策",第五节必须有「待拍板决策清单」,逐条写清决策项、决策人、拍板后解锁的动作。
- 标了有效期:清单头部必须有"有效期 / 失效条件",声明这份快照在什么情况下会过期、过期后该重跑什么来核对。
- 环境说清:第三节或注意事项里写明了续接所需的运行环境(python3,Windows 上为 python;openpyxl、editor_sdk 等),并提示脚本可能躺在按日期命名的临时会话目录、换机/清会话后可能失效。
第 6 步:产出文件并附续接指令
- 将清单写入工作区:
{工作区根目录}/交接清单_{任务名简写}_{YYYYMMDD}.md
(任务名含中文或空格时,文件名用简短英文或拼音,避免路径编码问题。) - 用 tencent-docx / html-to-docx 流程再转一份同名
.docx,供人读、打印或发微信。 - Markdown 是续接的"源代码",docx 只是可读副本;若转换失败,至少保证 md 已落地,并告知用户 md 路径。
- 转完后必须过第 5.5 步的第 2 条(表格保真)。
- 在清单末尾固定附一段「续接指令」块(见模板),方便用户一键复制粘贴到新会话。
- 用 present_files 把生成的 md 和 docx 都交给用户预览。
交接清单模板
# {任务名称} · 交接清单
> 生成时间:{YYYY-MM-DD HH:mm} | 版本:{初版 / 更新版(基于 XX-XX 旧版)} | 交接人:{高姐 / Buddy} | 交接对象:{本人续做 / 他人}
> 状态:⏸ 已暂停(待续接 / 待拍板 XX)
> 有效期 / 失效条件:{本清单在【XX 事件】前有效;若源文件已改动或该事件已发生,先重跑第七节命令核对数字再信}
---
## 〇、一句话给接手的人(30 秒看懂)
{用一句话说清:这任务最终要干啥、现在卡在哪、下一步先干啥。不要展开,让人一眼能判断是否敢接。}
---
## 一、这个任务是干什么的
{任务目标,1~3 段。说清楚最终交付物是什么、服务对象是谁、判断"完成"的标准。}
---
## 二、死规矩(违反必出 bug,已踩过坑)
{把本任务里"绝对不能碰"的约束、红线、口径写死。每条尽量带一个"已踩坑"例子,否则没人知道它有多痛。}
1. **{规矩 1}**:{具体内容 + 例子}。
2. **{规矩 2}**:{具体内容 + 例子}。
3. **……**
---
## 三、文件地图(路径 + 谁是谁 + 当前状态)
{不要只列路径,要写清每个文件扮演的角色。建议用表格。}
| 角色 | 路径 / 文件名 | 说明 | 当前状态 |
|------|---------------|------|----------|
| {主角文件} | `{绝对路径}` | {是真相源还是副本?用途?} | {最新 / 已更新 / 待同步 / 为空} |
| {脚本/工具} | `{绝对路径}` | {跑它做什么?} | {主用 / 已废弃 / 待修复} |
| {产出文档} | `{绝对路径}` | {给谁看的?} | {已出 / 待更新} |
> 工作目录:`{绝对路径}`
> 相关根目录:`{绝对路径}`
> 环境依赖(续接人机器需具备):{python3(Windows 用 `python`)、openpyxl、editor_sdk……}。注意:本清单引用的脚本/文件可能位于按日期命名的临时会话目录(如 `2026-08-16-…`),换机或清理会话后可能失效,续接前先确认路径仍在、必要时迁移到稳定目录。
---
## 四、当前进度
{必须用数字/可验证的事实说话,不要"差不多了"。}
- 总体进度:{百分比 或 阶段描述}
- 关键指标:
- {指标 1}:{数值}({目标 / 口径}){若未经命令重算,标【待验证】}
- {指标 2}:{数值}
- 本轮已完成:
- {具体动作 1,含产出物}
- {具体动作 2}
- 当前卡住:{一句话概括最大卡点}
---
## 五、已知缺口清单(按优先级分类)
{把"还没干完、必须补"的事分类写。每类给一个标签、一个数量/范围、一个找谁/怎么解决。}
### 5.0 【待拍板决策】{仅当状态为"暂停待决策"时出现}
> 卡住是因为在等一个决定时,把决策显式列出来。每条写清:决策内容、谁拍板、拍板后解锁什么动作、当前先按什么默认假设走。
| 序号 | 待决策项 | 决策人 | 拍板后解锁的动作 | 当前默认假设(未拍板时先按这个走) |
|------|----------|--------|------------------|--------------------------------------|
| 1 | {决策内容} | {高姐 / 厨师长 / …} | {补 X → 重跑 Y} | {…} |
| 2 | {…} | {…} | {…} | {…} |
### 5.1 【最硬缺口 / blocker】{类别名称}
> {为什么最硬、没有它出不了结果。}
- {缺口 1} → {找谁 / 怎么补}
- {缺口 2} → {……}
### 5.2 【次优先】{类别名称}
- {缺口 1}
- {缺口 2}
### 5.3 【可自修 / 已部分处理】{类别名称}
- {缺口 1}:{Buddy 已经做了什么,剩什么}
---
## 六、下一步任务(照着做)
{具体动作清单,按执行顺序。每条必须是一个可点击/可执行的步骤。}
1. **{动作 1}**:{具体做什么、做到什么程度算完、输出什么文件}。
2. **{动作 2}**:{……}
3. **……**
---
## 七、复现 / 复核命令(如有脚本或工具)
{如果任务涉及脚本、命令、技能调用,把最关键的重现命令写在这里。}
```bash
{命令 1}
{命令 2}
- {命令 1 做了什么}
-
{看结果怎么看、成功/失败标志是什么}
-
验证当前数字(若第四节含指标):{一条能重算 / 断言关键指标(如综合毛利、异常道数)的命令或操作}。跑完核对与第四节一致;不一致以重算为准,并在清单注明差异。
{若暂无验证命令,在第四节对应指标后标【待验证】,并说明为什么暂时验证不了。}
八、踩过的坑(不要再踩)
{把本任务里已经踩过、下次可能再犯的坑列出来。每条带"症状"和"解法/规避"。}
- {坑 1}:{症状} → {规避/解法}。
- {坑 2}:{症状} → {规避/解法}。
九、同类任务通用流程(可复制到其他日期 / 场景)
{如果这是一个会反复做的任务,把"下一次再做一遍"的通用步骤写在这里。}
1. {步骤 1}
2. {步骤 2}
3. {……}
续接指令(复制到新会话即可续干)
> 继续任务「{任务名称}」。
> 一句话看懂:{复用 〇 的内容}。
> 已完成:{四/五节要点}。
> 当前卡在:{最大卡点}。
> 相关文件:{关键路径}。
> 下一步请先做:{第六节第 1 步}。
```
设计原则(本模板为什么是这些字段)
本 skill 是一份通用的任务交接模板,不绑定任何具体项目、行业或领域。字段设计来自真实多轮任务交接的实战沉淀,几条共识:
- 接手人是无辜的。他没参与过程,清单缺任何一块他就会被卡住或走偏,所以字段宁多勿少,空字段也保留、写"无 / 未涉及"。
- 数字比形容词可信。进度、卡点、缺口一律用可验证的事实和数字,禁止"差不多了""还差一点""继续推进"这类空话。
- 规则要带代价。死规矩、坑必须配"违反 / 再犯会怎样"的具体例子,否则没人当回事。
- 缺口要可行动。每一类缺口都写明"找谁、怎么补",而不只是列问题。
- 决策要显式。凡是卡在"等一个决定"的任务,必须把待决策项、决策人、拍板后解锁的动作逐条列成清单,不能只在摘要里含糊说"等开会"。
- 数字要可验证。清单里写的指标,要么给一条能重算它的命令,要么标【待验证】。只断言不给定验证入口,等于把坑留给续接人。
- 清单会过期。交接清单是某一时刻的快照,必须声明有效期 / 失效条件(如"在 XX 事件前有效,事件后先重跑核对"),否则过期数字会被当成真相。
- 可续接是硬指标。末尾的"续接指令"块必须能直接贴进新会话跑起来,这才算交接成功。
- 重复型任务值得沉淀。如果任务会反复做,把"下一次再做一遍"的通用步骤写进第九节,省得每次重想。
注意事项
- 路径、文件名、命令一律用真实值,禁止占位符。交接清单一旦写错路径,续接人会被带偏。
- 进度和卡点宁可写碎、写具体,也不要用"差不多了""还差一点"糊弄。数字不会说谎,形容词会。
- 若任务涉及敏感信息(凭据、账号),清单里只写"需要 XX 权限/凭据,由本人提供",不要落明文。
- 同一个任务多次交接时,务必在文件名加
_更新_YYYYMMDD,并在开头写明"基于旧版的变化",避免新旧两张皮。 - 每次交接完成后,建议把清单路径记一笔到当日 memory 日志,方便跨会话检索。
docx 表格保真(发布前务必自查)
Markdown 转 docx 的某些管线会把表格压平成一长串文字(列分隔符丢失),肉眼看像一张表、实际不是真表格。
- 转完 docx 后,用编辑器打开核对:文件地图、决策清单等带 | 的表必须能按行、列、单元格分辨。
- 若被压平,改用表格保真的方式重转:优先用 tencent-local-office-edit 的 doc_insert_table_by_csv 按 CSV 建表,或用 python-docx 直接写 add_table;不要依赖"md 里写表格、转出来就有表格"的假设。
- 自查不过关就别交付 docx,至少保证 md 已落地并告诉用户表格在 md 里是完整的。
指标可验证
第四节写的每个关键数字,都要能在第七节找到对应的重算/断言命令,或明确标【待验证】并说明原因。尤其当任务本身有过"算错但看起来正常"的历史(如单价被放大、旧缓存未被刷新)时,更不能用上一次的结论直接 paste,必须给续接人一行能重跑核对的命令。