Subagents / 子 AgentNote 37
05 关闭同步 subagents
它是什么
它是什么
要让 Agent 没有同步 task 工具,支持路径是禁用默认 general-purpose subagent,并且不传任何同步 subagents。这个开关放在 active harness profile 的 GeneralPurposeSubagentProfile(enabled=False) 里。它解决的问题是:某些简单 Agent 不允许委派,避免模型把直接任务绕成子任务。
常用程度
中。大多数 Deep Agent 会保留 subagent;但当你做一个简单、受控、不能委派的 Agent 时,这个开关很有用。
适合:
- 工具面很敏感,不希望模型把任务转交给默认 subagent。
- Agent 只做单步问答或固定工具调用。
- 你想明确验证“没有 task 工具时模型怎么工作”。
不适合:
- 复杂研究、代码审查、批处理任务。
- 需要上下文隔离的工作流。
生效条件
必须同时满足:
general_purpose_subagent.enabled = False
create_deep_agent(..., subagents=None 或不传同步 subagents)
如果你禁用了默认 general-purpose,但又传了自定义同步 subagent,task 工具仍然会存在。
最小代码
文件:deepagent_src/subagents_teach/05_disable_subagents.py
register_harness_profile(
"openai:gpt-5.5",
HarnessProfile(
general_purpose_subagent=GeneralPurposeSubagentProfile(enabled=False),
),
)
运行
uv run python deepagent_src/subagents_teach/05_disable_subagents.py
预期输出末尾:
disable synchronous subagents real agent ok
验证方式
脚本真实调用 Agent,并断言消息链里没有名为 task 的工具消息。
常见误区
不要用 excluded_middleware 去删 SubAgentMiddleware。官方支持路径是禁用默认 general-purpose subagent,并且不提供同步 subagents。
async subagents 不受这个规则影响。同步 task 工具和 async task 工具是两套 middleware。
相关资源
查看示例代码:deepagent_src/subagents_teach/05_disable_subagents.py
from __future__ import annotations from deepagents import ( GeneralPurposeSubagentProfile, HarnessProfile, create_deep_agent, register_harness_profile, ) from _model import MODEL_PROFILE_KEY, get_real_model from deepagent_src.agent_output import invoke_and_pretty_print def main() -> None: register_harness_profile( MODEL_PROFILE_KEY, HarnessProfile( general_purpose_subagent=GeneralPurposeSubagentProfile(enabled=False), ), ) agent = create_deep_agent( model=get_real_model(), system_prompt="Answer directly. No synchronous subagents are available.", ) result = invoke_and_pretty_print( agent, { "messages": [ { "role": "user", "content": "用一句中文回答:当前没有同步 subagent 时会怎样?", } ] }, ) assert result["messages"][-1].content assert not any(getattr(message, "name", "") == "task" for message in result["messages"]) print("disable synchronous subagents real agent ok") if __name__ == "__main__": main()