OH06: Subagent / 多 Agent OpenHarness · 对标 S06
与 S06 同主题:把子任务委派给另一进程或同进程 teammate,需要类型定义、spawn 后端选择与结果回传;与课内 Explore / worktree 隔离同构不同实现。
上游:HKUDS/OpenHarness · 本仓库快照:reference/rererence_harness/OpenHarness/ · 路径亦见 专题映射表。
course-s06)。🎯 关键路径(读什么)
在 src/openharness/ 下优先打开:
tools/agent_tool.py:AgentToolInput.mode(local_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 模型类似。
⚖️ 与课内叙事对照
| 维度 | 课内 S06 | OpenHarness |
|---|---|---|
| 隔离 | worktree / remote | mode + swarm backend 组合 |
| 配置源 | AgentDefinition JSON | get_agent_definition 查找链 |
| 返回形态 | tool_result 文本 | 单块字符串,非嵌套消息树 |
🤔 思考题
in_process_teammate与local_agent在资源隔离上差在哪?- 若
subagent_type未注册,工具在 execute 哪一行失败? - 与 OH12 worktree 工具组合时,典型调用顺序应怎样设计?
📎 延伸阅读
OH01–12 目录 · OH05 · OH07 · S06 · D06