MCPcopy Create free account
hub / github.com/BAI-LAB/MemoryOS / add_session

Method add_session

memoryos-pypi/mid_term.py:101–177  ·  view source on GitHub ↗
(self, summary, details, summary_keywords=None)

Source from the content-addressed store, hash-verified

99 print(f"MidTermMemory: Evicted session {lfu_sid}.")
100
101 def add_session(self, summary, details, summary_keywords=None):
102 session_id = generate_id("session")
103 summary_vec = get_embedding(
104 summary,
105 model_name=self.embedding_model_name,
106 **self.embedding_model_kwargs
107 )
108 summary_vec = normalize_vector(summary_vec).tolist()
109 summary_keywords = summary_keywords if summary_keywords is not None else []
110
111 processed_details = []
112 for page_data in details:
113 page_id = page_data.get("page_id", generate_id("page"))
114
115 # 检查是否已有embedding,避免重复计算
116 if "page_embedding" in page_data and page_data["page_embedding"]:
117 print(f"MidTermMemory: Reusing existing embedding for page {page_id}")
118 inp_vec = page_data["page_embedding"]
119 # 确保embedding是normalized的
120 if isinstance(inp_vec, list):
121 inp_vec_np = np.array(inp_vec, dtype=np.float32)
122 if np.linalg.norm(inp_vec_np) > 1.1 or np.linalg.norm(inp_vec_np) < 0.9: # 检查是否需要重新normalize
123 inp_vec = normalize_vector(inp_vec_np).tolist()
124 else:
125 print(f"MidTermMemory: Computing new embedding for page {page_id}")
126 full_text = f"User: {page_data.get('user_input','')} Assistant: {page_data.get('agent_response','')}"
127 inp_vec = get_embedding(
128 full_text,
129 model_name=self.embedding_model_name,
130 **self.embedding_model_kwargs
131 )
132 inp_vec = normalize_vector(inp_vec).tolist()
133
134 # 使用已有keywords或设置为空(由multi-summary提供)
135 if "page_keywords" in page_data and page_data["page_keywords"]:
136 print(f"MidTermMemory: Using existing keywords for page {page_id}")
137 page_keywords = page_data["page_keywords"]
138 else:
139 print(f"MidTermMemory: Setting empty keywords for page {page_id} (will be filled by multi-summary)")
140 page_keywords = []
141
142 processed_page = {
143 **page_data, # Carry over existing fields like user_input, agent_response, timestamp
144 "page_id": page_id,
145 "page_embedding": inp_vec,
146 "page_keywords": page_keywords,
147 "preloaded": page_data.get("preloaded", False), # Preserve if passed
148 "analyzed": page_data.get("analyzed", False), # Preserve if passed
149 # pre_page, next_page, meta_info are handled by DynamicUpdater
150 }
151 processed_details.append(processed_page)
152
153 current_ts = get_timestamp()
154 session_obj = {
155 "id": session_id,
156 "summary": summary,
157 "summary_keywords": summary_keywords,
158 "summary_embedding": summary_vec,

Callers 1

Calls 7

evict_lfuMethod · 0.95
saveMethod · 0.95
generate_idFunction · 0.90
get_embeddingFunction · 0.90
normalize_vectorFunction · 0.90
get_timestampFunction · 0.90
compute_segment_heatFunction · 0.70

Tested by

no test coverage detected