Skip to main content

作用

harness 层默认为 agent 提供一套“足够走完一个闭环”的内置工具:读写文件、检索记忆与会话、委派子 agent、可选走 shell。不需手动注册,HarnessAgent.build()SubagentsHook 会一起装好。

注册路径

  • 直接 registerFilesystemTool / MemorySearchTool / MemoryGetTool / SessionSearchTool 必装;ShellExecuteTool 仅在 backend instanceof AbstractSandboxFilesystem 时装。
  • 间接 registerAgentSpawnToolTaskToolSubagentsHook.tools() 返回的,仅在非 leaf 且配了 model 时出现;在 session mode 下 agent_* 会被 sessions_* 替换。

文件系统·FilesystemTool

包装 AbstractFilesystem;路径是后端本地路径。

记忆·MemorySearchTool / MemoryGetTool

参数名是驼峰(startLine / endLine),与 filesystem 的 snake_case 不一致。

会话·SessionSearchTool

参数名都是驼峰,且 session_search 返回结果是扫全部 agents/<agentId>/sessions/*.jsonl 后的“首次命中 10 条”,不是按相关性排序。

子 Agent·AgentSpawnTool

Session mode 下,这三个名会变为 sessions_spawn / sessions_send / sessions_list

后台任务·TaskTool

Shell·ShellExecuteTool(条件性装)

仅在后端是 AbstractSandboxFilesystem(包含 LocalFilesystemWithShell)时才被注册。如果你用的是纯 LocalFilesystemRemoteFilesystem,子工具不出现。
注意:@Tool 未显式设 name,默认取方法名,所以 LLM 看到的工具名是 execute。如果后续统一为 shell_execute 是个小重构,参见 roadmap

相关文档

  • 文件系统 — 后端实现与沙箱接口
  • 记忆memory_search / memory_get 背后的 FTS5 与双层记忆
  • 会话session_* 系列背后的 WorkspaceSession / SessionTree 双轨
  • 子 Agentagent_spawn / agent_send / task_* 的调度与生命周期