AREX Feed Article
Cursor SDK 新增运行中引导:run.steer() 注入消息,子代理转入后台并回传结果
Cursor 的官方 X 账号 @cursor_ai 在 UTC 时间 10 月 5 日 16 时 08 分(北京时间 10 月 6 日 0 时 08 分)发布宣布,Cursor SDK 的 Agent 现在可以在运行过程中接受引导:调用 run.steer() 就能在运行中途传入新消息;如果此时有子代理(subagent)正在处理任务,它会转入后台继续工作。
这串帖子共五条,在 15 秒内发完;除运行中引导外,还公布了另外三项变化:后台子代理的结果会作为同一次 run 的后续轮次回传父级,stream() 与 wait() 会等到所有子代理完成;用户可以用自己的文本替换 Cursor 的系统提示词,该功能正在按账号逐步开放;自定义工具可以携带 MCP 注解,用来标明工具是只读还是破坏性操作。最后一条把详细说明指向 ,其中 1.0.31 条目列出了这些能力的机制与限制。以上描述均来自 Cursor 的官方发布。
run.steer():把消息注入当前轮次,或改为普通后续消息
Cursor SDK 通过 npm 包 @cursor/sdk 和 PyPI 包 cursor-sdk 分发,有本地与云端两类运行方式。变更日志把这次更新写得比帖子更细:run.steer(text) 会把消息注入正在执行的那一轮,并返回两种结果之一:complete_delivered,表示当前轮次已经接收这条消息;revert_to_followup,表示这条消息应该改作一条普通的后续消息(follow-up)发送。
涉及子代理时,规则很明确:steer 在前台子代理运行期间可用,送达时该子代理会被转入后台并继续执行。
适用边界是:运行中引导目前仅支持本地(local)的 TypeScript 运行,云端运行中调用 steer 会返回 revert_to_followup,即提示改用普通后续消息。
后台子代理的结果,作为同一次 run 的后续轮次回传
公告的第二条写道,后台子代理「现在会回传结果」:其结果会作为同一次 run 的后续轮次回到父级。变更日志写明:以前,这类结果会在父级轮次结束时被丢弃;run.stream() 会持续产出这些回传轮次中的事件,run.wait() 要到所有子代理都结束后才返回。
这一项在本地 agent 的 TypeScript 与 Python 中都适用。官方示例给出的用法是:让子代理在后台跑不稳定的认证(auth)测试,父级用 run.stream() 跟踪子代理状态,最后用 run.wait() 取回结果。
系统提示词可整段替换,按账号逐步开放
系统提示词的替换入口是 Agent.create() 的 systemPrompt 选项。官方写道:「你也可以用自己的文本替换 Cursor 的系统提示词。规则、技能和工具 schema 仍然会加载。」变更日志补充了两点:替换只作用于主 agent 循环的提示词,子代理保留各自的提示词;替换不会持久化在 agent 上,恢复运行(Agent.resume())时需要再次传入。
按 ,替换是整段进行的:设置 systemPrompt 后,模型不再获得编码助手身份、工具调用协议与沟通指引,调用方需要重新声明 agent 仍需要的内容。
限制有两层:这项能力目前仅限本地 TypeScript agent;开通按账号进行,官方帖的说法是「正在一个账号一个账号地开通」。
自定义工具的 MCP 注解:只是提示,不会被强制执行
同一批更新还包括给自定义工具加注解。官方说,自定义工具现在可以携带 readOnlyHint、destructiveHint 这类 MCP 工具注解,「让模型在调用之前就能分辨一次查询和一次删除」。变更日志列出了完整字段:title、readOnlyHint、destructiveHint、idempotentHint、openWorldHint;注解写在 local.customTools 的条目上,会一并传给模型。
但变更日志强调,这些注解只是描述性提示,「SDK 不会强制执行它们」。这项能力目前只支持 TypeScript。
开发者的追问:转入后台的子代理与取消机制
主题帖发出两个多小时后,第一条帖子的浏览量约 4.5 万次、点赞 627 次、回复 67 条。回复里既有正面反馈,也有对边界行为的追问。
认为,让子代理转入后台继续工作才是关键:「大多数 steering 实现会阻塞到你回应为止,委派也就失去了意义。」另一位回复者 把这一机制类比为「给运行中的进程发了个信号而不是 kill -9」,并提到「以前只能掐断重来,上下文和 token 全打水漂」。
对已经转入后台的子代理, 写道:「如果 steer 改变了方向,它还在旧计划上,可能落地一个我刚让父级跳过的改动。」他希望 steer 也能送达正在运行的子代理。 则提出,如果纠正改变了目标,后台任务也需要能取消,否则它可能继续解决旧任务。 的问法更直接:「steer 能到达转入后台的子代理吗,还是只作用于父级运行?」