Skip to content

fix: parse single-line fenced LLM replies in paper-pilot client - #44

Merged
Anai-Guo merged 1 commit into
mainfrom
chore/auto-maint-2026-10-15
Oct 16, 2026
Merged

Anai-Guo merged 1 commit into
mainfrom
chore/auto-maint-2026-10-15

Conversation

@Anai-Guo

Copy link
Copy Markdown
Owner

自动维护改动

类型:维护(小 bug 修复 + 测试覆盖)
改动:PaperPilotClient._parse_llm_response 剥离 markdown 围栏时用 text.index("\n"),模型把整段 JSON 放在单行围栏里(或只回一个围栏标记)时会抛 ValueError;改为 find() 并在无换行时只去掉三个反引号,与 #20 对 parameter_optimizer 的修法一致。新增 tests/test_paper_pilot_client.py 15 用例:围栏四种变体(含修复前失败的单行围栏回归)、非 JSON 降级、MCP 结果解析与 500 字截断、LLM 回退的提问组装 / literature.paper_found 发射 / 路由异常兜底、search_for_protocol 的 MCP 优先 / 回退 / 事件序列、无 mcp 包时返回 None。该模块覆盖 54% → 83%。
测试:通过(本地全量 507 passed;回归用例在修复前 2 失败、修复后全过;ruff check + format 全过)
参考:无

本 PR 由每日维护任务生成,请人工 review 后再合并。

🤖 Generated with Claude Code

_parse_llm_response stripped the opening markdown fence with
text.index("\n"), which raises ValueError when the model returns the
whole JSON on one line (```{...}```) or a bare fence. Use find() and
fall back to dropping just the three backticks, mirroring the fix
already applied to parameter_optimizer. Add tests covering the fence
variants, non-JSON degradation, MCP result parsing, the LLM fallback
question/emit path and search_for_protocol dispatch (54% -> 83%).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Anai-Guo
Anai-Guo merged commit 2a52619 into main Oct 16, 2026
3 checks passed
@Anai-Guo
Anai-Guo deleted the chore/auto-maint-2026-10-15 branch October 16, 2026 10:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant