用途
Pulumi Neo Handoff 用于将当前线程中正在进行的工作,以单向交接的方式转移给一个新的 Pulumi Neo 任务。控制权交给 Neo 后不会返回调用方代理。
主要能力
该技能在激活时,调用方代理扮演交接协调者而非操作者:不逐轮叙述交接过程,不把组装好的提示正文粘贴到聊天中(只显示临时文件路径供用户按需查看),启动后不再继续处理该任务,在返回任务 URL 后干净退出。
Neo 任务会收到一份包含三个部分的开场提示:
- Goal:一句话描述 Neo 接下来应该做什么。
- Repository pointers:仓库根目录、分支、工作目录、工作树状态,以及与进行中工作最相关的 3 到 5 个文件。
- Conversation summary:对已讨论、已决定和未决事项的紧凑记录。
提示中不包含 diff、完整文件内容或工具输出,因为 Neo 会直接看到本地工作树(包括未提交的更改),重复这些内容会浪费 Neo 的开场上下文。
使用方式
工作流程分为以下步骤:
-
预检:在起草任何内容前验证 CLI 是否可用。使用
command -v pulumi检查 pulumi CLI 是否安装,使用pulumi neo --help检查 pulumi neo 是否可用(可能需要运行pulumi login或升级 CLI)。预检失败时向用户显示错误并停止。 -
确定目标:目标是一句话描述 Neo 接下来应该做什么。如果用户的交接消息中包含该目标,直接使用;否则询问一次“What would you like Neo to do next?”。不重复目标以确认。
-
收集仓库上下文:使用
git rev-parse --show-toplevel获取仓库根目录,git rev-parse --abbrev-ref HEAD获取分支(分离头指针时返回 HEAD),git status --short获取工作树摘要。如果不是 git 仓库,则省略 Repository 部分并仅记录工作目录。如果分支显示 HEAD,记录提交 SHA 并标注为“detached at <sha>”。从对话中识别 3 到 5 个最相关的文件;如果对话未明确识别文件,则列出空而不是猜测。 -
起草对话摘要:按结构撰写紧凑摘要,包括 What's been done(已做出的决定、更改的代码、排除的死胡同)、Open questions(用户未解决的问题)、Next step(Neo 首先应做什么的一两句话)。目标约 400 词,积极压缩。没有有用内容的章节应省略而非填充。
-
组装提示并写入临时文件:将三个部分合并为单个 markdown 文档,使用
mktemp创建可移植的临时路径,例如PROMPT_FILE="$(mktemp -t neo-handoff.XXXXXX.md)"。文档结构为 # Goal、# Repository(Root、Branch、Working directory、Working tree、Files in play)、# Conversation summary。 -
启动:打印临时文件路径及一行大小摘要,然后调用
pulumi neo "$(cat "$PROMPT_FILE")"。pulumi neo 接受提示作为单个位置参数,没有 --file 标志,stdin 重定向会启动 TUI 而不是消费提示。"$(cat ...)"形式将文件字节作为数据捕获并作为单个参数传递。不要改成pulumi neo --file ...或pulumi neo < ...,这两种形式对当前 CLI 都是无效的。如果 CLI 以非零退出,原样显示其 stderr 并保留提示文件以便用户重试。 -
显示任务 URL:CLI 成功时会打印任务 URL,原样回显后停止。
适用场景
当用户明确要求交接、发送、转移或继续当前工作时使用。检测到基础设施相关工作不是触发条件;像“Neo 能做 X 吗”这样的能力问题也不是交接。
限制
- 单向交接:控制权交给 Neo 任务后不会返回调用方代理。
- Neo 任务可中断:如果摘要有误,用户可以在 Neo 任务内重定向。
- 显示任务 URL 是该技能的成功标准,而非底层工作成功完成。Neo 可能在任务内拒绝或重定向请求。
- 不要代替用户提交、推送或修改工作树;用户拥有自己的 git 状态,该技能是上下文交接而非工作流控制器。
- 不要在提示中包含 diff、文件内容或命令输出。
- 不要把组装好的提示粘贴到聊天中以供确认。