SDK 可以让子代理继承父级的执行器

SDK 1.0.34 写:设置 local.subagentInherit 后,Task 启动的代理(含嵌套)使用与父级相同的自定义读写和 shell 执行器、相同的工作区路径,以及相同的允许和排除工具。不设置时行为与以前一样。仅 TypeScript 本地代理。页面未标注日期。

SDK 可以让子代理继承父级的执行器

cursor sdk 子代理继承执行器对应 changelog 的 1.0.34。设置 local.subagentInherit 之后,由 Task 工具启动的代理,包括嵌套下去的,会使用和父级相同的自定义读、写、shell 执行器,相同的上报工作区路径,以及相同的允许工具和排除工具。可以在 Agent.create() 上传入,也可以在某一次 send 上覆盖。仅 TypeScript 本地代理。不设置时,子代理保持以前的行为。

作者:CodePass 技术编辑

继承的是执行器和工具边界,不是对话内容

说明点名的是执行器、工作区路径、允许列表和排除列表。它没有写子代理会继承父级的系统提示、历史消息或你在 steer 里插进去的那一句。对话怎么接,要看别的版本:1.0.31 写后台子代理的结果回到同一次 run,1.0.32 写等待期间的插话。1.0.34 不替代那两句。

「包括嵌套」表示 Task 再启动 Task 时,这一层也吃同一套执行器和工具边界,只要继承开关是开的。说明没有写嵌套深度的上限。

Python 没有出现在这节。Python 本地代理不会因为 TypeScript 文档里有这个字段就自动继承。云代理也没有出现。把 local.subagentInherit 传到云运行上会不会被忽略,原文没有写,不要假设云端子代理因此换了执行器。

不设置就不是新行为

原文写:留空时,子代理的行为和以前一样。升级到 1.0.34 不会默默打开继承。要子代理使用你挂上的自定义 shell,必须在创建或某一次 send 里传入这个字段。某一次 send 上的覆盖,说明没有写会不会变成之后每一轮的默认值。只想影响一轮时,按「覆盖这一次 send」来用,不要把它当成账号级开关。

同一版还写了空闲连接:运行之间闲置时,SDK 会在 29 秒后关掉不用的 HTTP/2 连接,并在复用一条安静了约一分钟的连接之前先检查它。停住的连接会变成可重试的 NetworkError,代码是 connection_stalled,连续重试在 3 分钟后停止。那是网络,不是子代理继承。

写作日没有设置 local.subagentInherit。changelog 没有给 1.0.34 的发布日期。

参考资料