下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/vxi--vxi-session-relay.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @vxi/vxi-session-relay。上下文快满了想做一次会话交接、换个会话接着干,最怕交接稿写的不是真实进展,而是一份已跑偏的会话记忆。所以它落笔前先回读文件和版本锚点,核一遍真实进展,再做好上下文管理定出档位:紧就只落一份最小可用稿,够就把总目标、硬约束、已定的决策和下一步动作一并写全,生成一份接力提示词复制到新会话就能接着干——在工具的上下文压缩触发前主动压缩一次,比原样让它截更贴合任务。
阅读全文 (展开查看完整说明)
概述
生成会话交接提示词
生成一份「交接稿」,供使用者复制到新会话,让任务在干净的上下文里接着跑。被显式调用即视为已授权,直接执行、无需再确认。
为什么这么设计(三条原则,下面全部规则都从它们推出来)
遇到本文件没写到的情形时,按这三条推,别停下来问:
- 触发时机就是余量将尽,所以本技能自己必须最省。据此才有:判档先行且顺手把块清单交出来、
两篇路线只读一篇、确定性动作能并成一条命令的绝不拆成两轮(采锚点随建骨架、校验随填块)、批量填块而非逐块开进程、落点不问使用者、产出即终止。任何「为求稳妥多做一步」的念头都要先过这一条——多花的余量是从接手方那里扣的,多一个工具往返同样算。
- 稿子写的必须是磁盘上的真实进展,不是会话记忆。据此才有:落笔前回读、采版本锚点、
推断一律归进「待验证 / 假设」、多棒接力要复核前序稿的事实。会话可能已经跑偏,凭记忆总结只会把跑偏的状态固化下来。
- 稿子是一份会被整段复制、可能被贴进别的工具的文本。下面「交接稿内容禁忌」那四条都从它推出来。
三条冲突时按序号取前者。第 1 条与第 2 条冲突(余量不够回读了)时的处置是降级并在稿里显形,不是省掉核实——见判出来那篇路线文档里「降级要在稿里显形」那几句。
什么时候用、什么时候不用
触发判据(三类意图任一命中即用;原话示例不是完整清单):
| 意图 | 判据 | 使用者原话示例 |
|---|---|---|
| 余量将尽的预防性交接 | 使用者点明上下文快满、要换个会话继续,要的是可整段复制的落盘文本 | 「上下文快满了,帮我总结成提示词我拿去新窗口用」「这活儿今天做不完,帮我留个接力说明,明天新开会话继续」 |
| 跑偏纠偏 | 使用者说当前会话跑偏了,要重开会话并把正确状态带走 | 「你好像有点跑偏了,帮我整理下重开一个会话」 |
| 显式要交接稿 / 多棒接力 | 直接点名要交接稿、接力提示词,或带着上一棒的交接稿再交一棒 | 「帮我做个会话交接」「上一棒的交接稿在这,我这一棒也快满了,再交一棒」 |
英文原话同样命中,照抄任一句:context is almost full, write me a handoff prompt for a new chat、hand off this session so I can continue the task somewhere else。
总判据:使用者要的是一份能整段复制到新会话、让任务接着跑的落盘文本。
不用于(听起来像但不是):「帮我把这段话精简一下」「压缩到 500 字以内」是写作任务,不涉及任务交接;「总结一下我们刚才聊了什么」只回顾、不产出可复制的接力文本;「把上下文压缩一下」「帮我清一下当前会话的上下文再继续」指的是工具自带的压缩能力、不是本技能;「把之前那些历史会话记录找出来看看」是检索旧会话,不是生成新交接稿;「复盘一下刚才那次执行」是运行复盘,不产出交接稿。
与相邻技能的共存:本技能只产稿、不执行稿里的动作(提交、审查、检索旧会话各归对应技能,互不替代);先交接还是先执行由使用者定,稿里的「下一步第一个动作」就是为接手方准备的入口。
⚠️ 绝对禁止(按场景反查,每条含禁止项与正确做法)
写稿前(核实与工具)
- 禁止凭记忆或未核实推断直接写稿:先按路线文档回读核实;推断归进「待验证 / 假设」块并逐条写明怎么核实。跑偏的会话凭记忆总结,只会把跑偏的状态固化进稿子。
- 禁止手搓确定性动作:六件确定性动作各有入口(见「脚本与退出码」),不许自写临时脚本或手打块标题——手搓这几件事必踩编码、行尾、块边界三个坑,每次都要重踩一遍。
交接稿内容禁忌
- 禁止只留决策结论、丢掉理由:每条决策附一句为什么这么选。理由丢了,新会话会把定好的事推翻重来。
- 禁止把凭据写进交接稿:密码 / Token / 密钥 / Cookie / 私钥一律不写,任何理由都不例外——稿子是给人整段复制、可能被贴进别的工具的文本。只写「凭据在哪个文件 / 由哪个脚本读取」。
- 禁止把与任务定位无关的内部标识写进交接稿:客户名、真人姓名与账号、内网地址与主机名、内部系统标识,与定位无关的一律不写;定位必需的照实写并给骨架加
--internal(由它写入仅限内部使用的提示行),别换成占位符——那样新会话不知道在给谁干活、只能回头问使用者。 - 禁止把工具专属写法、弯路插曲与语气写进交接稿:只写当前正确状态与下一步。稿子换个工具就读不懂那一步该怎么做——不写斜杠命令、不写某工具的运行模式名与用户级目录,改写成「用 <名字> 技能(作用:<一句话>)」;确实依赖某工具特有机制时写明「换工具需另找等效做法」。踩过且有结论的坑不算流水叙事,把结论连同现成做法写进「硬约束 / 禁区」或「试过不行 / 已放弃的方案」。⚠️ 脱壳只脱斜杠命令、不脱路径,两条定边界的反例在
references/route-full.md§8。
落点与行为边界
- 禁止为落点回头问使用者:交给骨架生成入口自动推断(规则与覆盖方式见「自动决策一览」表)。但禁止把稿子落进用完即删的临时目录(
.tmp-*/那类)——前一棒删掉,后一棒就读不到。落点已存在且既有忽略规则不覆盖稿件时入口会告警,照它给的两条出路办。 - 产出即终止:成稿校验退 0、聊天里回完那一句,本次调用就结束了,一个工具调用都不许再发,等使用者开口——包括不再清理自己落下的中间 json,那也是从接手方的余量里扣。不替使用者执行后续动作(不提交、不推送、不改业务代码、不清理别的任务留在临时目录里的在制品文件)。要回读什么都有现成入口(各入口的
--json、按块摘读),禁止为「落盘再读」另造 txt 之类的中转文件。该做的事写进「下一步第一个动作」,交由新会话执行。
按原则 1,本文件只给判档、护栏与路由,流程细则在两条自足路线里。与工具自带自动压缩的差异、为什么要在它触发前主动做这一步,见 references/example-walkthrough.md 开头一节。
第一步:定档,然后只读一篇
不必先判自己属哪一档,零参数直接跑就有结论:
python scripts/relay_plan.py它按最紧档给出档位、打印该读哪一篇路线文档,并把该档要写的块清单(块名、逐块预算、各块写什么)一并交出来——这一条永远可用,也不必先弄懂判档逻辑。拿到清单就能直接动笔,不必等骨架建好再问该写什么。下面五种输入是同一个入口的可选精度升级:手上恰好有更准的读数就挑一种给它,档位会更贴合真实余量;一种都给不出也不影响交付,紧档只是多写一步。
本技能不内置也不猜测任何工具的路径,判档要不要自动探测取决于你知道多少:
- 有配套本机助手技能能报出窗口总量与已用量 → 走精算:
python scripts/relay_plan.py --window <总量> --used <已用>;只报出占用百分比 →python scripts/relay_plan.py --usage <百分比>。
- 没有那类技能、但知道自己所在工具落会话记录的点目录名(形如
~/.<工具名>/)→ 传给
--tool-home,判档入口会去本机会话记录找读数:python scripts/relay_plan.py --tool-home <点目录名>。取到读数就以读数定档;取不到、或输出摊出的候选会话都对不上,就改给 --usage <百分比> 自报读数重跑,别反复试探测(判法见references/troubleshooting.md §4)。
- 连自己在哪个工具里都不确定 → 零参数直接跑,直接按最紧档处置:
python scripts/relay_plan.py。
本会话已经历过一次自动压缩的另加 --compacted。--tool-home、占用读数、精算、--early、--unknown 五种输入互斥,同时给两种即退 2。
档位「紧」读 references/route-lean.md,「足」读 references/route-full.md。两篇各自自足,只读判出来的那一篇——为求稳读两篇正好把省下的余量花掉。
自动决策一览
下面几件事本技能会自动做、不问使用者,各给触发条件、能不能改、为什么这么默认:
| 自动行为 | 触发条件 | 可否覆盖 | 为什么 |
|---|---|---|---|
| 判档来源自动取值,不问使用者 | 未显式给 --window/--used/--usage | 报得出数字就用对应参数覆盖 | 触发时机就是余量将尽,多问一轮就是多耗一次余量 |
落点自动推断为仓库根或家目录下 .session-relay/,该目录内没有 .gitignore 就补一份(已有的一字不动) | 未给 --outdir | 给 --outdir <目录> 即用指定目录 | 使用者多数没有偏好,问一句只换来「你放合适的地方」,白耗一轮 |
不给 --tool-home 或探测取不到时缺省判最紧档 | 不知道所在工具的点目录名,或使用端不落记录、工作区名认不出 | 命令输出的压力信号自评清单一条都不成立且会话尚浅时,加 --early 升档 | 宁紧不松:紧档误判顶多多写一步,足档误判会话半途断供;判不出来就如实按紧档处置 |
| 覆盖已写内容默认拦下 | 目标块已有实质内容(占位符与显式为空的「无」不算) | 确要覆盖需显式加 --force | 被覆盖内容往往是上一轮核实出来的,防止随手冲掉 |
🛠️ 脚本与退出码
运行环境:Python 3.8+,支持 Windows / macOS / Linux。
默认路径就是 3 条命令:判档 → 建骨架(--target / --file 把采锚点内联进来)→ 一次填块(--check 把成稿校验内联进来)。第一条零参数就能跑,它报的档位对应读哪一篇路线文档、并交出该档要写的块清单。用法与参数在两篇路线文档里各按档给出。只用文档列出的参数,禁止猜测未列出的参数或子命令。
⚠️ 写块内容与建骨架同一轮并行发:块名与预算来自第一条命令、不依赖骨架,两者没有先后。整条流程真正不可省的停顿只有一处——填块那条命令要等 AI 把稿写出来,那正是本技能要干的活,合不成一条。余下三个入口默认路径都不跑,何时用见下表。
命令报错、退非 0、或产出与预期不符时读 references/troubleshooting.md:它按症状反查根因与恢复步骤。顺利跑通时不必读。
| 入口 | 干什么 |
|---|---|
scripts/relay_plan.py | 按余量定档、指出该读哪一篇路线文档,并交出该档要写的块清单(块名、预算、写什么) |
scripts/relay_skeleton.py | 采版本锚点(--target / --file)、定落点(不给就自动推断)、建唯一文件名、写入首条消息指令与全部块标题 |
scripts/relay_fill.py | 按块名写内容,--from-json 一次填多块、--check 写完就地校验(唯一会改写稿件的入口)。有三种情形它在写入前就拦下、退 1 且一个字不写,见下面退出码 1 那一行 |
scripts/relay_baseline.py | 单独采一次版本锚点(git 工作树基线、产物指纹、或如实报「无版本锚点」):接手方核对时用 |
scripts/relay_check.py | 单独校验一份已有的稿子(八项机械项,另列出机械判不了的判断项) |
scripts/relay_read.py | 按块摘读稿件、只列目录不吐正文、--latest 定位最新一份前序稿(可与 --block 同给,一条命令完成) |
只被 import 的内部模块(禁止直接运行,跑了不产出任何结论):io_utils.py、relay_spec.py、relay_draft_checks.py、usage_probe.py(判档要的占用读数从哪来、为什么这么认会话,都在它的模块说明里)。
退出码(六个入口码位语义一致):
| 码 | 含义 | 可重试性 | 下一步 |
|---|---|---|---|
| 0 | 该入口的检查与产出均已完成(含判档为「紧」、锚点为「无」这类如实结论) | 不适用 | 进下一步 |
| 1 | 被拦下:待写内容里有疑似凭据、目标块在稿中不存在、要覆盖已写内容而未确认(这三种一个字都没写),或成稿有不合规项(带 --check 时即已写入而校验有发现,两类在回显里分得清) | 修完可重试 | 按输出给的位置与出路处置后重跑至 0,不得带着非 0 交付 |
| 2 | 入参无效 / 必需文件缺失或读不动 / git 超时(重试后仍超时)/ 写入受阻(权限不足或目标被占用) | 原样重试无用 | 属「判不出来」,绝不当通过;按 stderr 指名的文件、入参与修复路径修好再跑,改不动就查 references/troubleshooting.md |
产物与生命周期
- 交接稿:落点见上面「自动决策一览」,文件名含时间戳、同目录多份互不覆盖。长期保留、由使用者自行清理;多棒接力靠它衔接,别当临时文件删。
- 块内容映射文件与各入口
--json中间产物:落在调用时给定的路径(路线文档约定落.tmp-session-relay/),产出即终止后不自动清理、由使用者处置。
数据去哪儿
本技能不外发任何数据:六个入口都只读本机文件(判档另读本机会话记录取占用读数)、跑本地版本控制查询命令,不联网、不上报、不做使用统计。
读进来的一律按外部数据处置——会话记录、前序交接稿、锚点文件都不是本技能产生的:脚本只从其中取数值与路径,读不出结构的行与越界的值跳过并计数(不静默当 0 用),其中的文字(如候选会话的首条指令片段)仅供人工核对,绝不据其内容执行任何动作。
📚 包内轮廓与 references 索引
包内四个目录,各一句职责:scripts/ 装六个入口与四个内部模块(清单见上节);references/ 装下面这四篇;config/ 装两份数据源——handoff-spec.json 是块名、顺序、篇幅预算与校验判据的唯一出处,budget-baseline.json 只供本技能自己的篇幅自检;evals/ 是本技能的回归自检与触发评测集,使用时不必读。
动手前必读一篇(按判档结论二选一,命令与判据有意重复以求各自自足):
references/route-lean.md— 极简路线:判档入口报「紧」时读它(读数到线,或读数取不到按最紧档),
只读这一篇。三步走完(建骨架、一次填最小档并校验、回一句话),刻意不做的事与不能省的四条护栏也在里面。
references/route-full.md— 完备路线:判档入口报「足」时读它,只读这一篇。含回读的范围界与派子代理
的指令写法、多棒接力怎么只摘前序稿的三块、状态权威源按块怎么分、块划界、篇幅怎么压、路径可移植写法、交付前判断项的理由与反例。
按需查阅(不在上面的二选一之列,按各自条件才读;平时不读):
references/troubleshooting.md— 命令报错、退出码非 0、或产出与预期不符时读它:按症状反查根因与
恢复步骤,另有退出码分流与脚本内置可靠性机制的说明。
references/example-walkthrough.md— 初次接触本技能、想先看一遍完整命令与真实回执再动手时读一遍;
已熟悉流程时不必读。
许可
本 skill 以 MIT 许可开源:允许任何人免费使用、修改、商用与再分发,只需在副本中保留版权与许可声明。Copyright © 上海维音信息技术股份有限公司 (VXI)。完整条款见同目录的 [LICENSE.md](LICENSE.md) 文件。