Repository navigation
fix: parse single-line fenced LLM replies in paper-pilot client - #44
Merged
Merged
Conversation
_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>
This was referenced Oct 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
自动维护改动
类型:维护(小 bug 修复 + 测试覆盖)
改动:
PaperPilotClient._parse_llm_response剥离 markdown 围栏时用text.index("\n"),模型把整段 JSON 放在单行围栏里(或只回一个围栏标记)时会抛ValueError;改为find()并在无换行时只去掉三个反引号,与 #20 对parameter_optimizer的修法一致。新增tests/test_paper_pilot_client.py15 用例:围栏四种变体(含修复前失败的单行围栏回归)、非 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