首页/OpenHarness 源码课/OH06: Subagent / 多 Agent

OH06: Subagent / 多 Agent OpenHarness · 对标 S06

S06 同主题:把子任务委派给另一进程或同进程 teammate,需要类型定义、spawn 后端选择与结果回传;与课内 Explore / worktree 隔离同构不同实现

上游:HKUDS/OpenHarness · 本仓库快照:reference/rererence_harness/OpenHarness/ · 路径亦见 专题映射表

与 S06 站内导图对齐course-s06)。

🎯 关键路径(读什么)

src/openharness/ 下优先打开:

  • tools/agent_tool.pyAgentToolInput.modelocal_agent / remote_agent / in_process_teammate)。
  • coordinator/get_agent_definition、team registry。
  • swarm/get_backend_registry、实际 spawn / in-process 路径。

🔍 源码导读

从 tool 到 backend

execute 内先解析 subagent_type 拿定义,再选 get_backend_registry() 中后端;失败时返回 ToolResult(is_error=True)。读时可对照课内「子 Agent 配置从哪来」。

与 OH01 的关系

子 Agent 往往是另一条 QueryEngine 或子进程 CLI;父循环只收到一条 tool_result 字符串,父侧消息历史不因子的内部 turn 自动膨胀——边界与课内 fork 模型类似。

⚖️ 与课内叙事对照

维度课内 S06OpenHarness
隔离worktree / remotemode + swarm backend 组合
配置源AgentDefinition JSONget_agent_definition 查找链
返回形态tool_result 文本单块字符串,非嵌套消息树

🤔 思考题

  1. in_process_teammatelocal_agent 在资源隔离上差在哪?
  2. subagent_type 未注册,工具在 execute 哪一行失败?
  3. OH12 worktree 工具组合时,典型调用顺序应怎样设计?

📎 延伸阅读

OH01–12 目录 · OH05 · OH07 · S06 · D06