新增功能

This commit is contained in:
Your Name
2026-08-19 17:35:59 +08:00
parent f8c78739e7
commit 05050ff6f3
188 changed files with 18838 additions and 5337 deletions
+30 -2
View File
@@ -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))]