feat: 支持 OpenAI Responses API、Agent Node HITL 多轮交互及工具错误检测#229
Conversation
|
CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅ |
AI Code Review很好,该字段存在。现在我来写最终的评审。推理丢失(reasoning-drop)问题是我最确信的具体发现。让我根据实际行数仔细重新考虑其严重性——它是真实的,但仅限于边缘情况。我将把它标记为 Warning。 再核实一次: 发现的问题
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #229 +/- ##
==========================================
Coverage ? 87.96093%
==========================================
Files ? 482
Lines ? 45452
Branches ? 0
==========================================
Hits ? 39980
Misses ? 5472
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
AI Code Review我已经掌握了足够的信息,现在开始撰写审查结论。 发现的问题🚨 Critical
|
AI Code Review基于我对 diff 的彻底分析,让我整理一下我的发现。 发现的问题🚨 Critical
|
|
I have read the CLA Document and I hereby sign the CLA |
I have read the CLA Document and I hereby sign the CLA |
AI Code Review已确认 —— 让我重新考虑一下实际值得报告的发现:
让我再仔细检查一个潜在的实际问题:在 让我验证一个担心: 现在,让我确认实际的一个问题: 我已经彻底审查过了。让我再检查一下 OpenAI Responses 流式传输错误路径中潜在的资源泄漏问题:在 让我最后验证一下 现在让我更仔细地看一下 一个实际的担心:在流式传输中, 我现在对我的发现很有信心。让我最后确认一下 OpenAI 模型的 让我写下审查意见。 发现的问题
|
新增功能: - OpenAI Responses API 适配 (非流式/流式), 支持 reasoning、tool calls、logprobs - Agent 节点多轮 HITL 机制, 通过 interrupt bridge 桥接子 agent LongRunningEvent - AG-UI GraphAgent checkpoint 保护, 防止工具结果恢复时覆盖 LangGraph checkpoint 代码修复 (代码审查): - _constants.py: 将 STATE_KEY_PENDING_AGENT_NODE_HITL 加入 UNSAFE_STATE_KEYS, 防止含敏感工具参数的 child_state 通过 completion 事件对外暴露 - _openai_model.py: 非流式 Responses 路径分离 http_options 传参, 与流式路径 保持一致, 修复 extra_body 被误传为 responses.create 顶层参数的 Bug - _llm_agent.py: 删除重复的 logger.debug 行; 在长运行工具与并行工具批混用时 发出警告, 提示同批其它工具结果不会被 LLM 进一步处理 - _long_running_tool.py: 提取 TOOL_ERROR_CODE_* 共享常量, 消除与 _tools_processor.py 中的硬编码字符串重复 - _agui_agent.py: 优化 GraphAgent checkpoint 检测——复用 _ensure_session_exists 返回的 session 消除额外 DB 查询, 用模块级常量替代硬编码前缀, 改为同步方法 - _session_manager.py: 新增 session_service 公共属性, 消除私有成员访问 新增测试: - AgentNode HITL 中断后进程重启恢复场景 (SqlSessionService) - STATE_KEY_PENDING_AGENT_NODE_HITL unsafe 归类验证 - 多轮 HITL 客户端使用过期 function_call.id 提交 resume 时不静默完成 - 非流式 Responses 路径 http_options 含 extra_body/extra_headers/timeout 时参数分离 - GraphAgent checkpoint 保护测试 - test_constants.py 更新覆盖新增 unsafe key
AI Code Review很好 — 现在进行最终审查。 发现的问题🚨 Critical
|
| child_user_content = resume_content | ||
| if child_user_content is None and isinstance(child_user_input, str) and child_user_input: | ||
| child_user_content = Content( | ||
| role="user", |
There was a problem hiding this comment.
HITL 多轮恢复时已完成 round 重放存在挂起/错序风险
恢复执行时对每个已完成 round 重新调用 interrupt(payload),但这些调用会阻塞挂起而非返回(LangGraph 仅对已被 resume 的 interrupt 返回值),且 _extract_resume_command 只携带 current round 的 resume 值,可能导致 graph 卡死或重放错序。建议用 Command(resume=...) 显式回放已完成 round 的历史响应,或改为不重放已完成 round。
新增功能:
代码修复 (代码审查):
新增测试: