bugfix: 工具流式输出问题修改 - #124
Conversation
|
|
|
head_sha: 变更摘要本 PR 主要围绕工具流式输出问题做修复:在 主要改动
|
|
head_sha: 代码审查审查总结已逐一审查全部 2 个变更文件:
结论统计:共 3 个 P3 发现(无 P0/P1/P2),整体风险为低。变更主体是示例代码与一个任务开始流事件的补充,未发现会导致编译失败、运行时崩溃、数据一致性或安全问题的缺陷。 审查总结已完成对全部 6 个变更文件的审查,逐文件结论如下:
问题统计:
整体风险判断:高风险。
⛔ 需要修改 |
|
head_sha:
|
| # | 类型 | 用例 | 原因(首行) |
|---|---|---|---|
| 1 | error | com.openjiuwen.test.cases.agent.agent_as_tool.TestAgentAsTool001#testAgentAsTool001 |
Failed to invoke agent |
| 2 | error | com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent.TestRunAgent005#testRunAgent005 |
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 3 | error | com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent.TestRunAgent008#testRunAgent008 |
pre workflow execute error, session_id=user_123, workflow=weather_flow, error='workflow state exists but non-interactive |
| 4 | error | com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent.TestRunAgent009#testRunAgent009 |
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 5 | error | com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent.TestRunAgent011#testRunAgent011 |
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 6 | error | com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent.TestRunAgent012#testRunAgent012 |
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 7 | error | com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent_streaming.TestRunAgentStreaming013#testRunAgentStreaming013 |
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 8 | error | com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent_streaming.TestRunAgentStreaming014#testRunAgentStreaming014 |
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 9 | error | com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent_streaming.TestRunAgentStreaming019#testRunAgentStreaming019 |
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 10 | error | com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent_streaming.TestRunAgentStreaming020#testRunAgentStreaming020 |
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 11 | error | com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHandoff001#testTeamHandoff001 |
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 12 | error | com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHandoff002#testTeamHandoff002 |
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 13 | error | com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHierarchicalMsgBus001#testTeamHierarchicalMsgBus001 |
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 14 | error | com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHierarchicalMsgBus002#testTeamHierarchicalMsgBus002 |
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 15 | error | com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHierarchicalTools001#testTeamHierarchicalTools001 |
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 16 | error | com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHierarchicalTools002#testTeamHierarchicalTools002 |
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 17 | error | com.openjiuwen.test.cases.agent.react_agent.ReActAgent001Test#testReActAgent001 |
Failed to invoke agent |
| 18 | error | com.openjiuwen.test.cases.agent.react_agent.ReActAgent004Test#testReActAgent004 |
Failed to invoke agent |
| 19 | error | com.openjiuwen.test.cases.agent.react_agent.ReActAgent034Test#testReActAgent034 |
Failed to invoke agent |
| 20 | error | com.openjiuwen.test.cases.agent.react_agent.ReActAgent042Test#testReActAgent042 |
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 21 | error | com.openjiuwen.test.cases.agent.react_agent.ReActAgent043Test#testReActAgent043 |
Failed to invoke agent |
| 22 | error | com.openjiuwen.test.cases.agent.react_agent.ReActAgent098Test#testReActAgent098 |
Failed to invoke agent |
| 23 | failure | com.openjiuwen.test.cases.agent.react_agent.mcp.ReActAgentMcp001Test#testReActAgentMcp001 |
Expecting actual: |
| 24 | error | com.openjiuwen.test.cases.component.intent_detection_component.TestIntentDetectComponent001#testIntentDetectComponent001 |
component intent_detection_invoke call failed, reason: failed to invoke llm: Failed to connect to /127.0.0.1:8088 |
| 25 | error | com.openjiuwen.test.cases.component.intent_detection_component.TestIntentDetectComponent002#testIntentDetectComponent002 |
component intent_detection_invoke call failed, reason: failed to invoke llm: Failed to connect to /127.0.0.1:8088 |
| 26 | error | com.openjiuwen.test.cases.component.intent_detection_component.TestIntentDetectComponent003#testIntentDetectComponent003 |
component intent_detection_invoke call failed, reason: failed to invoke llm: Failed to connect to /127.0.0.1:8088 |
| 27 | error | com.openjiuwen.test.cases.component.questioner_component.TestQuestionerComponent001#testQuestionerComponent001 |
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 28 | error | com.openjiuwen.test.cases.component.questioner_component.TestQuestionerComponent002#testQuestionerComponent002 |
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 29 | error | com.openjiuwen.test.cases.component.questioner_component.TestQuestionerComponent003#testQuestionerComponent003 |
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 |
| 30 | error | com.openjiuwen.test.cases.context_engine.processors.current_round_compressor.ContextCurrentRoundCompressor008Test#testContextCurrentRoundCompressor008 |
Missing required mock service: 127.0.0.1:8088 (start JiuwenTestJava/mock_service/mockllm/main.py before running tests) |
| 31 | error | com.openjiuwen.test.cases.context_engine.processors.dialogue_compressor.ContextDialogueCompressor007Test#testContextDialogueCompressor007 |
Missing required mock service: 127.0.0.1:8088 (start JiuwenTestJava/mock_service/mockllm/main.py before running tests) |
| 32 | error | com.openjiuwen.test.cases.context_engine.processors.round_level_compressor.ContextRoundLevelCompressor009Test#testContextRoundLevelCompressor009 |
Missing required mock service: 127.0.0.1:8088 (start JiuwenTestJava/mock_service/mockllm/main.py before running tests) |
| 33 | error | com.openjiuwen.test.cases.runnner.others.TestRunnerWorkflowManager001#testRunnerWorkflowManager001 |
component llm_invoke call failed, reason: component llm_invoke call failed, reason: Failed to connect to /127.0.0.1:8088 |
根因分析
1. com.openjiuwen.test.cases.agent.agent_as_tool.TestAgentAsTool001#testAgentAsTool001
失败原因分类:
环境问题
具体失败原因:
测试用例调用 Runner.runAgent 触发 ReActAgent 执行,Agent 在 railedModelCall 中调用 LLM 时,OkHttp 连接 127.0.0.1:8088 被 Connection refused,导致 RuntimeException: Failed to invoke agent。Mock LLM 服务在 CI 环境中未启动。PR 改动不涉及 LLM 连接逻辑,非回归。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088,Connection refused;[RESET] Mock server reset attempt 1/2/3 failed: null— mock 服务从测试开始就不可达 - 代码定位: 异常堆栈
OpenAiCompatibleModelClient.executeCall(OpenAiCompatibleModelClient.java:354)→ReActAgent.railedModelCall(ReActAgent.java:470) - 其他: PR diff 无 LLM 连接或 OkHttp 相关改动
修复建议:
确保 CI 环境在运行测试前启动 Mock LLM 服务(mock_service/mockllm/main.py 监听 127.0.0.1:8088)。参考 AGENTS.md 的 JiuwenTestJava Smoke Gate 步骤 3,启动所有五个 mock 服务并验证端口监听后再跑测试。
其他建议:
此失败模式在全部 33 个用例中高度一致(均因 8088 端口不可达),建议 CI 流水线增加 mock 服务健康检查前置门禁,避免无效测试运行。
2. com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent.TestRunAgent005#testRunAgent005
失败原因分类:
环境问题
具体失败原因:
Controller 进行意图检测时调用 LLM(127.0.0.1:8088),连接被拒绝。意图检测失败后 fallback 到首个 workflow,workflow 内 questioner 组件同样调用 LLM 失败,最终抛出 agent controller runtime error。Mock LLM 服务未启动。
证据来源:
- 日志关键信息:
Intent detection failed: Failed to connect to /127.0.0.1:8088, using first workflow;component questioner_invoke call failed, reason: failed to invoke llm for extraction - 代码定位:
WorkflowEventHandler.executeRegisteredTask(WorkflowEventHandler.java:348)→QuestionerDirectReplyHandler.invokeLlmForExtraction(QuestionerDirectReplyHandler.java:352) - 其他: PR diff 不涉及 workflow 或 questioner 组件逻辑
修复建议:
同上——确保 CI 环境中 Mock LLM 服务(8088 端口)已启动并可达。
其他建议:
意图检测 fallback 到首个 workflow 的行为掩盖了原始错误,测试断言未能区分"意图检测失败"与"workflow 执行失败",建议增强错误信息可观测性。
3. com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent.TestRunAgent008#testRunAgent008
失败原因分类:
环境问题
具体失败原因:
与前序用例共享同一 sessionId=user_123 的 InMemoryCheckpointer 状态。前序用例(TestRunAgent005)在 LLM 不可达时异常退出但未清理 checkpointer 中的 workflow state,导致本用例尝试启动同 session 的 workflow 时触发 preWorkflowExecute 检查:workflow state exists but non-interactive input and cleanup is disabled。根因仍是 mock LLM 不可达造成的级联影响。
证据来源:
- 日志关键信息:
pre workflow execute error, session_id=user_123, workflow=weather_flow, error='workflow state exists but non-interactive input and cleanup is disabled' - 代码定位:
InMemoryCheckpointer.preWorkflowExecute(InMemoryCheckpointer.java:92)→CompiledGraph.prepareExecution(CompiledGraph.java:98) - 其他: 前序用例 #2(TestRunAgent005)已对 session user_123 创建了 workflow state,但因 LLM 不可达未能正常完成,残留的 state 未被清理
修复建议:
- 确保_mock LLM 服务启动,消除根本原因。2. 作为防御措施,测试用例间应确保
sessionId隔离或在@BeforeEach中清理 checkpointer 残留状态。
其他建议:
InMemoryCheckpointer 是进程内全局共享的,测试用例复用 sessionId=user_123 会导致状态泄漏。建议测试框架在每条用例前强制 reset checkpointer 或使用唯一 sessionId。
4. com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent.TestRunAgent009#testRunAgent009
失败原因分类:
环境问题
具体失败原因:
与 #2 相同模式:Controller 调用 LLM 进行意图检测时 ConnectException: Failed to connect to /127.0.0.1:8088,导致 agent controller runtime error。Mock LLM 服务未启动。
证据来源:
- 日志关键信息:
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位:
WorkflowEventHandler.executeRegisteredTask(WorkflowEventHandler.java:348) - 其他: 同 #2
修复建议:
确保 Mock LLM 服务(8088 端口)启动。
其他建议:
同 #2 的通用建议。
5. com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent.TestRunAgent011#testRunAgent011
失败原因分类:
环境问题
具体失败原因:
同 #2/#4 模式:LLM 调用失败,ConnectException: Failed to connect to /127.0.0.1:8088。
证据来源:
- 日志关键信息:
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #2
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
6. com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent.TestRunAgent012#testRunAgent012
失败原因分类:
环境问题
具体失败原因:
同 #2 模式:LLM 调用失败,ConnectException: Failed to connect to /127.0.0.1:8088。
证据来源:
- 日志关键信息:
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #2
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
7. com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent_streaming.TestRunAgentStreaming013#testRunAgentStreaming013
失败原因分类:
环境问题
具体失败原因:
流式模式下 Controller 调用 LLM 进行意图检测失败,ConnectException: Failed to connect to /127.0.0.1:8088。Mock LLM 服务未启动。
证据来源:
- 日志关键信息:
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #2
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
8. com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent_streaming.TestRunAgentStreaming014#testRunAgentStreaming014
失败原因分类:
环境问题
具体失败原因:
同 #7 模式:流式模式下 LLM 调用失败。
证据来源:
- 日志关键信息:
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #2
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
9. com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent_streaming.TestRunAgentStreaming019#testRunAgentStreaming019
失败原因分类:
环境问题
具体失败原因:
同 #7 模式:流式模式下 LLM 调用失败。
证据来源:
- 日志关键信息:
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #2
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
10. com.openjiuwen.test.cases.agent.multi_workflow_agent.run_agent_streaming.TestRunAgentStreaming020#testRunAgentStreaming020
失败原因分类:
环境问题
具体失败原因:
同 #7 模式:流式模式下 LLM 调用失败。
证据来源:
- 日志关键信息:
agent controller runtime error, reason: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #2
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
11. com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHandoff001#testTeamHandoff001
失败原因分类:
环境问题
具体失败原因:
多 Agent Team Handoff 测试中 LLM 调用失败,ConnectException: Failed to connect to /127.0.0.1:8088。Mock LLM 服务未启动。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 堆栈指向
OpenAiCompatibleModelClient.executeCall - 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
12. com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHandoff002#testTeamHandoff002
失败原因分类:
环境问题
具体失败原因:
同 #11 模式:LLM 调用失败。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #11
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
13. com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHierarchicalMsgBus001#testTeamHierarchicalMsgBus001
失败原因分类:
环境问题
具体失败原因:
层级式消息总线 Team 测试中 LLM 调用失败。Mock LLM 服务未启动。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088;[RESET] Mock server reset attempt 1/2/3 failed: null - 代码定位: 同 #11
- 其他: PR diff 中
DelegateTool.java和HierarchicalDelegateTool.java在 pr_info.txt 变更文件列表中,但 pr_diff.txt 未包含其 diff;即便这些类有改动,失败根因仍是 mock 服务不可达而非代码逻辑变更
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
14. com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHierarchicalMsgBus002#testTeamHierarchicalMsgBus002
失败原因分类:
环境问题
具体失败原因:
同 #13 模式:LLM 调用失败。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #11
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
15. com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHierarchicalTools001#testTeamHierarchicalTools001
失败原因分类:
环境问题
具体失败原因:
层级式工具 Team 测试中 LLM 调用失败。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #11
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
16. com.openjiuwen.test.cases.agent.mutli_agent.TestTeamHierarchicalTools002#testTeamHierarchicalTools002
失败原因分类:
环境问题
具体失败原因:
同 #15 模式:LLM 调用失败。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #11
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
17. com.openjiuwen.test.cases.agent.react_agent.ReActAgent001Test#testReActAgent001
失败原因分类:
环境问题
具体失败原因:
ReActAgent 非流式调用 LLM 时连接 127.0.0.1:8088 被拒绝,抛出 Failed to invoke agent。Mock LLM 服务未启动。
证据来源:
- 日志关键信息:
java.lang.RuntimeException: Failed to invoke agent;Caused by:java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位:
ReActAgent.railedModelCall(ReActAgent.java:470)→OpenAiCompatibleModelClient.executeCall - 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
18. com.openjiuwen.test.cases.agent.react_agent.ReActAgent004Test#testReActAgent004
失败原因分类:
环境问题
具体失败原因:
同 #17 模式:ReActAgent 调用 LLM 失败。
证据来源:
- 日志关键信息:
Failed to invoke agent;ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #17
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
19. com.openjiuwen.test.cases.agent.react_agent.ReActAgent034Test#testReActAgent034
失败原因分类:
环境问题
具体失败原因:
同 #17 模式:ReActAgent 调用 LLM 失败。
证据来源:
- 日志关键信息:
Failed to invoke agent;ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #17
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
20. com.openjiuwen.test.cases.agent.react_agent.ReActAgent042Test#testReActAgent042
失败原因分类:
环境问题
具体失败原因:
ReActAgent 流式调用 LLM 时连接失败。虽然 PR #246 改了 ReActAgent 的流式输出路径(新增 writeAssistantStreamChunk 中 task_id 传播和 executeToolCallEntries 的流式分支),但失败发生在 LLM 连接层(OpenAiCompatibleModelClient.executeCall),早于任何流式输出逻辑。非 PR 改动引入的回归。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位:
OpenAiCompatibleModelClient.executeCall(OpenAiCompatibleModelClient.java:354) - 其他: PR diff 中 ReActAgent 的改动仅在
writeAssistantStreamChunk(task_id 传播)和executeToolCallEntries(新增 agentSession 参数走流式分支),不影响 LLM 连接逻辑
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
21. com.openjiuwen.test.cases.agent.react_agent.ReActAgent043Test#testReActAgent043
失败原因分类:
环境问题
具体失败原因:
同 #17 模式:ReActAgent 调用 LLM 失败。
证据来源:
- 日志关键信息:
Failed to invoke agent;ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #17
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
22. com.openjiuwen.test.cases.agent.react_agent.ReActAgent098Test#testReActAgent098
失败原因分类:
环境问题
具体失败原因:
同 #17 模式:ReActAgent 调用 LLM 失败。
证据来源:
- 日志关键信息:
Failed to invoke agent;ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #17
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
23. com.openjiuwen.test.cases.agent.react_agent.mcp.ReActAgentMcp001Test#testReActAgentMcp001
失败原因分类:
环境问题
具体失败原因:
此用例是唯一的 [failure] 类型(断言失败而非异常)。测试期望流式输出包含 "22℃",但实际输出是 LLM 连接失败的日志文本(ReAct stream error (attempt 1/3), aborting retry: java.net.ConnectException: Failed to connect to /127.0.0.1:8088)。Mock LLM 服务未启动,Agent 无法调用 LLM 获取天气查询结果,流式输出仅包含错误日志。此外日志还显示 add resource failed, id=weather_tool_id, type=tool — resource already exist,说明前序用例残留的 tool 资源未清理,但这是次要问题,主因仍是 mock LLM 不可达。
证据来源:
- 日志关键信息: 断言
Expecting actual: "ReAct stream error (attempt 1/3), aborting retry: java.net.ConnectException: Failed to connect to /127.0.0.1:8088 ..." to contain: "22℃";add resource failed, id=weather_tool_id, type=tool, error='resource already exist' - 代码定位:
ReActAgentMcp001Test.testReActAgentMcp001(ReActAgentMcp001Test.java:223);ResourceMgr.innerAddResource(ResourceMgr.java:1227) - 其他: PR diff 不涉及 MCP 工具注册或 ResourceMgr.addTool 逻辑
修复建议:
- 确保 Mock LLM 服务启动(消除主因)。2. 测试用例间应清理 ResourceMgr 全局状态(
resource already exist错误表明前序用例注册的 tool 残留)。
其他建议:
resource already exist 是 Runner.resourceMgr 进程全局状态的典型泄漏问题。建议 MCP 测试用例在 @AfterEach 中主动移除已注册的 tool/MCP 资源,或在 @BeforeEach 中先清理再注册。
24. com.openjiuwen.test.cases.component.intent_detection_component.TestIntentDetectComponent001#testIntentDetectComponent001
失败原因分类:
环境问题
具体失败原因:
意图检测组件直接调用 LLM 进行意图分类,连接 127.0.0.1:8088 被拒绝。Mock LLM 服务未启动。
证据来源:
- 日志关键信息:
component intent_detection_invoke call failed, reason: failed to invoke llm: Failed to connect to /127.0.0.1:8088 - 代码定位:
ErrorHelper.createWithDetails(ErrorHelper.java:189) - 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
25. com.openjiuwen.test.cases.component.intent_detection_component.TestIntentDetectComponent002#testIntentDetectComponent002
失败原因分类:
环境问题
具体失败原因:
同 #23 模式:意图检测组件调用 LLM 失败。
证据来源:
- 日志关键信息:
component intent_detection_invoke call failed, reason: failed to invoke llm: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #23
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
26. com.openjiuwen.test.cases.component.intent_detection_component.TestIntentDetectComponent003#testIntentDetectComponent003
失败原因分类:
环境问题
具体失败原因:
同 #23 模式:意图检测组件调用 LLM 失败。
证据来源:
- 日志关键信息:
component intent_detection_invoke call failed, reason: failed to invoke llm: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #23
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
27. com.openjiuwen.test.cases.component.questioner_component.TestQuestionerComponent001#testQuestionerComponent001
失败原因分类:
环境问题
具体失败原因:
Questioner 组件调用 LLM 提取参数时连接 127.0.0.1:8088 失败。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位:
QuestionerDirectReplyHandler.invokeLlmForExtraction - 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
28. com.openjiuwen.test.cases.component.questioner_component.TestQuestionerComponent002#testQuestionerComponent002
失败原因分类:
环境问题
具体失败原因:
同 #26 模式:Questioner 组件调用 LLM 失败。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #26
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
29. com.openjiuwen.test.cases.component.questioner_component.TestQuestionerComponent003#testQuestionerComponent003
失败原因分类:
环境问题
具体失败原因:
同 #26 模式:Questioner 组件调用 LLM 失败。
证据来源:
- 日志关键信息:
java.net.ConnectException: Failed to connect to /127.0.0.1:8088 - 代码定位: 同 #26
- 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
30. com.openjiuwen.test.cases.context_engine.processors.current_round_compressor.ContextCurrentRoundCompressor008Test#testContextCurrentRoundCompressor008
失败原因分类:
环境问题
具体失败原因:
测试在 @BeforeEach 阶段通过 ReactAgentBaseTest.requireMockLlmReachable 检查 8088 端口可达性,检查失败后直接抛出 IllegalStateException: Missing required mock service: 127.0.0.1:8088,未进入测试方法体。Mock LLM 服务未启动。
证据来源:
- 日志关键信息:
Missing required mock service: 127.0.0.1:8088 (start JiuwenTestJava/mock_service/mockllm/main.py before running tests) - 代码定位:
ReactAgentBaseTest.requireMockLlmReachable(ReactAgentBaseTest.java:47)→ContextCurrentRoundCompressor008Test.java:74 - 其他: 此用例有显式的 mock 服务前置检查,失败消息比其他用例更明确
修复建议:
确保 Mock LLM 服务启动。
其他建议:
这种显式前置检查模式值得推广——其他用例如果也加了 requireMockLlmReachable 检查,就不会产生冗长的 OkHttp 连接重试堆栈,失败消息更清晰。
31. com.openjiuwen.test.cases.context_engine.processors.dialogue_compressor.ContextDialogueCompressor007Test#testContextDialogueCompressor007
失败原因分类:
环境问题
具体失败原因:
同 #29 模式:requireMockLlmReachable 检查失败。
证据来源:
- 日志关键信息:
Missing required mock service: 127.0.0.1:8088 - 代码定位:
ReactAgentBaseTest.requireMockLlmReachable(ReactAgentBaseTest.java:47)→ContextDialogueCompressor007Test.java:75 - 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
同 #29 的建议。
32. com.openjiuwen.test.cases.context_engine.processors.round_level_compressor.ContextRoundLevelCompressor009Test#testContextRoundLevelCompressor009
失败原因分类:
环境问题
具体失败原因:
同 #29 模式:requireMockLlmReachable 检查失败。
证据来源:
- 日志关键信息:
Missing required mock service: 127.0.0.1:8088 - 代码定位:
ReactAgentBaseTest.requireMockLlmReachable(ReactAgentBaseTest.java:47)→ContextRoundLevelCompressor009Test.java:75 - 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
同 #29 的建议。
33. com.openjiuwen.test.cases.runnner.others.TestRunnerWorkflowManager001#testRunnerWorkflowManager001
失败原因分类:
环境问题
具体失败原因:
Workflow Manager 组件中 llm_invoke 组件调用 LLM 失败,ConnectException: Failed to connect to /127.0.0.1:8088。
证据来源:
- 日志关键信息:
component llm_invoke call failed, reason: component llm_invoke call failed, reason: Failed to connect to /127.0.0.1:8088 - 代码定位:
ErrorHelper.createWithDetails(ErrorHelper.java:186) - 其他: 无
修复建议:
确保 Mock LLM 服务启动。
其他建议:
无额外建议。
📎 完整根因分析(含证据来源、修复代码 before/after):analysis.md。
|
head_sha:
|
|
head_sha:
|
|
head_sha:
|
Paired: GitHub #124 ↔ GitCode !246
What type of PR is this?
/kind
Self-checklist:(请自检,在[ ]内打上x,我们将检视你的完成情况,否则会导致pr无法合入)