鲸鱼接力(whale-relay)
解决什么
对话式 AI 有两个结构性缺陷:
- 上下文长度有限,任务做长了接不上;
- 上下文过长时模型开始编——上一轮的猜测被当成事实继续往下推,越推越远;新对话还完全失忆。
这个技能就是为跨对话接续任务而生。
两条核心,缺一不可
- 交接要流畅到位:交接摘要必须完整覆盖 Boss 想带过去的内容,新对话读完能直接接着干,不需要 Boss 再复述一遍。
- 幻觉要尽可能消除:没有证据的结论,不能在新对话里变成事实。
触发时机
- Boss 说「交棒」→ 执行「流程一:交棒」。
- Boss 说「接棒」→ 执行「流程二:接棒」。
- Boss 说「继续上次的任务」「换个对话接着做」→ 先按接棒处理。
- 分不清是交棒还是接棒 → 先问一句,不猜。
文件布局
路径均相对用户主目录(Windows:%USERPROFILE%,即 C:\Users\<你的用户名>;macOS/Linux:~)。
| 区域 | 路径 | 说明 |
|---|---|---|
| 本技能 | ~/.workbuddy/skills/whale-relay/ |
SKILL.md + references/ + scripts/ |
| 固定区 | ~/.workbuddy/whale-relay/rules.md |
每次交接必读、长期不变 |
| 链索引 | ~/.workbuddy/whale-relay/index.md |
所有链的状态与最后触碰 |
| 对话区 | ~/.workbuddy/whale-relay/chains/<链名>.md |
一条任务一份 |
| 模板 | references/rules-template.md、index-template.md、chain-template.md、playbook.md |
新建时复制 |
首次安装(初始化数据目录)
技能包只含 SKILL.md + references/ + scripts/,不含任何人的链数据。第一次使用前,按下面五步初始化:
- 确认技能目录:
~/.workbuddy/skills/whale-relay/(本文件所在目录)。 - 建数据目录:
~/.workbuddy/whale-relay/和~/.workbuddy/whale-relay/chains/。 - 建固定区:复制
references/rules-template.md到~/.workbuddy/whale-relay/rules.md,把<称呼>、<助手名>、写入目录、沟通硬规矩换成自己的;删掉模板里的示例条目。 - 建链索引:复制
references/index-template.md到~/.workbuddy/whale-relay/index.md。 - 自检:运行
python references/selfcheck.py;全 PASS 后再开始第一条链。
> scripts/rename_session.py 默认读 ~/.workbuddy/workbuddy.db;如你的 WorkBuddy 数据目录不同,用 --db 指定。
两区结构
固定区(rules.md)
每次交接都必读、且长期不变的内容:
- 称呼、助手身份、允许写入的目录、沟通上的硬规矩。
- 原则性文件(如
菜单.md)只做指路 + 摘出关键约束,不整份复制。 - 判断标准:换一条完全不同的任务,这一区里还剩多少能用?能用的才写这里。
- 严禁写入任务角色。「我是你的 PPT 助手」属于对话区。
对话区(chains/<链名>.md)
一条任务一份,必须能回答:
- 这条对话专门干什么;
- Boss 在这条对话里提过的硬性要求:格式、字数、风格、禁忌、验收标准——逐条保留原话,不许概括成「要求格式规范」;
- 目标、已完成、待续;
- 断言台账(见下);
- 交接日志。
长期记忆(读前必问)
长期记忆指跨对话保留、但不随某条任务链走的事实性文件:
| 层级 | 位置 | 说明 |
|---|---|---|
| 项目级 | <当前工作区>/.workbuddy/memory/MEMORY.md |
这个项目沉淀的长期结论 |
| 用户级 | ~/.workbuddy/ 下的长期记忆文件(如 MEMORY.md、user-*-personal/MEMORY.md) |
跨项目的人与偏好 |
不含日记(memory/YYYY-MM-DD.md)——流水记录不进记忆区,确实要看再单独问。
硬规则:先问,再读
- 接棒第一步是扫描,不是读取。 只取元数据:路径、大小、最后修改时间。
- 列出清单再问:每个候选文件一行,附一句「与本链是否相关(推断)」;没有文件就直说没有。
- 得到同意才读正文;没得到同意,一个字都不读。
- 用户只点了其中几个,就只读那几个,不顺手多读。
- 用户拒绝或说「不用」,直接跳过继续接棒,不得因此卡住流程,也不追问第二遍。
- 回执里如实记一行:已读几个、哪些没读、为什么。
读进来之后
- memory 里的内容默认是二手来源,只能标「未证实」;要进台账为「已证实」,必须回它指向的原始来源重新核对并补指针。
- 记忆与链台账冲突时,以链台账的原始来源为准,不要拿记忆当裁判。
- 读完不要把记忆整段抄进链里;只把与本链相关的那几条提出来,标清来源。
三态台账
每条结论一行,必须标状态:
| 状态 | 定义 | 使用条件 |
|---|---|---|
| 已证实 | 有一手来源 | 附最小定位指针:文件:行号 / URL / 命令 |
| 未证实 | 二手转述、查不到出处 | 不得当事实用 |
| 推断 | AI 自己的推理 | 不得当事实用 |
| 已否决 | 曾经写入、后来被推翻 | 保留原文 + 写明依据;不删除 |
规则:
- 升格必须有新证据。 只有回原始来源重新核对过,才能从「未证实 / 推断」升为「已证实」,且同时补上指针。
- 禁止因为「上一轮说过」「看起来合理」而升格——这是幻觉复利的主通道。
- 错的不删,只否决。 标「已否决」并写明依据,原文保留。删掉它,同一个幻觉下一轮会重新长出来。
- 「未证实」「推断」不得当事实用。 非要提,标注「(上一轮推断,未核实)」。
- 指针失效(文件被改、行号漂移、链接 404)单独标注,不得默认沿用;能重找来源就重找,找不到就降为「未证实」。
流程一:交棒
- 把本轮结论按来源分级,逐条追加台账,带指针。
- 更新「待续」,写成陈述句,不写成待办清单。
- 更新链索引的状态与最后触碰时间。
- 向 Boss 报告:新增 N 条(已证实 x / 未证实 y / 推断 z),文件路径。
流程二:接棒
- 长期记忆:先问,再读。 扫描候选文件的元数据(路径 / 大小 / 修改时间),列清单问 Boss 读哪些;得到同意才读正文。拒绝、说不用、或压根没有候选文件,都直接跳过继续——不卡流程、不追问第二遍。
- 读固定区。
- 读链索引,定位 Boss 指定的那条链。
Boss 没指定,就列出活跃链让他选,不许自己挑一条开工。 - 读该链全文。
- 复验(义务,不是建议):只挑「已证实」的条目,逐条打开指针比对原文。
- 一致 → 记复验日期;
- 不一致 → 标「已否决」,以来源为准;
- 指针失效 → 单独标注。
- 「未证实」与「推断」不复验,只计数。 - 重命名当前对话/任务为链名:
- 运行python scripts\rename_session.py "<链名>" --apply(默认 dry-run,--apply才写库);
- 成功 → 回执里记「对话标题:已改为 <链名>(重启后显示)」;
- 失败 → 回执里记「对话标题:改名失败」,并给出「建议标题:<链名>」,请 Boss 手动改名;
- 侧边栏需重启 WorkBuddy 才显示新标题;回执里提示 Boss 重启。 - 输出接棒回执:
- 链名;
- 长期记忆:已读 N 个(路径) / 未读(用户拒绝) / 无候选文件;
- 对话标题:已改为 <链名>(重启后显示) / 改名失败(建议手动改为 <链名>);
- 固定区状态;
- 台账总数;
- 已证实条目中:复验通过 · 否决 · 失效各几条;
- 未采信几条;
- 本轮任务一句话;
- 被否决的条目逐条列出(无则写「无」)。 - 回执输出完停下等指令,不许自动开工。
「交接到位」的验收标准
接棒回执必须让 Boss 能答出这四个问题;答不上就是没到位,回去补摘要:
- 这条任务要交付什么?
- 现在做到哪一步了?
- 下一步具体做什么?
- 有哪些硬要求不能违反?
这四个问题是自检项,每次接棒前逐条过一遍。
冲突处置
- 台账与原始来源冲突:以来源为准,条目改判「已否决」。
- 固定区与
菜单.md冲突:菜单优先(身份与写入权限以菜单为唯一权威)。 - 两条链的断言互相矛盾:都标「未证实」,请 Boss 裁决,不自行取舍。
交付前自检(逐条打勾)
> 可运行 python references\selfcheck.py 做关键词级自检(可选)。
- [ ] 固定区里混进任务角色了吗?
- [ ] 三态定义齐吗?升格条件写死了吗?
- [ ] 「开场必须复验」写成了义务还是建议?
- [ ] 「不删只否决」有吗?
- [ ] 指针失效的处理有吗?
- [ ] 接棒流程里有「不许自己挑链」「回执完停下」吗?
- [ ] 接棒第一步是扫描并询问长期记忆,而不是直接读正文吗?
- [ ] 用户拒绝读记忆时,流程还能继续走完吗?
- [ ] 「交接到位」的四问验收标准写进技能正文了吗?
- [ ] description 能不能让 AI 在 Boss 说「接棒」「交棒」时正确触发?
与其他文件的关系
菜单.md:身份与写入权限的唯一权威;固定区与它冲突时,以菜单为准。IDENTITY.md:助手身份的唯一权威;固定区只指路,不重复定义。- 本技能只读写
~/.workbuddy/与~/WorkBuddy/两棵树。 - 执行细节(怎么复验、台账措辞、回执格式)见
references\playbook.md。