[Discussion] Subagent 异步执行与 Tracing 完整性讨论 #3376
heart-scalpel
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
概述
在为 DeerFlow 实现 CLI 会话持久化功能时,发现了 Subagent 执行架构中的一些问题,希望与维护者讨论:
背景:问题描述
错误现象
CLI模式下当启用 subagent 委托功能后,遇到以下错误:
错误堆栈
架构对比分析
Gateway 官方实现
AsyncSqliteSaver/InMemorySaver(异步)agent.astream())CLI 自定义实现
SqliteSaver(同步) +agent.stream()(同步) → ✓ 正常SqliteSaver(同步) +agent.astream()(异步) → ✗ 不匹配执行流程对比
问题 1:Subagent 与 Checkpointer 类型匹配
当前实现
subagents/executor.py的_create_agent()方法没有传入 checkpointer:建议修复方案
方案 A: Subagent 使用
InMemorySaver理由:
InMemorySaver同时支持同步和异步方法方案 B: CLI 改为异步架构
使用
AsyncSqliteSaver,但这需要重构整个 CLI 为异步架构,改动较大。问题 2:Subagent Tracing 完整性
当前 Tracing 传递机制
检查
tools/builtins/task_tool.py发现,Subagent 只继承了部分 tracing 信息:Tracing 功能对比
build_tracing_callbacks())inject_langfuse_metadata())SubagentTokenCollector)关键发现
Subagent 的 Langfuse tracing 在 Gateway 和 CLI 下都不完整。
trace_id仅用于日志记录,不上报 Langfuse讨论问题
Subagent 是否需要完整的 Langfuse tracing?
如果需要完整 tracing,应该如何实现?
task_tool.py中从 parent 继承 callbacks?executor.py中重新构建 tracing callbacks?Subagent 的 checkpointer 设计建议?
InMemorySaver是否足够?这是有意设计还是未完成功能?
环境信息
相关代码
backend/packages/harness/deerflow/subagents/executor.py- Subagent 执行逻辑backend/packages/harness/deerflow/tools/builtins/task_tool.py- Task 工具调用入口backend/packages/harness/deerflow/tracing/factory.py- Tracing callbacks 构建cli/engine.py- CLI 会话管理和 checkpointer期待: 希望了解官方对 Subagent tracing 和 checkpointer 的设计思路,以及是否有推荐的实现方式。
Beta Was this translation helpful? Give feedback.
All reactions