新增功能
This commit is contained in:
@@ -187,6 +187,24 @@ class ConversationStore:
|
||||
self.save()
|
||||
return True
|
||||
|
||||
def set_display_name(self, fp_hex: str, name: str) -> bool:
|
||||
"""Remember the WeCom nickname seen for this session, if it is new."""
|
||||
label = str(name or "").strip()
|
||||
key = str(fp_hex or "")
|
||||
if not key or not label:
|
||||
return False
|
||||
self._maybe_reload()
|
||||
with self._lock:
|
||||
entry = self._data.get(key)
|
||||
if not isinstance(entry, dict):
|
||||
return False
|
||||
if str(entry.get("display_name") or "").strip() == label:
|
||||
return False
|
||||
entry["display_name"] = label
|
||||
entry["updated"] = time.time()
|
||||
self.save()
|
||||
return True
|
||||
|
||||
def list_sessions(self, limit: int = 200) -> list:
|
||||
"""按最近更新排序,返回会话摘要列表。"""
|
||||
self._maybe_reload()
|
||||
@@ -196,11 +214,18 @@ class ConversationStore:
|
||||
continue
|
||||
hist = entry.get("history") or []
|
||||
preview = ""
|
||||
last_role = ""
|
||||
user_bits = []
|
||||
for m in reversed(hist):
|
||||
if not isinstance(m, dict):
|
||||
continue
|
||||
c = (m.get("content") or "").strip()
|
||||
if c:
|
||||
role = str(m.get("role") or "").lower()
|
||||
if c and not last_role:
|
||||
last_role = role
|
||||
preview = c.replace("\n", " ")[:80]
|
||||
break
|
||||
if c and role == "user" and len(user_bits) < 3:
|
||||
user_bits.append(c.replace("\n", " ")[:40])
|
||||
if not preview:
|
||||
lines = entry.get("last_lines") or []
|
||||
preview = " ".join(lines[-3:])[:80] if lines else ""
|
||||
@@ -209,6 +234,9 @@ class ConversationStore:
|
||||
"updated": entry.get("updated") or 0,
|
||||
"message_count": len(hist),
|
||||
"preview": preview,
|
||||
"display_name": str(entry.get("display_name") or "").strip(),
|
||||
"last_role": last_role,
|
||||
"memory_preview": ";".join(reversed(user_bits)),
|
||||
})
|
||||
items.sort(key=lambda x: x.get("updated") or 0, reverse=True)
|
||||
return items[: max(1, min(limit, 500))]
|
||||
|
||||
Reference in New Issue
Block a user