{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2609-12655","title":"LifeMem: Enabling Lifelong Experience Reuse for LLM Agents","arxiv_id":"2609.12655","date":"2026-09-11","proceeding":null,"authors":["Yuli Qiu","Yutong Li","Wei Su","Zeming Liu","Wanxiang Che","Heyan Huang","Haifeng Wang","Yuang Guo"],"abstract":"Large language model agents are expected to continuously adapt to new tasks and environments over their lifetime by reusing past experience. However, existing memory-based agents struggle to transfer reusable experience across environments and suffer from catastrophic forgetting as experience accumulated. To address these challenges, we propose LifeMem, a lifelong learning framework that enables agents to transfer knowledge across multiple environments. During learning, LifeMem clusters accumulated interaction trajectories based on underlying workflows to extract reusable skills. When solving a new task at inference time, the agent recalls relevant skills and trajectories to guide actions. To validate our method, we conduct experiments across 10 environments and over 13k tasks with 2k newly annotated interaction trajectories. Results show that LifeMem enables effective experience reuse in lifelong learning, achieving both reduced forgetting on learned tasks and superior cross-task transfer. Further analysis reveals that task streaming impacts learning, while consolidating structurally similar trajectories within memory boosts performance.","url_abs":"https://arxiv.org/abs/2609.12655","url_pdf":"https://arxiv.org/pdf/2609.12655","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2609.12655","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2609.12655"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/BITHLP/LifeMem","reach":{"status":"ok"}}],"summary":{"unverified":8},"by_repo_kind":{"found_in_text":{"samples":8,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":8,"samples":[{"code_sha256_prefix":"2f9cbe85e24f5c7f","entry":"add_with_limit","repo":"BITHLP/LifeMem","repo_kind":"found_in_text","path":"memory/build_memory.py","file_url":"https://github.com/BITHLP/LifeMem/blob/HEAD/memory/build_memory.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2f9cbe85e24f5c7f"}},{"code_sha256_prefix":"803998904a447861","entry":"format_generic_message","repo":"BITHLP/LifeMem","repo_kind":"found_in_text","path":"memory/insight_extraction.py","file_url":"https://github.com/BITHLP/LifeMem/blob/HEAD/memory/insight_extraction.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"803998904a447861"}},{"code_sha256_prefix":"91a27c69dd0873c0","entry":"get_api_call","repo":"BITHLP/LifeMem","repo_kind":"found_in_text","path":"api-bank/api_call_extraction.py","file_url":"https://github.com/BITHLP/LifeMem/blob/HEAD/api-bank/api_call_extraction.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"91a27c69dd0873c0"}},{"code_sha256_prefix":"831b9407e8cf0755","entry":"get_response","repo":"BITHLP/LifeMem","repo_kind":"found_in_text","path":"api-bank/utils.py","file_url":"https://github.com/BITHLP/LifeMem/blob/HEAD/api-bank/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"831b9407e8cf0755"}},{"code_sha256_prefix":"96bae7f246cedd92","entry":"openai_chat","repo":"BITHLP/LifeMem","repo_kind":"found_in_text","path":"api-bank/utils.py","file_url":"https://github.com/BITHLP/LifeMem/blob/HEAD/api-bank/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"96bae7f246cedd92"}},{"code_sha256_prefix":"efdd1fd458a816ce","entry":"parse_api_call","repo":"BITHLP/LifeMem","repo_kind":"found_in_text","path":"api-bank/api_call_extraction.py","file_url":"https://github.com/BITHLP/LifeMem/blob/HEAD/api-bank/api_call_extraction.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"efdd1fd458a816ce"}},{"code_sha256_prefix":"f0d12e20350a7570","entry":"parse_generic_trajectories","repo":"BITHLP/LifeMem","repo_kind":"found_in_text","path":"memory/insight_extraction.py","file_url":"https://github.com/BITHLP/LifeMem/blob/HEAD/memory/insight_extraction.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f0d12e20350a7570"}},{"code_sha256_prefix":"6daac5388180eba8","entry":"process","repo":"BITHLP/LifeMem","repo_kind":"found_in_text","path":"api-bank/utils.py","file_url":"https://github.com/BITHLP/LifeMem/blob/HEAD/api-bank/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6daac5388180eba8"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_backlog_21d_20260915.json"},"syntology_extracted_results":null}