测试场景
- 测试日期: 2026-06-14
- 环境:
AGENT_MODE=hybrid · LLM_STAGE_RESEARCH=true · LLM_STAGE_DEBATE=true
- 步骤:
- 启动 Streamlit,首次加载触发完整流水线
- 观察服务端日志中 LLM 阶段输出
- 在「LLM决策链」页查看阶段来源与 I/O 记录
发现的问题
首次 Streamlit 启动时,看多研究(bullish)阶段 LLM 调用失败:
WARNING | src.agents.llm.base | llm stage bullish failed: Unterminated string starting at: line 456 column 3 (char 6875)
- hybrid 模式自动回退到规则引擎,流水线不中断(容错正常)
- 但 LLM 研究阶段的价值降低,且 I/O 页可能记录截断/ malformed JSON
- 后续 CLI 复跑时 bullish 阶段成功(89s),说明问题具有间歇性
- 优先级: P1 — 影响 hybrid 模式核心能力
建议修复方案
-
增强 JSON 解析容错(src/agents/llm/base.py):
- 对
json.loads 失败尝试修复常见截断(补全括号、去除 trailing comma)
- 或使用
json_repair 等库做二次解析
-
流式响应完整性校验:
- 在
_stream_json_response 结束处检查 JSON 是否闭合
- 不完整则自动重试(最多 1–2 次,指数退避)
-
Prompt 约束:
- 在 system prompt 中强调「返回紧凑 JSON,避免过长字符串」
- 对 items 数组设置 max 条数限制
-
可观测性:
- 解析失败时将原始响应写入
llm_io 的 error 字段(便于排查)
- 在 UI 阶段来源 Banner 明确标注「LLM 失败 · 已回退规则」
-
验收标准:
- 连续 5 次流水线运行,bullish/bearish/debate 阶段 JSON 解析成功率 ≥ 95%
- 失败时 UI 与日志有明确回退原因
测试场景
AGENT_MODE=hybrid·LLM_STAGE_RESEARCH=true·LLM_STAGE_DEBATE=true发现的问题
首次 Streamlit 启动时,看多研究(bullish)阶段 LLM 调用失败:
建议修复方案
增强 JSON 解析容错(
src/agents/llm/base.py):json.loads失败尝试修复常见截断(补全括号、去除 trailing comma)json_repair等库做二次解析流式响应完整性校验:
_stream_json_response结束处检查 JSON 是否闭合Prompt 约束:
可观测性:
llm_io的 error 字段(便于排查)验收标准: