MCPcopy Create free account
hub / github.com/modelscope/ms-agent / add_single

Method add_single

ms_agent/memory/default_memory.py:209–272  ·  view source on GitHub ↗
(self,
                         messages: List[Message],
                         user_id: Optional[int] = None,
                         agent_id: Optional[int] = None,
                         run_id: Optional[int] = None,
                         memory_type: Optional[str] = None,
                         msg_id: Optional[int] = None)

Source from the content-addressed store, hash-verified

207 idx += 1
208
209 async def add_single(self,
210 messages: List[Message],
211 user_id: Optional[int] = None,
212 agent_id: Optional[int] = None,
213 run_id: Optional[int] = None,
214 memory_type: Optional[str] = None,
215 msg_id: Optional[int] = None) -> None:
216 messages_dict = []
217 for message in messages:
218 if isinstance(message, Message):
219 messages_dict.append(message.to_dict_clean())
220 else:
221 messages_dict.append(message)
222 async with self._lock:
223 if msg_id is None:
224 self.max_msg_id += 1
225 msg_id = self.max_msg_id
226 else:
227 self.max_msg_id = max(msg_id, self.max_msg_id)
228 self.cache_messages[msg_id] = messages, self._hash_block(messages)
229
230 try:
231 self.memory.add(
232 messages_dict,
233 user_id=user_id or self.user_id,
234 agent_id=agent_id or self.agent_id,
235 run_id=run_id or self.run_id,
236 memory_type=memory_type)
237 logger.info('Add memory success.')
238 except Exception as e:
239 logger.warning(f'Failed to add memory: {e}')
240
241 if self.history_mode == 'overwrite':
242 res = self.memory.get_all(
243 user_id=user_id or self.user_id,
244 agent_id=agent_id or self.agent_id,
245 run_id=run_id or self.run_id) # sorted
246 res = [(item['id'], item['memory']) for item in res['results']]
247 if len(res):
248 logger.info('All memory info:')
249 for item in res:
250 logger.info(item[1])
251 valids = []
252 unmatched = []
253 for id, memory in res:
254 matched = False
255 for item in self.memory_snapshot:
256 if id == item.memory_id:
257 if item.value == memory and item.valid:
258 matched = True
259 valids.append(id)
260 break
261 else:
262 if item.valid:
263 item.disable(msg_id)
264 if not matched:
265 unmatched.append((id, memory))
266 for item in self.memory_snapshot:

Callers 2

init_cache_messagesMethod · 0.95
addMethod · 0.95

Calls 6

_hash_blockMethod · 0.95
MemoryMappingClass · 0.85
to_dict_cleanMethod · 0.80
addMethod · 0.80
get_allMethod · 0.80
disableMethod · 0.80

Tested by

no test coverage detected