Repository navigation
feat: implement powermem langchain middleware - #1177
Closed
guojunyuan2004 wants to merge 1 commit into
Closed
guojunyuan2004 wants to merge 1 commit into
guojunyuan2004 wants to merge 1 commit into
Conversation
Wire PowerMem into LangChain v1 agents via three middleware hooks: before_agent retrieves memories for the latest user message, wrap_model_call injects them into the system prompt, after_agent writes the exchange back when save_interactions=True. Both sync and async paths are supported; retrieval/write-back are fail-open. Design notes worth keeping for future readers: - powermem_context is overwritten on every run (including None) so a checkpointer cannot leak a previous run's memory into the next. - An AsyncMemory in the sync hooks raises TypeError rather than silently doing nothing. - user_id comes only from the constructor; no global/implicit identity. Tests: 20 functions; the six names required by the scoring contract are present verbatim. See packages/powermem-langchain/ for details.
Member
LangChain Contract ScoreLangChain Contract Score ======================== score: 100.00 / 100 suites: 2 rule: A weighted capability receives credit only when it passes on every configured Python suite and all declared prerequisite capabilities also receive credit. Gate tests are reported but do not add points. Public import contract: PASS (gate) py311: passed py312: passed Retrieve memory before model call: PASS (35/35) py311: passed py312: passed Persist interaction after agent run: PASS (25/25) py311: passed py312: passed Disable interaction persistence: PASS (10/10) py311: passed py312: passed Fail-open on search error: PASS (15/15) py311: passed py312: passed Async memory injection: PASS (15/15) py311: passed py312: passed LangChain Contract ReportLangChain Contract Report ========================= score: 100.00 / 100 rule: A weighted capability receives credit only when it passes on every configured Python suite and all declared prerequisite capabilities also receive credit. Gate tests are reported but do not add points. Suite Summary ------------- py311: passed=25/25, failures=0, errors=0, skipped=0 py312: passed=25/25, failures=0, errors=0, skipped=0 Gate Checks ----------- Public import contract [gate] PASS - py311: passed - py312: passed Weighted Breakdown ------------------ Retrieve memory before model call [35/35] PASS - py311: passed - py312: passed Persist interaction after agent run [25/25] PASS - py311: passed - py312: passed Disable interaction persistence [10/10] PASS - py311: passed - py312: passed Fail-open on search error [15/15] PASS - py311: passed - py312: passed Async memory injection [15/15] PASS - py311: passed - py312: passed |
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.
Team
旅游凑一队
Summary
Implement
PowerMemMiddlewarefor the VLDB 2026 summer school Task 1: integrate PowerMem as long-term memory for LangChain v1 agents via the middleware API.Solution Description
Wire PowerMem into LangChain v1 agents via three middleware hooks:
before_agentretrieves memories for the latest user message,wrap_model_callinjects them into the system prompt, andafter_agentwrites the exchange back whensave_interactions=True. Both sync and async paths are supported; retrieval and write-back are fail-open.Design notes worth keeping for future readers:
powermem_contextis overwritten on every run (includingNone) so a checkpointer cannot leak a previous run's memory into the next.AsyncMemoryin the sync hooks raisesTypeErrorrather than silently doing nothing.user_idcomes only from the constructor; no global or implicit identity.Tests: 20 functions; the six names required by the scoring contract are present verbatim. See
packages/powermem-langchain/for details.