- 所谓harness, 就是有效的整合 tools,skills,mcp,llm,memory,sandbox。然后用langchain组合,用langgraph 执行多agent的图流程,其中leadagent固定实现,子agent通过一个tool 动态创建。
- lead-agent和sub-agent 之间通过 trace_id 实现分布式链路追踪
- 检查点使用的是langgraph框架默认的检查点,级别是节点级别。记录每个节点的执行状态。
- 异常处理大部分使用的是自定义的 ErrorHandlingMiddleware处理的,而langgraph框架的异常处理机制主要用于langgraph框架组件的异常处理,比如checkpoint等。
- 当token数超过大模型窗口限制时,触发将消息刷入队列机制,通过配置的summarize_model 模型进行总结并形成新消息
- 高并发设计:架构:fatapi+uvicorn+多worker/asyncio.create_task(),agent后台执行/StreamBridge返回结果/asyncio.to_thread + ThreadPoolExecutor
- tools工具异常时,tool_error_handling_middleware 统一处理,转换并统一返回Tool_Message。agent 根据prompt来决定是重试、更换、询问用户。其中LoopDetectionMiddleware 来防止无限循环。
- sandbox 环境隔离机制有两种实现方式,LocalSandbox和AioSandbox,分别为线程隔离和进程隔离。sandbox提供文件系统和命令行操作能力。所有agent通过http api来调用它来完成需要隔离操作的执行。
- 主agent在deerflow的进程中运行;subagent也在deerflow的进程中运行,但通过独立线程( subagent-persistent-loop )运行。
- sandbox是会话级别的。同一个会话内,所有agent共享;不同会话之间完全隔离。