PMCoder把规划和记忆绑在一起,SWE-bench Verified上多解25个issue,换Claude或DeepSeek也有效,思路挺巧。
PMCoder是一种用于软件问题修复的LLM智能体,核心是将层次化阶段规划器与情景记忆双向耦合。在SWE-bench Verified基准上,它比匹配基线的设置平均多解决25个案例(+5.0个百分点)。在Verified-500上,Claude Haiku 4.5、DeepSeek-V4-Flash和OpenHands移植版均至少多解决14个案例(+2.8个百分点)。消融实验显示,规划与记忆联合使用优于单独使用任一组件,并显著减少重复失败动作和上下文耗尽。
Coupling Planning with Episodic Memory in LLM Agents for Software Issue Resolution
Resolving a real software issue with a large language model (LLM) agent is a long repair episode, often tens to hundreds of steps spanning exploration, hypothesis, implementation, and verification. Success depends on both the base model's local reasoning and the agent's ability to maintain an evolving plan and remember observations across phases. Existing repository-level agents typically strengthen planning or memory in isolation, leaving long trajectories vulnerable to stale evidence, repeated failed edits, and verification inferred from the agent's own claims instead of execution evidence. We present PMCoder, an issue-resolution agent that couples a hierarchical phase planner with episodic memory. The coupling is bidirectional: the current plan phase conditions memory retrieval, while memory-derived trajectory statistics inform stuck detection and replanning. When available, issue-reproduction verdicts ground verification progress in execution evidence rather than self-reported completion. On SWE-bench Verified, PMCoder resolves an average of $25$ more cases ($+5.0$pp) than a harness-matched baseline, with gains persisting even where the reproduction gate never fires. Further Verified-500 evaluations show the same positive direction across Claude Haiku 4.5, DeepSeek-V4-Flash, and an OpenHands port, with at least $14$ additional resolved cases ($+2.8$pp). Separately, evaluation on TerminalWorld's official sample suggests that the plan-memory substrate transfers beyond issue reports. Ablation and trajectory analyses show where the gains come from: coupling planning and memory outperforms either component alone and reduces repeated failed actions, empty-patch exits, and context-window exhaustion.